首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何全局设置请求的'user-agent‘头

如何全局设置请求的'user-agent‘头
EN

Stack Overflow用户
提问于 2018-09-25 20:00:19
回答 2查看 1.8K关注 0票数 4

我想全局设置请求的'user-agent‘头。但我找不到任何方法去做。有谁可以帮我?

EN

回答 2

Stack Overflow用户

发布于 2018-09-25 20:03:39

您可以在requests.Session()中设置全局标头:

代码语言:javascript
复制
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.Sessiondocumentation

或者,如果您希望将标头全局应用于不是从会话发出的请求,则可以使用以下包装器:

代码语言:javascript
复制
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等,都将使用指定的头部发送。

票数 2
EN

Stack Overflow用户

发布于 2021-03-17 02:34:36

您还可以像这样修补default_user_agent:

代码语言:javascript
复制
from requests import utils
DEFAULT_USER_AGENT = 'My Agent'
utils.default_user_agent = lambda: DEFAULT_USER_AGENT

当请求来自外部包,并且您不想修改包的源代码时,此方法非常有用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52497739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档