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

我想在使用Python请求来请求网页的同时发送"User-agent"的值。 我不确定是否可以将其作为标题的一部分发送,如下面的代码所示:

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

debugging信息不​​显示在请求期间发送的标题。

在标题中发送这些信息是否可以接受? 如果没有,我怎么发送它?

user-agent应该被指定为标题中的一个字段。

这是一个HTTP头域的列表 ,你可能会对包含User-Agent 请求特定字段感兴趣。

如果您使用的请求v2.13和更新

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

 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) 

使用会话更方便,这样您不必每次都记得设置标题:

 session = requests.Session() session.headers.update({'User-Agent': 'Custom user agent'}) session.get('https://httpbin.org/headers') 

默认情况下,会话也为您pipe理cookie。 如果你想禁用,看到这个问题 。