Django 用户认证 用户 邮箱登录 邮箱注册 ORM or,and,not form.py FORM ModelForm Paginator 分页 HTMl JQuery 定位元素 ajax django切片 restfulapi 跨域 Ubantu Python Mysql Scrapy 爬虫 导出 Python读写 Pycharm 破解 session re sqlit3 生成式 其他 Prism 富文本 CSS Nginx 部署 请求头 抓包 协议 selenium Ubuntu 宝塔 AI Comfy-ui ollama dify open-webui Git docker
requests模块cookie信息自动追踪与管理
张建行 2019年5月4日 10:41 77 文章标签: Python Scrapy 爬虫 session 请求头 抓包 协议

requests模块cookie信息自动追踪与管理

requests这个库,如果直接利用get()或者post()等方法可以做到模拟网页的请求,但是每一次请求之间是没有关系的,相当于不同的会话也就是相当于浏览器打开了两个不同的页面

设想这样一个场景:第一次请求利用post()方法登录了某个网站,第二次想获取成功登录之后的个人信息,又用了一个get()方法去请求个人信息页面,实际上相当于打开了两个完全不相关的会话,这样并不能成功获取到个人信息

解决方案:维持同一个会话,也就是相当于使用同一个浏览器打开不同的页面,而不是每次都要重新设置cookie,这时候就有了session对象

请求 http://httpbin.org/cookie/set/num-bre/123456789

 import requests
 
 # 创建session对象
 session_obj = requests.Session()
 # 请求 http://httpbin.org/cookie/set/numbre/123456789   设置coolie信息名称是number,内容是123456789
 # http://httpbin.org/cookies 请求这个网址可以获取当前的cookies
 url = 'http://httpbin.org/cookies/set/numbre/123456789'
 response = requests.get(url)
 print(response.text)
 
 url = 'http://httpbin.org/cookies'
 response = requests.get(url)
 print(response.text)
 
 #  ==================
 url = 'http://httpbin.org/cookies/set/numbre/123456789'
 response = session_obj.get(url)
 print(response.text)
 
 url = 'http://httpbin.org/cookies'
 response = session_obj.get(url)
 print(response.text)