爬虫之requests模块在headers参数中携带cookie发送请求
网站经常利用请求头中的Cookie字段来做用户访问状态的保持,那么我们可以在headers参数中添加Cookie,模拟普通用户的请求。我们以github登陆为例:
1.1 github登陆抓包分析
打开浏览器,右键-检查,点击Net work,勾选Preserve log访问github登陆的url地址/login
输入账号密码点击登陆后,访问一个需要登陆后才能获取正确内容的url,比如点击右上角的Your profile访问/USER_NAME
确定url之后,再确定发送该请求所需要的请求头信息中的User-Agent和Cookie1.2 完成代码
从浏览器中复制User-Agent和Cookie浏览器中的请求头字段和值与headers参数中必须一致headers请求参数字典中的Cookie键对应的值是字符串import requestsurl = '/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 requestsheaders = {'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 = '/写自己的GitHub名称'response = requests.get(url, headers=headers)print(response.content.decode())
运行效果:
示例代码展示(有cookies):
import requestsheaders = {'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 = '/kxxxx'response = requests.get(url, headers=headers)print(response.content.decode())
运行效果: