使用 Python 中的 Requests 库发送“用户代理”
- 2024-12-18 08:39:00
- admin 原创
- 138
问题描述:
我想"User-agent"
在使用 Python Requests 请求网页时发送一个值。我不确定是否可以将其作为标头的一部分发送,如以下代码所示:
debug = {'verbose': sys.stderr}
user_agent = {'User-agent': 'Mozilla/5.0'}
response = requests.get(url, headers = user_agent, config=debug)
调试信息未显示请求期间发送的标头。
在标题中发送此信息可以接受吗?如果不可以,我该如何发送?
解决方案 1:
应该将其user-agent
指定为标题中的一个字段。
这里是HTTP 标头字段的列表,您可能对请求特定的字段感兴趣,其中包括User-Agent
。
如果您使用的是请求 v2.13 及更高版本
做你想做的事情的最简单的方法是创建一个字典并直接指定你的标题,如下所示:
import requests
url = 'SOME URL'
headers = {
'User-Agent': 'My User Agent 1.0',
'From': 'youremail@domain.example' # This is another valid field
}
response = requests.get(url, headers=headers)
如果你使用的是请求 v2.12.x 及更早版本
旧版本的requests
默认标头会被破坏,因此您需要执行以下操作来保留默认标头,然后向其中添加您自己的标头。
import requests
url = 'SOME URL'
# Get a copy of the default headers that requests would use
headers = requests.utils.default_headers()
# Update the headers with your custom ones
# You don't have to worry about case-sensitivity with
# the dictionary keys, because default_headers uses a custom
# CaseInsensitiveDict implementation within requests' source code.
headers.update(
{
'User-Agent': 'My User Agent 1.0',
}
)
response = requests.get(url, headers=headers)
解决方案 2:
使用会话更方便,这样您不必每次都记得设置标题:
session = requests.Session()
session.headers.update({'User-Agent': 'Custom user agent'})
session.get('https://httpbin.org/headers')
默认情况下,session 还会为您管理 cookies。如果您想要禁用此功能,请参阅此问题。
解决方案 3:
它将像浏览器一样发送请求
import requests
url = 'https://Your-url'
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36'}
response= requests.get(url.strip(), headers=headers, timeout=10)
解决方案 4:
替代方案session.headers.update()
session = requests.Session()
session.headers['User-Agent'] = 'Custom user agent'
session.get('https://httpbin.org/headers')
相关推荐
热门文章
项目管理软件有哪些?
热门标签
云禅道AD