python3 requests库保持连接cookie

requests库保持连接cookie

requests库的使用方式

  • requests库发起网络请求的方式:
1
2
3
4
5
6
7
8
9
import requests

url = "http://域名"
header = {key:value}
body = {body}
# 发起get请求
response = requests.get(url,header)
# 发起post请求
response = requests.post(url,header,body)

问题简述

  • 在使用requests库发起网络请求时如果请求头中要求携带请求的cookie,那么一般的写法如下:
1
header = {'cookie':cookie}

如上方式将cookie加进请求头中,但是当请求的资源返回302,也就是发生重定向时跳转的页面时无法获取我们添加的cookie的,从而导致跳转后的请求过期,如果是登陆系统那么则会自动登出账号,虽然我们发起登陆请求时确实通过了服务器验证,但是由于跳转之后没有cookie那么服务端会认为此次请求已经过期。

解决方案

  • 想让重定向请求携带上一次请求的cookie则应如下修改代码
1
2
3
4
5
6
7
8
9
import requests

url = url
header = {key:value}
body = {key:value}
cookie = {'cookie':cookie}

# 发起post请求通过服务器验证
response = requests.post(url,header,body,cookie=cookie)

如上代码将cookie单独构建并添加进方法内,这样重定向后的请求会获取我们登陆时的cookie
保证重定向后的请求不会失效。