使用Python中的Requests库发送“User-agent”

问题:

我要发送"User-agent"的值,同时使用Python请求请求一个网页。我不知道是否可以发送这个作为标题的一部分,如下面的代码:

debug = {'verbose': sys.stderr}
user_agent = {'User-agent': 'Mozilla/5.0'}
response  = requests.get(url, headers = user_agent, config=debug)

调试信息没有显示在请求期间发送的头文件。
在标题中发送此信息是否可以接受?如果没有,我该怎么办?

回答:

应将user-agent指定为标题中的一个字段。
这是list of HTTP header fields,您可能对request-specific fields感兴趣,其中包括User-Agent

如果您正在使用请求v2.13和更高版本

最简单的做法是创建一个字典并直接指定标题,如下所示:

import requests

url = 'SOME URL'

headers = {
    'User-Agent': 'My User Agent 1.0',
    'From': 'youremail@domain.com'  # 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)

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Sending “User-agent” using Requests library in Python

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

5 + 3 =