requests.get(url, cookies)
HTTP无状态
是指协议对于交互性场景没有记忆能力
HTTP无状态的例子
点击一个纯html网页多次,服务器会不会认为是同一人访问多次,还是认为是不同的人来访问
登录一个购物网站,然后选择商品到购物车,登录成功以后,服务器就忘记了这个用户,选择商品到购物车时,服务器不知道是谁在选择商品,实际开发中,会通过很多方法来解决HTTP无状态的问题,就是会话保持问题
cookie的含义
cookie有时也用其复数形式cookies
类型为“小型文本文件”,是某些网站为了辨别用户身份,进行会话跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息
win10中的cookies位置(每人电脑不同,系统不同,存放位置也不同)
IE浏览器:%APPDATA%\Microsoft\Windows\Cookies\ 目录中的xxx.txt文件 (IE浏览器分开存放的)。
火狐浏览器:%APPDATA%\Mozilla\Firefox\Profiles\ 目录中的xxx.default目录,名为cookies.sqlite的文件。
谷歌浏览器:%LOCALAPPDATA%\Google\Chrome\User Data\Default\ 目录中,名为Cookies的文件。
cookie是解决HTTP无状态问题的一种方法
cookie的使用机制
cookie的生成
服务器通过在HTTP 的响应头中附加一些信息,提示浏览器生成相应的 cookie
纯粹的客户端脚本如 JavaScript 或者 VBScript也可以生成 cookie
在响应头中,一般使用Set-Cookie来存储服务器发来的cookies
cookie的使用
浏览器按照一定的原则把需要的cookie附在请求资源的 HTTP 请求头上自动发送给服务器
在请求头中,一般使用Cookie存储发送给服务器的cookies,以保持会话
抓取Cookies
接口需求
目的:使用CHarles手动抓包,查看接收和发送的cookies
接口地址:http://192.168.175.128:8000/login_action/
接口说明:登录
方法:post
参数:username,password
response.cookies
requests响应对象的cookies属性中存储着cookies,
获取响应中的cookies,cookies实际上在响应头中,如果响应头中没有cookie,则r.cookies为空,需要设置post方法的allow_redirects=False,
如果接口存在自动重定向,则响应头中的cookies为空,或者说接口跳转后cookies就不存在了,r.cookies是RequestsCookieJar对象,
可直接当做字典使用,也可使用dict(r.cookies)直接输出易读的字典
## 查看响应中的cookies
"""
查看响应中的cookies
接口需求
接口地址:http://192.168.139.137:8000/login_action/
接口说明:登录接口
方法:post
参数:username,password
"""
import requests
url = 'http://192.168.139.137:8000/login_action/'
data = {'username':'admin','password':'admin123456',}
r = requests.post(url,data,allow_redirects=False)
print(r.cookies)