爬虫之requests模块在headers参数中携带cookie发送请求
网站经常利用请求头中的Cookie字段来做用户访问状态的保持,那么我们可以在headers参数中添加Cookie,模拟普通用户的请求。我们以github登陆为例:
1.1 github登陆抓包分析- 打开浏览器,右键-检查,点击Net work,勾选Preserve log
- 访问github登陆的url地址
https://github.com/login
- 输入账号密码点击登陆后,访问一个需要登陆后才能获取正确内容的url,比如点击右上角的Your profile访问
https://github.com/USER_NAME
- 确定url之后,再确定发送该请求所需要的请求头信息中的User-Agent和Cookie
- 从浏览器中复制User-Agent和Cookie
- 浏览器中的请求头字段和值与headers参数中必须一致
- headers请求参数字典中的Cookie键对应的值是字符串
import requests
url = 'https://github.com/USER_NAME'
# 构造请求头字典
headers = {
# 从浏览器中复制过来的User-Agent
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36',
# 从浏览器中复制过来的Cookie
'Cookie': 'xxx这里是复制过来的cookie字符串'
}
# 请求头参数字典中携带cookie字符串
resp = requests.get(url, headers=headers)
print(resp.text)
3.3.3 运行代码验证结果
在打印的输出结果中搜索title,html中的标题文本内容如果是你的github账号,则成功利用headers参数携带cookie,获取登陆后才能访问的页面
示例代码展示(没有cookies):
import requests
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36',
}
url = 'https://github.com/写自己的GitHub名称'
response = requests.get(url, headers=headers)
print(response.content.decode())
运行效果:
示例代码展示(有cookies):
import requests
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36',
'cookie': '_octooz7h3ni%2FGlaRFR3ETrDvuhKiiUgJP8jStjNLNiFfpvWQy7U10IGCY15XhHxudYu3tRlt%2Fawt4SHEaDct0LNUQ%2B%2Fi2rHiCLVsL1Y8w%2BC9HpTtd2S6gxDLzfHK5dvBPc4TB6WDn%2BaRt9ljs4lSdlT0mn--qas9T0w68J9araMi--Se2WerqwQ6PlXV5xa2W9lw%3D%3D'
}
url = 'https://github.com/kxxxx'
response = requests.get(url, headers=headers)
print(response.content.decode())
运行效果: