热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python学习笔记(3)cookiesession

一、cookie&session1、cookie:cookie就是由服务器发送给客户端的特殊信息,而这些信息以文本的方式存放在客户端,然后

一、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


推荐阅读
  • 利用Jenkins与SonarQube集成实现高效代码质量检测与优化
    本文探讨了通过在 Jenkins 多分支流水线中集成 SonarQube,实现高效且自动化的代码质量检测与优化方法。该方案不仅提高了开发团队的代码审查效率,还确保了软件项目的持续高质量交付。 ... [详细]
  • Python 实战:异步爬虫(协程技术)与分布式爬虫(多进程应用)深入解析
    本文将深入探讨 Python 异步爬虫和分布式爬虫的技术细节,重点介绍协程技术和多进程应用在爬虫开发中的实际应用。通过对比多进程和协程的工作原理,帮助读者理解两者在性能和资源利用上的差异,从而在实际项目中做出更合适的选择。文章还将结合具体案例,展示如何高效地实现异步和分布式爬虫,以提升数据抓取的效率和稳定性。 ... [详细]
  • 2016-2017学年《网络安全实战》第三次作业
    2016-2017学年《网络安全实战》第三次作业总结了教材中关于网络信息收集技术的内容。本章主要探讨了网络踩点、网络扫描和网络查点三个关键步骤。其中,网络踩点旨在通过公开渠道收集目标信息,为后续的安全测试奠定基础,而不涉及实际的入侵行为。 ... [详细]
  • Sanic 是一个类似于 Flask 的 Python 3.5 Web 服务器,以其出色的写入速度而著称。与 Flask 不同,Sanic 支持异步请求处理,这使得它在处理高并发请求时表现更加出色。通过利用 Python 的异步特性,Sanic 能够显著提高应用程序的性能和响应能力,适用于构建高性能的异步 Web 应用。 ... [详细]
  • Python爬虫入门:深入解析HTTP协议与Requests库的应用
    Python爬虫入门:深入解析HTTP协议与Requests库的应用 ... [详细]
  • 本课程详细介绍了如何使用Python Flask框架从零开始构建鱼书应用,涵盖高级编程技巧和实战项目。通过视频教学,学员将学习到Flask的高效用法,包括数据库事务处理和书籍交易模型的实现。特别感谢AI资源网提供的课程下载支持。 ... [详细]
  • 在处理大规模并发请求时,传统的多线程或多进程模型往往无法有效解决性能瓶颈问题。尽管它们在处理小规模任务时能提升效率,但在高并发场景下,系统资源的过度消耗和上下文切换的开销会显著降低整体性能。相比之下,Python 的 `asyncio` 模块通过协程提供了一种轻量级且高效的并发解决方案。本文将深入解析 `asyncio` 模块的原理及其在实际应用中的优化技巧,帮助开发者更好地利用协程技术提升程序性能。 ... [详细]
  • HTTP协议作为互联网通信的基础,其重要性不言而喻。相比JDK自带的URLConnection,HttpClient不仅提升了易用性和灵活性,还在性能、稳定性和安全性方面进行了显著优化。本文将深入解析HttpClient的使用方法与技巧,帮助开发者更好地掌握这一强大的工具。 ... [详细]
  • 在Laravel中实现PHP对JSON数据的发布与处理 ... [详细]
  • 深入浅出解析HTTP协议的核心功能与应用
    前言——协议是指预先设定的通信规则,确保双方能够按照既定标准进行有效沟通,从而实现准确的信息交换。例如,驯兽师通过拍手使动物坐下,这实际上是一种预设的协议。本文将详细探讨HTTP协议的核心功能及其广泛应用,解析其在现代网络通信中的重要作用。 ... [详细]
  • Cookie是一种小型数据文件,由Web服务器生成并存储在用户的浏览器中。当用户再次访问同一服务器时,这些数据可以被重新读取,为用户提供个性化的体验。Cookie在软件测试中具有重要作用,能够帮助测试人员验证会话管理、用户偏好设置等功能的正确性和安全性。通过深入解析Cookie的工作原理及其在不同场景下的应用,本文旨在为软件测试人员提供全面的技术指导。 ... [详细]
  • 在CentOS 7上部署WebRTC网关Janus
    在CentOS 7上部署WebRTC网关Janus ... [详细]
  • 为了向用户提供虚拟应用程序,通常会在基础架构中部署StoreFront或Web Interface。为了确保安全的远程访问,通常需要在DMZ中配置Secure Gateway或Access Gateway。本文详细对比了这两种界面工具的功能特性,包括用户管理、安全性、性能优化等方面,为企业选择合适的解决方案提供了全面的参考。 ... [详细]
  • npm 发布 WhalMakeLink 包:链接管理与优化的新选择
    WhalMakeLink 是一个强大的 npm 工具,专为项目管理和优化而设计。它能够自动在项目的 README 文件中生成当前工程目录下所有子项目的链接地址,极大提升了开发效率和文档维护的便捷性。通过简单的 `npm init` 命令即可快速启动和配置该工具,适用于各种复杂项目结构。 示例演示了其基本用法和功能。 ... [详细]
  • 优化Spring Cloud Zuul与Nginx域名转发问题的解决方案_java
    本文深入探讨了Spring Cloud Zuul与Nginx在域名转发过程中可能遇到的问题,并提供了一系列优化解决方案。通过实例分析和代码示例,详细阐述了如何有效解决这些常见问题,提升系统的稳定性和性能。希望对开发者在实际项目中遇到类似问题时有所启发和帮助。 ... [详细]
author-avatar
zhaoxiao2012_549
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有