用户代理构造函数

拥有格式良好的用户代理字符串对于 Web 的正常运行非常重要。通过生成一个漂亮的用户代理字符串,让服务器管理员高兴起来,就像 Requests 所做的那样!用户代理生成器的输出如下所示

>>> import requests_toolbelt
>>> requests_toolbelt.user_agent('mypackage', '0.0.1')
'mypackage/0.0.1 CPython/2.7.5 Darwin/13.0.0'

Python 类型和版本以及平台类型和版本将准确反映你的程序正在运行的系统。你可以像这样轻松地将其放入你的程序中

from requests_toolbelt import user_agent
from requests import Session

s = Session()
s.headers = {
    'User-Agent': user_agent('my_package', '0.0.1')
    }

r = s.get('https://api.github.com/users')

这将覆盖你所有 HTTP 请求的默认 Requests 用户代理字符串,用你自己的字符串替换它。

向你的用户代理字符串添加额外信息

0.5.0 版中的新增功能。

如果你觉得有必要,你还可以包含你的客户端正在使用的其他内容的版本。例如,如果你正在构建一个包并希望包含包名称和版本号以及你正在使用的 requests 和 requests-toolbelt 的版本,你可以执行以下操作

import requests
import requests_toolbelt
from requests_toolbelt.utils import user_agent as ua

user_agent = ua.user_agent('mypackage', '0.0.1',
                           extras=[('requests', requests.__version__),
                                   ('requests-toolbelt', requests_toolbelt.__version__)])

s = requests.Session()
s.headers['User-Agent'] = user_agent

你的用户代理现在看起来像

mypackage/0.0.1 requests/2.7.0 requests-toolbelt/0.5.0 CPython/2.7.10 Darwin/13.0.0

仅选择你想要的内容

0.8.0 版中的新增功能。

虽然大多数人会发现 user_agent 函数足以满足他们的使用需求,但其他人会希望确切地控制用户代理中包含哪些信息。对于这些人来说,UserAgentBuilder 是正确的工具。这是 toolbelt 在 user_agent() 中使用的工具。例如,假设你想要你的包、它的版本和一些额外信息,在这种情况下,你可以执行

import requests
from requests_toolbelt.utils import user_agent as ua

s = requests.Session()
s.headers['User-Agent'] = ua.UserAgentBuilder(
        'mypackage', '0.0.1',
    ).include_extras([
        ('requests', requests.__version__),
    ]).build()

你的用户代理现在看起来像

mypackage/0.0.1 requests/2.7.0

你还可以选择性地包含 Python 版本信息和系统信息,就像我们的 user_agent 函数所做的那样。

class requests_toolbelt.utils.user_agent.UserAgentBuilder(name, version)

提供比 user_agent() 更高级别的控制的类。

它被 user_agent() 用来构建其用户代理字符串。

user_agent_str = UserAgentBuilder(
        name='requests-toolbelt',
        version='17.4.0',
    ).include_implementation(
    ).include_system(
    ).include_extras([
        ('requests', '2.14.2'),
        ('urllib3', '1.21.2'),
    ]).build()
build()

完成用户代理字符串。

返回:

格式化的用户代理字符串。

返回类型:

str

include_extras(extras)

包含 User-Agent 的额外部分。

参数:

extras (list) – 额外名称和额外版本的元组列表

include_implementation()

将实现字符串追加到 user-agent 字符串。

这会将你使用 CPython 2.7.13 的信息添加到 User-Agent。

include_system()

追加有关操作系统的相关信息。