您可以改为设置全局标头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
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参阅requests.Session的文档。
或者,如果您想将标头全局应用于不是从会话发出的请求,则可以使用以下包装器:
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'})
Run Code Online (Sandbox Code Playgroud)
这样所有请求,包括 GET、POST 等,都将使用指定的标头发送。
小智 6
您还可以猴子修补default_user_agent,如下所示:
from requests import utils
DEFAULT_USER_AGENT = 'My Agent'
utils.default_user_agent = lambda: DEFAULT_USER_AGENT
Run Code Online (Sandbox Code Playgroud)
当请求是从外部包发出并且您不想修改包的源代码时,此方法非常有用。
| 归档时间: |
|
| 查看次数: |
3515 次 |
| 最近记录: |