【问题标题】:Python Requests adds additional headers to any GET or POST requestPython Requests 向任何 GET 或 POST 请求添加额外的标头
【发布时间】:2019-06-18 19:29:33
【问题描述】:

对于像下面的python请求这样的简单请求

r = requests.get("http://google.com", headers={'Connection': 'close'})

还有一些额外的请求标头随请求一起发送,如下所示

>>> r.request.headers
{'Connection': 'close', 'User-Agent': 'python-requests/2.9.1', 'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate'}

有什么方法可以强制 python 请求只发送提供的标头,仅此而已?

谢谢你, 速渡

【问题讨论】:

  • 您是否尝试在 headers={...} 值中为这些标头提供空值?
  • 事实上,你尝试过什么?
  • 感谢您的快速回复。是的,我在请求中添加了Connection 标头,随之还有更多标头,例如Accept: */*,我不想被看到
  • 你试过查看requests的源代码吗?
  • 是的。我会检查一下。谢谢巴尼! :)

标签: python python-requests


【解决方案1】:

您需要将所有其他标头发送为None。 例如:-

headers = {'Connection': 'close', 'Accept-Encoding': None, 'User-Agent': None}
r = requests.get("http://google.com", headers=headers)

P.S - 但是如果您将它们发送为None,某些网站可能无法响应

【讨论】:

  • 谢谢! :) 将 None 值设置为默认标头 ['Connection','User-Agent','Accept','Accept-Encoding'] 由适用于我的应用程序的请求发送。 :)
【解决方案2】:

请尝试“头”:

>>> r = requests.head('http://google.com',headers={'Connection':'close'})                                                               
>>> r.request.headers
{'Connection': 'close', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'User-Agent': 'python-requests/2.19.1'}                    
>>> r.text                                                                                                                              
u'' 

【讨论】:

    【解决方案3】:

    还有其他请求标头随请求一起发送,如下所示

    headers = {'Connection': 'close',  'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'User-Agent': 'python-requests/2.19.1'}
    r = requests.get("http://google.com", headers=headers)
    

    【讨论】:

    • OP 已经知道这一点。问题不在于是否它们被发送,而是如何防止那些额外的标头。
    猜你喜欢
    • 2017-02-24
    • 2017-12-27
    • 2013-10-28
    • 2015-06-11
    • 2013-09-13
    • 1970-01-01
    • 1970-01-01
    • 2017-01-22
    • 2018-02-09
    相关资源
    最近更新 更多