一、cookie & session

  1、cookie:

    cookie 就是由服务器发送给客户端的特殊信息,而这些信息以文本的方式存放在客户端,然后客户端每次向服务器发送请求都会带上这些特殊信息。让服务器来识别你的计算机。例如:你访问某些网站的时候,一些网站登录界面问是否保存密码,如果你选择保存后再登录,那么下次访问网站的时候就不许重复登录动作了,这就是Cookie实现的。

  cookie缺点:

    ① cookie数量和长度限制,每个domain最多只能有20条cookie,并且每个cookie长度不能超过4k

    ② 安全性问题,如果cookie被人拦截,那个人就能拿到session信息

    ③ 有些状态无法保存在客户端

    虽然cookie有这些缺点,但是cookie能够很好的做身份识别。

  2、session:

    session称为“会话控制”,session对象存储特定用户会话所需的属性及配置信息。当用户在Web页跳转时,存储在session对象中的变量不会丢失。

    session和cookie区别:

      ① cookie数据存储在客户的浏览器上,session数据放在服务器上

      ② cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session

      ③ session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie

      ④ 单个cookie保存的数据不能超过4k,很多浏览器都限制一个站点最多保存20个cookie

      ⑤ 登录信息等重要信息存放为session,某些需要保留的信息放在cookie

二、手动使用cookie登录

  比较傻的方法:直接复制cookie,手动放入请求头

 1 from urllib import request
 2 if __name__ =="__main__":
 3     # 模拟登录人人个人主页
 4     url = "http://www.renren.com/967981984/profile"
 5     headers={
 6         "cookie":"anonymid=jlxrqipq-yd1b41; depovince=BJ; _r01_=1; JSESSIONID=abcrdbDitjgodcWbI_kxw; ick_login=666ef91c-38c0-4863-b69f-bd9b48f23b6a; t=ab090cc8a1b9e5a93991f467cf8f3eab4; societyguester=ab090cc8a1b9e5a93991f467cf8f3eab4; id=967981984; xnsid=3505b17e; jebecookies=e7f4d1cc-1fd5-4e3d-82e2-57fc6f652835|||||; ver=7.0; loginfrom=null; wp_fold=0; jebe_key=7da3f557-b4af-410d-b7c8-07ef5c61cd3a%7C873bc0529825e88a727db5146c0adb40%7C1536708771061%7C1"
 7     }
 8     req = request.Request(url, headers = headers)
 9     res = request.urlopen(req)
10     html = res.read().decode()
11     # 把页面保存到本地
12     with open("res.html", "w") as f:
13         f.write(html)

三、使用cookie自动登录

  http模块中有一些cookie模块,通过他们我们可以自动使用cookie

  1、CookieJar

    - 管理存储cookie,向传出的http请求添加cookie

    - cookie存储在内存中,CookJar实例回收后cookie将消失

  2、FileCookieJar(filename, delayload = None, policy = None)

    - 使用文件管理cookie

    - filename是保存的文件的名字

  3、MozillaCookieJar(filename, delayload = None, policy = None)

    - 创建与mocilla(火狐)浏览器cookie.txt兼容的FileCookieJar

  4、LwpCookieJar(filename, delayload = None, policy = None)

    - 创建与LwpCookieJar标准兼容的Set-Cookie3格式的FileCookieJar

  关系 CookieJar -> FileCookieJar -> MozillaCookieJar -> LwpCookieJar

  利用cookieJar访问人人

  代码实现流程:  

    1、打开登录页面自动通过账号和密码

    2、自动提取反馈回来的cookie

    3、利用提取的cookie登录隐私页面

 1 from urllib import request,parse
 2 from http import cookiejar
 3 # 创建cookiejar实例
 4 cookie = cookiejar.Cookiejar()
 5 # 生成cookiejar管理器
 6 cookie_handler = request.HTTPCookieProcessor(cookie)
 7 # 创建http管理器
 8 http_handler = request.HTTPHandler()
 9 # 创建https管理器
10 https_handler = request.HTTPSHandler()
11 # 创建请求管理器
12 opener = request.build_opener(http_handler, https_handler, cookie_handler)
13
14 # 登录函数
15 def login():
16     '''
17     负责初次登录
18     需要输入用户名、密码来获取登录cookie的凭证
19     '''
20     # 通过抓包获取的登录页面
21     url = "http://www.renren.com/PLogin.do"
22     # email 是登录账号   password是登录密码
23     data = {
24          "email":"13119144223",
25          "password":"123456"
26     }
27     data = parse.urlencode(data)
28     req = request.Request(url, data = data.encode())
29     rsq = opener.open(req)
30 def getHomePage():
31     url = "http://www.renren.com/967981984/profile"
32     # 如果已经执行了Login函数,则opener自动包含相应的cookie值
33     rsp = opener.open(url)
34     html = rsp.read().decode()
35     with open("rsp.html", "w") as f:
36           f.write(html)
37 if __name__ =='__main__':
38     login()
39     getHomePage()

四、cookie属性

  使用代码查看cookie属性

