请求头处理

简介: 【8月更文挑战第9天】

在Python网络请求中,处理状态码、请求头和响应体是常见的任务。以下是如何处理这些元素以及如何使用请求头来模拟用户代理以躲避某些检查的示例。

状态码处理

状态码是HTTP响应的一部分,用来表示请求的结果。例如,200表示成功,404表示未找到,500表示服务器错误等。

import requests

response = requests.get('http://example.com')
if response.status_code == 200:
    print('请求成功')
elif response.status_code == 404:
    print('资源未找到')
else:
    print('请求失败,状态码:', response.status_code)

请求头和响应体处理

请求头通常包含元信息,如User-AgentAccept等,而响应体则包含服务器响应的数据。

# 设置请求头
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://example.com', headers=headers)

# 打印响应头和响应体
print('响应头:', response.headers)
print('响应体:', response.text)

模拟请求头躲避检查

有些网站可能会检查User-Agent或其他请求头来确定是否为爬虫。通过设置合适的请求头,你可以模拟浏览器访问,以躲避一些基本的检查。

# 模拟常见浏览器的User-Agent
user_agents = [
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Safari/605.1.15',
    'Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1',
    # 更多User-Agent字符串...
]

# 随机选择一个User-Agent
import random
headers = {
   
    'User-Agent': random.choice(user_agents)
}

response = requests.get('http://example.com', headers=headers)
print(response.text)

使用Session保持Cookies

有时,你需要保持会话,例如登录后保持登录状态。

session = requests.Session()

# 访问登录页面
login_url = 'http://example.com/login'
login_data = {
   
    'username': 'your_username',
    'password': 'your_password'
}
session.post(login_url, data=login_data)

# 现在session保持了登录状态的cookies
response = session.get('http://example.com/protected_page', headers=headers)
print(response.text)

异常处理

在网络请求中,处理异常是很重要的,比如连接错误、超时等。

try:
    response = requests.get('http://example.com', timeout=0.01)
except requests.exceptions.Timeout:
    print('请求超时')
except requests.exceptions.ConnectionError:
    print('连接错误')
except requests.exceptions.RequestException as e:
    print('请求异常:', e)
目录
相关文章
|
4月前
|
数据采集 API
请解释什么是 HTTP 请求头,以及在爬虫中为什么要设置请求头?
请解释什么是 HTTP 请求头,以及在爬虫中为什么要设置请求头?
143 2
|
4月前
|
Python
HTTP请求头
这是一段描述如何处理HTTP请求头的Python代码。具体来说,这段代码的功能包括:
65 3
|
4月前
|
JSON 缓存 JavaScript
常见请求头与响应头你了解哪些?
常见请求头与响应头你了解哪些?
request获取请求头的名称
request获取请求头的名称
|
10月前
HttpURLConnection中请求头中携带Token的使用方法
HttpURLConnection中请求头中携带Token的使用方法
361 2
|
缓存 JSON 前端开发
什么是请求头?常见的请求头有哪些?
请求头(Request Headers)是在HTTP协议中用于传递关于请求的额外信息的部分。它包含了客户端(通常是浏览器或应用程序)与服务器之间进行通信所需的元数据
5089 1
|
Web App开发 iOS开发 开发者
HTTP 请求头 | 学习笔记
快速学习 HTTP 请求头
HTTP 请求头 | 学习笔记
|
缓存 前端开发 Java
常用响应头介绍| 学习笔记
快速学习常用响应头介绍,介绍了 常用响应头介绍系统机制, 以及在实际应用过程中如何使用。
148 0
常用响应头介绍| 学习笔记
|
Java 应用服务中间件 开发者
个别请求头介绍| 学习笔记
快速学习个别请求头介绍,介绍了个别请求头介绍系统机制, 以及在实际应用过程中如何使用。
|
JavaScript 数据安全/隐私保护
设置token到请求头
设置token到请求头
1123 0