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)
思考
-
对比浏览器上百度首页的网页源码和代码中的百度首页的源码,有什么不同?
- 查看网页源码的方法:
- 右键-查看网页源代码 或
- 右键-检查
- 查看网页源码的方法:
-
对比对应url的响应内容和代码中的百度首页的源码,有什么不同?
- 查看对应url的响应内容的方法:
- 右键-检查
- 点击
Net work
- 勾选
Preserve log
- 刷新页面
- 查看
Name
一栏下和浏览器地址栏相同的url的Response
- 查看对应url的响应内容的方法:
-
代码中的百度首页的源码非常少,为什么?
-
需要我们带上请求头信息
回顾爬虫的概念,模拟浏览器,欺骗服务器,获取和浏览器一致的内容
-
请求头中有很多字段,其中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)