爬虫之requests模块在headers参数中携带cookie发送请求

爬虫之requests模块在headers参数中携带cookie发送请求

网站经常利用请求头中的Cookie字段来做用户访问状态的保持,那么我们可以在headers参数中添加Cookie,模拟普通用户的请求。我们以github登陆为例:

1.1 github登陆抓包分析

  1. 打开浏览器,右键-检查,点击Net work,勾选Preserve log
  2. 访问github登陆的url地址 https://github.com/login
  3. 输入账号密码点击登陆后,访问一个需要登陆后才能获取正确内容的url,比如点击右上角的Your profile访问https://github.com/USER_NAME
  4. 确定url之后,再确定发送该请求所需要的请求头信息中的User-Agent和Cookie

1.2 完成代码

  • 从浏览器中复制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())

运行效果:

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 在使用 Python 的 requests发送 HTTP 请求时,可以使用 headers 参数携带 HTTP 请求头信息。 HTTP 请求头信息包含了有关客户端浏览器、操作系统、接受的内容类型和版本等信息,这些信息可以帮助服务器理解客户端的需求,并返回合适的响应。 举个例子,如果你想发送一个带有 User-Agent 请求头的 HTTP 请求,你可以这样写: ```python import requests headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} response = requests.get('http://www.example.com', headers=headers) ``` 在这个例子,我们使用了 headers 参数携带一个 User-Agent 请求头,告诉服务器我们使用的是 Chrome 浏览器。 总之,使用 headers 参数携带 HTTP 请求头信息可以帮助你与服务器进行更有效的沟通,从而获得更好的响应。 ### 回答2: 在使用requests发送请求时,可以通过headers参数来自定义请求头。请求头是HTTP请求的一部分,用于向服务器传递请求的附加信息。 headers参数的作用有以下几个方面: 1. 传递用户代理信息:可以设置User-Agent字段来模拟不同浏览器发送请求,例如headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}。 2. 设置Cookie信息:可以通过headers参数设置Cookie字段,例如headers = {'Cookie': 'key=value'},让服务器判断用户的身份。 3. 设置Referer信息:可以用来标识请求的来源,有些网站可能会验证Referer字段,所以可以通过headers参数设置Referer字段来绕过这种验证。 4. 设置请求方式及编码:通过headers参数可以设置请求的方式(GET或POST)和编码方式(例如'Content-Type': 'application/json')。 5. 隐藏爬虫身份:通过自定义请求头可以隐藏爬虫的身份,以防止被网站屏蔽或封禁。 总之,headers参数可以用来携带一些额外的请求信息,帮助我们更灵活地发送请求,并且在一些特定的场景下,比如模拟浏览器行为或隐藏爬虫身份等都起到了重要的作用。 ### 回答3: requests发送请求可以通过参数`headers`来携带请求头信息。`headers`参数的作用是在请求添加头部信息,包括用户代理、cookies、接受的语言等等。 通过设置`headers`参数,可以模拟浏览器发送请求,使得服务器能够识别请求来源,并根据不同的头部信息返回对应的内容。比如,可以设置用户代理头部来模拟不同的浏览器,从而获得不同的网页显示效果。另外,通过设置`headers`参数来添加cookies信息,可以保持用户登录状态,实现持久化会话。 除了模拟浏览器发送请求以外,`headers`参数还可以用来伪装身份、传递其他自定义的头部信息。例如,可以设置`headers`的`Referer`字段来告诉服务器请求的来源页面,或者通过设置`User-Agent`字段来设置用户代理信息,从而实现反爬虫策略。 总之,`headers`参数requests发送请求时起到了重要的作用,它可以用来模拟浏览器行为、保持登录状态、传递其他自定义的请求头部信息等,使得请求更加灵活多样化。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值