我想全局设置请求的'user-agent‘头。但我找不到任何方法去做。有谁可以帮我?
发布于 2018-09-25 20:03:39
您可以在requests.Session()中设置全局标头:
s = requests.Session()
s.headers['User-Agent'] = 'My Browser'
s.get('http://...') # requests sent from this session will all have this User-Agent header有关更多详细信息,请参阅requests.Session的documentation。
或者,如果您希望将标头全局应用于不是从会话发出的请求,则可以使用以下包装器:
import requests
import inspect
def override_headers(self, func, global_headers):
def wrapper(*args, **kwargs):
bound = sig.bind(*args, **kwargs)
bound.apply_defaults()
bound.arguments.setdefault('headers', {}).update(global_headers)
return func(*bound.args, **bound.kwargs)
sig = inspect.signature(func)
return wrapper
requests.request = override_headers(requests.request, {'User-Agent': 'My Browser'})这样,所有请求,包括GET、POST等,都将使用指定的头部发送。
发布于 2021-03-17 02:34:36
您还可以像这样修补default_user_agent:
from requests import utils
DEFAULT_USER_AGENT = 'My Agent'
utils.default_user_agent = lambda: DEFAULT_USER_AGENT当请求来自外部包,并且您不想修改包的源代码时,此方法非常有用。
https://stackoverflow.com/questions/52497739
复制相似问题