requests模块-发送带请求头的请求

Header是HTTP请求和响应中的元数据信息,用于在请求中传递附加的参数和配置。发送带Header的请求可以实现定制化的功能和更精确的控制,下面是常见的一些HTTP Header字段及其作用:

Header字段 作用 示例
Authorization 提供身份验证凭据,允许访问需要权限的资源 Authorization: Bearer <token>
User-Agent 用于标识发送请求的客户端类型和版本信息 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Content-Type 指定请求或响应的主体部分的媒体类型 Content-Type: application/json
Accept 指定客户端能够接受的响应内容类型 Accept: application/json
Cookie 用于在客户端和服务器之间传递会话信息 Cookie: session_id=ABC123
Referer 指示请求的源地址,用于防止跨站请求伪造攻击 Referer: https://example.com/page1
If-Modified-Since 当资源未修改时,返回缓存的版本,减少数据传输 If-Modified-Since: Sat, 01 Jan 2023 00:00:00 GMT
User-Custom-Header 用户自定义的Header字段,可用于传递自定义信息 X-Custom-Header: custom_value

注意:Header字段名称不区分大小写。

使用不同的Header字段,可以在HTTP请求中传递不同的信息,实现更灵活和个性化的请求和响应过程。但要注意,使用header时需遵循相关的HTTP规范,并确保数据的安全性和合法性。

我们先写一个获取百度首页的代码

# 导入requests库

import requests

# 设置要访问的URL
url = 'https://www.baidu.com'

# 发送GET请求获取响应
response = requests.get(url)

# 打印响应内容
print(response.content.decode())

# 打印响应对应请求的请求头信息
print(response.request.headers)

思考

  1. 对比浏览器上百度首页的网页源码和代码中的百度首页的源码,有什么不同?

    • 查看网页源码的方法:
      • 右键-查看网页源代码 或
      • 右键-检查
  2. 对比对应url的响应内容和代码中的百度首页的源码,有什么不同?

    • 查看对应url的响应内容的方法:
      1. 右键-检查
      2. 点击 Net work
      3. 勾选 Preserve log
      4. 刷新页面
      5. 查看Name一栏下和浏览器地址栏相同的url的Response
  3. 代码中的百度首页的源码非常少,为什么?

    • 需要我们带上请求头信息

      回顾爬虫的概念,模拟浏览器,欺骗服务器,获取和浏览器一致的内容

    • 请求头中有很多字段,其中User-Agent字段必不可少,表示客户端的操作系统以及浏览器的信息

携带请求头发送请求的方法

requests.get(url, headers=headers)
  • headers参数接收字典形式的请求头
  • 请求头字段名作为key,字段对应的值作为value

完成代码实现

从浏览器中复制User-Agent,构造headers字典;完成下面的代码后,运行代码查看结果

# 导入requests库
import requests

# 设置要访问的URL
url = 'https://www.baidu.com'

# 构造请求头字典,模拟浏览器发送请求
headers = {
    
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}

# 在请求头中带上User-Agent,模拟浏览器发送请求
response = requests.get(url, headers=headers) 

# 打印响应内容
print(response.content)

# 打印请求头信息
print(response.request.headers)

猜你喜欢

转载自blog.csdn.net/m0_67268191/article/details/131784036