使用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。 如果你想禁用,看到这个问题 。