python-requests - 用户代理被覆盖

标签 python python-requests

我有

    logindata = {
        'username': 'me',
        'password': 'blbla'
    }
    payload = {'from':'me', 'lang':'en', 'url':csv_url}
    headers = {
        'User-Agent': 'Mozilla/5.0'
    }
    api_url = 'http://dev.mypage.com/admin/app/import/'

    with requests.Session() as s:
        s.post(api_url, data=json.dumps(logindata), headers=headers)

        print s.headers

        # An authorised request.
        r = s.get(api_url, params=payload, headers=headers)

我被拒绝了,但这是因为 403 forbidden。我打印了标题,我得到:

..'User-Agent': 'python-requests/2.2.1 CPython/2.7.5 Windows/7'..

为什么我的 'User-Agent': 'Mozilla/5.0' 被覆盖了?我在这里错过了什么?

最佳答案

headers 不会以这种方式保存在 session 中

您需要在每次发出请求时显式传递它们,或者设置 s.headers一次:

with requests.Session() as s:
    s.headers = {'User-Agent': 'Mozilla/5.0'}

您可以通过检查 response.request.headers 检查是否发送了正确的 header :

with requests.Session() as s:
    s.headers = {'User-Agent': 'Mozilla/5.0'}

    r = s.post(api_url, data=json.dumps(logindata))
    print(r.request.headers)

另请参阅 Session class已实现 - 每次发出请求时 it merges the request.headers with headers您已在 session 对象上设置:

headers=merge_setting(request.headers, self.headers, dict_class=CaseInsensitiveDict),

关于python-requests - 用户代理被覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27968100/

相关文章:

python - setuptools 包上的 Pyinstaller

python - 无法为 Python 安装包 'requests'

python - 在 python 中使用 requests_futures 进行异常处理

python - django 可以支持按某些列分组同时对其他列求和吗

python - 如何从外部运行 QGIS 的 python 脚本

python - 缩进错误 : unindent does not match any outer indentation level - tokenize, 第 8 行

python - 在python中将服务器证书添加到CA_BUNDLE

python - 如果文件与另一个文件夹匹配,如何返回 1 个文件夹中的所有文件名?

python - 如何从 POST 请求中获取身份验证参数?

python - 如何在 python unittest 中模拟 http 请求