5.Cookies
一、Cookies基础:
cookie={u'domain': u'.cnblogs.com',
u'name': u'.CNBlogsCookie',
u'value': u'xxxx',
u'expiry': 1554959887,
u'path': u'/',
u'httpOnly': True,
u'secure': False}
1.cookies一般由浏览器保存到客户端
2.cookies存储一般都是加密的
3.cookies组成:name,value,expire(过期时间)。 抓包时,一般只能抓到name和value
4.保存在客户端本地的cookies内容,时间,一般由服务器或开发决定, 所以HTTP协议中通过服务器返回的响应报文中,有一个Set-Cookies域来指示浏览器或者其他客户端,在本地保存cookies信息
5.cookie是放到头部的
6.发送请求的时候,请求头中的cookies, 如:cookies:aaa=1; bbb=2
二、Cookie获取:
1. 从返回的url中获取Cookie:
1)使用正则表达式获取字符串,放在请求头中;请求时传给headers
2)通过正则表达式获取,再用分割的方法,分割字符串,添加到cookies中(字典格式);请求时传给cookies
2. 从返回的头部获取Cookie:
从r.headers中,用key值获取cookie,然后参考第一点中的2个说明;可以传给headers/cookies
一般headers的cookie也可以用r.cookies获取cookie,返回的时Jar包格式。
Jar包格式的cookie, 可以通过dict() 转成字典格式; 也可以直接传给cookies
3. 从返回的body中获取Cookie, 通过r.cookies获取(Jar格式)或者通过正则表达式获取
其他:
1.重定向302, 禁止重定向 allow_redirects = False
2.print(r.history) #请求的历史记录,返回对象
print(r.history[0].url) #获取第一个对象的url
三、请求时传cookies:
1.cookies可以放在头部,传字符串(多个的时候,如:name1=value1; name2=value2)
h = {"Cookie": "name1=value1; name2=value2"}
r = requests.post(url, headers=h)
2.cookies可以单独传cookies=xxx,传 字典格式/Jar包格式
cook = {
"name1": "value1",
"name2": "value2"
}
r = requests.post(url, cookies=cook)
四、实例:禅道登录,获取cookie,访问登录后的页面
1.发送登录的请求,返回set-cookie;
2.获取cookies:print(r.cookies) Jar格式的cookies; 可以转换成字典,dict(r.cookies)
注:Jar格式的cookies,在请求时,可以直接传给cookies
3.请求时带上cookies



浙公网安备 33010602011771号