from urllib import request,parse
from http import cookiejar
cookie = cookiejar.CookieJar()
cookie_handler = request.HTTPCookieProcessor(cookie)
http_handler = request.HTTPHandler()
https_handler = request.HTTPSHandler()
opener = request.build_opener(http_handler, https_handler,  cookie_handler)def login():url = "http://www.renren.com/PLogin.do"data = {"email":"13119144223""password":"123456"}data = parse.urlencode(data)req = request.Request(url, data= data.encode())rsp = opner.open(req)if __name__ == "__main__":login()print(cookie)for item in cookie:print(item)

执行结果:

  cookie属性

    - name:名称

    - value:值

    - domain:可以访问此cookie域名

    - path:可以访问cookie的页面路径

    - expire:过期时间

    - size:大小

    - http:字段

四、文件保存FileCookieJar

 1 from urllib import request, parse
 2 from http import cookiejar
 3 #创建cookie文件
 4 filename = "cookie.txt"
 5 # 创建MOzillacookiejar实例
 6 cookie = cookiejar.MozillaCookieJar(filename)
 7 # 生成cookiejar管理器
 8 cookie_handler = request.HTTPCookieProcessor(cookie)
 9 # http管理器
10 http_handler = request.HTTPHandler()
11 # https管理器
12 https_handler = request.HTTPSHandler()
13 # opener管理器
14 opener = request.bulid_opener(http_handler, https_landler, cookie_handler)
15
16 def login():
17     url = "http://www.renren.com/PLogin.do"
18     data = {
19         "email": "13119144223",
20         "password": "123456"
21     }
22     data = parse.urlencode(data)
23     req = request.Request(url, data = data.encode())
24     res = opener.open(req)
25     cookie.save(ignore_discard=True, ignore_expires=True)
26 if __name__ =='__main__':
27     login()

  第27行可以直接cookie.save()不带参数

  ignore_discard=True  :将要丢弃cookie的也保存

  ignore_expires=True : 如果文件中的cookie已过期,继续保存

  

转载于:https://www.cnblogs.com/MoonlightMaleGod/p/9638508.html

python学习笔记(3)---cookie session相关推荐

  1. python学习笔记目录

    人生苦短,我学python学习笔记目录: week1 python入门week2 python基础week3 python进阶week4 python模块week5 python高阶week6 数据结 ...

  2. Python学习笔记:Day 10 用户注册和登陆

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  3. python学习笔记_week22

    python学习笔记_week22 note 知识点概要- Session- CSRF- Model操作- Form验证(ModelForm)- 中间件- 缓存- 信号 内容详细: 1. Sessio ...

  4. Python学习笔记:Day 6 配置文件

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  5. Python学习笔记:数据库2

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  6. Python学习笔记:常用第三方模块(1)

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  7. Python学习笔记:常用内建模块2:collections

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  8. Python学习笔记--exe文件打包与UI界面设计

    exe文件打包与UI界面设计 前言 一.基于tkinter实现的UI设计 1.1 库的选择及思路 1.2 定位方法的选用 1.3 Frame控件 1.4 变量设置 1.5 批量设置 1.6 Text文 ...

  9. Python 学习笔记——Code with mosh课程

    Python 学习笔记--Code with mash II- Python Basics 1- Variables 2- Dynamic Typing 3- Type Annotation(注释) ...

  10. [python教程入门学习]python学习笔记(CMD执行文件并传入参数)

    本文章向大家介绍python学习笔记(CMD执行文件并传入参数),主要包括python学习笔记(CMD执行文件并传入参数)使用实例.应用技巧.基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋 ...

最新文章

  1. 高能预警!各路大神正火速奔赴8月WOT2016 移动互联网技术峰会
  2. Qt自动填写表单并点击按钮,包括调用js方法
  3. websocketd 实现浏览器查看服务器实时日志
  4. 树莓派c语言访问mariadb,树莓派之MariaDB
  5. Eclipse保存验证JS缓慢
  6. 正则匹配没有闭合标签_RegExRX for Mac(多功能正则表达式开发工具)
  7. 《去哪网编程题》表达式合法判断
  8. hibernate 三种状态的转换
  9. Spring管理的交易说明-第2部分(JPA)
  10. uni-app之新建项目无模板选择以及点击创建后一直卡住不动
  11. keycloak mysql_keycloak搭配mysql
  12. 生物技术制药课程文献调研报告撰写说明
  13. Apache 2 移植到Arm开发板
  14. DELPHI利用WMI获取主板参数
  15. 微信开发者工具及其文档
  16. 将图片转换成url链接
  17. 彻底搞懂 python 中文乱码问题
  18. 常用开关稳压电源(LM2596、MC3406)
  19. python爬取新浪微博大V的所有微博内容
  20. linux使用及shell常用命令技巧

热门文章

  1. 【Hoxton.SR1版本】Spring Cloud Hystrix断路器
  2. 生产者-消费者模型之集合ArrayBlockingQueue源码解读
  3. 容器化之路:谁偷走了我的构建时间
  4. 澳门中区停电2小时影响396户 1人困电梯后获救
  5. windows——JDK下载与安装及环境变量配置
  6. Open***服务器端配置文件server.conf的说明
  7. MyBatis 传入参数之parameterType
  8. 《Adobe Audition CC经典教程》——1.5 使用外部连接器
  9. phpstudy配置ssl
  10. 所有浏览器的 CSS selectors 兼容性