cookie模拟登陆:

import tornado.web

class IndexHandler(tornado.web.RequestHandler):
def get(self):
#self.write("Hello world")
# 展示所有的cookie
# print(self.cookies)
# print(self.get_cookie('k1'))
# self.set_cookie('k1','999')#还有 过期时间 适用路径
# self.render("index.html")
if self.get_argument('u',None) in ['asd','zxc']:
self.set_secure_cookie('user',self.get_argument('u'))
else:
self.write('请登录') class ManagerHandler(tornado.web.RequestHandler):
def get(self, *args, **kwargs):
#默认self.get_secure_cookie('user',None)获取的数据是bytes类型
if str(self.get_secure_cookie('user',None),encoding="utf8") in ['asd','zxc']:
self.write("欢迎登录:"+str(self.get_secure_cookie('user'),encoding="utf8"))
else:
self.redirect('/index') settings ={
'template_path':'views',
'static_path':'statics',
'cookie_secret':'dafawafawfaw',
} application = tornado.web.Application([
(r"/index",IndexHandler),
(r"/manager",ManagerHandler),
],**settings) if __name__=="__main__":
application.listen(8080)
tornado.ioloop.IOLoop.instance().start()

session原理模拟(放在内存),更多是放在Redis,文件,数据库中

import tornado.web

#放在内存 redis  文件  数据库
container={} class IndexHandler(tornado.web.RequestHandler):
def get(self):
if self.get_argument('u',None) in ['asd','zxc']:
import hashlib
import time
obj = hashlib.md5()
obj.update(bytes(str(time.time()),encoding="utf8"))
random_str = obj.hexdigest()
#这一段随机字符串需要传入到客户端cookie中,以便用户到服务端对应
container[random_str]={}
container[random_str]['k1']=123
container[random_str]['k2']=self.get_argument('u')+"parents"
container[random_str]['is_login']=True self.set_cookie('py_session',random_str)
else:
self.write("请登录") class ManagerHandler(tornado.web.RequestHandler):
def get(self, *args, **kwargs):
random_str = self.get_cookie('py_session', None)
if random_str:
if container.get(random_str,None):
if container[random_str]['is_login']: # 或者container.get(random_str,None)
self.write("欢迎登录" + container[random_str]['k2'])
return;
self.redirect("/index") settings ={
'template_path':'views',
'static_path':'statics',
'cookie_secret':'dafawafawfaw',
} application = tornado.web.Application([
(r"/index",IndexHandler),
(r"/manager",ManagerHandler),
],**settings) if __name__=="__main__":
application.listen(8080)
tornado.ioloop.IOLoop.instance().start()

python---cookie模拟登陆和模拟session原理的更多相关文章

  1. 模拟登陆并爬取Github

    因为崔前辈给出的代码运行有误,略作修改和简化了. 书上例题,不做介绍. import requests from lxml import etree class Login(object): def ...

  2. 模拟登陆CSDN——就是这么简单

    工具介绍 本篇文章主要是解说怎样模拟登陆CSDN.使用的工具是HttpClient+Jsoup 当中HttpClient主要是负责发送请求,而Jsoup主要是解析HTML 你可能对HttpClient ...

  3. 【转】详解抓取网站,模拟登陆,抓取动态网页的原理和实现(Python,C#等)

    转自:http://www.crifan.com/files/doc/docbook/web_scrape_emulate_login/release/html/web_scrape_emulate_ ...

  4. python 模拟登陆,请求包含cookie信息

    需求: 1.通过GET方法,访问URL地址一,传入cookie参数 2.根据地址一返回的uuid,通过POST方法,传入cooki参数 实现思路: 1.理解http的GET和POST差别 (网上有很多 ...

  5. python模拟登陆之下载

    好长时间没有更新博客了,哈哈. 今天公司给了这么一个需求,现在我们需要去淘宝获取上一天的订单号,然后再根据订单号去另一个接口去获取订单详情,然后再给我展示到web! 中间涉及到的技术点有: 模拟登陆 ...

  6. python爬虫 模拟登陆校园网-初级

    最近跟同学学习爬虫的时候看到网上有个帖子,好像是山大校园网不稳定,用py做了个模拟登陆很有趣,于是我走上了一条不归路..... 先上一张校园网截图 首先弄清一下模拟登陆的原理: 1:服务器判定浏览器登 ...

  7. Python实现网站模拟登陆

    一.实验简介 1.1 基本介绍 本实验中我们将通过分析登陆流程并使用 Python 实现模拟登陆到一个实验提供的网站,在实验过程中将学习并实践 Python 的网络编程,Python 实现模拟登陆的方 ...

  8. Python模拟登陆万能法-微博|知乎

    Python模拟登陆让不少人伤透脑筋,今天奉上一种万能登陆方法.你无须精通HTML,甚至也无须精通Python,但却能让你成功的进行模拟登陆.本文讲的是登陆所有网站的一种方法,并不局限于微博与知乎,仅 ...

  9. 爬虫之 cookie , 验证码,模拟登陆,线程

    需求文档的定制 糗事百科的段子内容和作者(xpath的管道符)名称进行爬取,然后存储到mysql中or文本 http://sc.chinaz.com/jianli/free.html爬取简历模板 HT ...

随机推荐

  1. 分布式版本控制系统Git的安装与使用(作业2)

    (本次作业要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2103) 分布式版本控制系统Git的安装与使用 一.安装Git b ...

  2. Failed while installing JAX-RS (REST Web Services) 1.1. org.osgi.service.prefs.BackingStoreException: Resource '/.settings' does not exist.

    https://issues.jboss.org/browse/JBIDE-10039?_sscc=t https://stackoverflow.com/questions/16836832/fai ...

  3. 一种快速统计SQL Server每个表行数的方法

    转载自:http://www.cnblogs.com/kenyang/archive/2013/04/09/3011447.html 我们都知道用聚合函数count()可以统计表的行数.如果需要统计数 ...

  4. Docker for windows 入门三(PowerShell命令使用)

  5. Windows下面dir 总是输入成ls的一个解决方法

    转帖:http://blog.csdn.net/venusic/article/details/50543058 新建一个ls.bat文件 输入 @echo off dir 然后放到环境变量存在的一个 ...

  6. git 查看远程分支最后一次提交时间

    背景 因为工程创建时间很长了,项目又特别多,导致代码库中远程分支有100多.想要清理一下远程分支,但又不能盲目的删除,需要一定的参考信息. 可以通过代码最后提交时间来进行判断,但是100多个分支,一个 ...

  7. 《Effective C#》快速笔记(一)- C# 语言习惯

    目录 一.使用属性而不是可访问的数据成员 二.使用运行时常量(readonly)而不是编译时常量(const) 三.推荐使用 is 或 as 操作符而不是强制类型转换 四.使用 Conditional ...

  8. 软件工程_1st weeks

    本周为软件工程课的第一周,本周主要完成了三个工作:了解了github并使用.拜读了<构建之法>并开通了博客以及完成了四则运算的代码实现. 对于第一项工作github的安装和使用,花费了5个 ...

  9. python使用原始套接字 解析原始ip头数据

    使用底层套接字解码底层流量,是这次做的重点工作. 首先来捕获第一个包 # coding:utf-8import socket # 监听的主机IP host = "192.168.1.100& ...

  10. Python中print/format字符串格式化实例

    Python 字符串格式化使用 "字符 %格式1 %格式2 字符"%(变量1,变量2),%格式表示接受变量的类型.简单的使用例子如下 # 例:字符串格式化Name = '17jo' ...