cookie在很多情况下是用来对应的身份验证。比如说访问某些页面(登陆页面)时,会通过Set-Cookie设置Cookie值到客户端,以便下一次访问自动提交Cookie进行身份验证。

在python中有session类可以提供类似模拟:
通过调用request来提供session,再用GET或POST来执行操作。

以百度为例,演示如下:

import requests

url = "https://www.baidu.com"
s = requests.session()

r = s.get(url) //使用r进行获取
print(r.cookies)  //输出cookie
print(r.request.headers)  //输出请求报名头

返回结果如下:

<RequestsCookieJar[<Cookie BDORZ=27315 for .baidu.com/>]>
{'Connection': 'keep-alive', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'User-Agent': 'python-requests/2.22.0'}

可以看见在请求报名头中没有出现cookie的值,这是由于我们在请求之后百度会返回对应的cookie值,BDORZ=27315。在下次使用当前会话进行访问才会携带cookie值

import requests

url = "https://www.baidu.com"
s = requests.session()

r = s.get(url)
print(r.cookies)
print(r.request.headers)

r1 = s.get(url)
print(r1.request.headers)

结果:

<RequestsCookieJar[<Cookie BDORZ=27315 for .baidu.com/>]>
{'Connection': 'keep-alive', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'User-Agent': 'python-requests/2.22.0'}
{'Connection': 'keep-alive', 'Cookie': 'BDORZ=27315', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'User-Agent': 'python-requests/2.22.0'}

可以发现报名头有了cookie值。