【发布时间】:2019-10-17 20:27:22
【问题描述】:
当我使用请求时,我希望仅将一些标头传递给我的代理,但我没有看到执行此操作的方法。
urllib3.ProxyManager 有一个 proxy_headers 参数,所以我假设有一种方法可以为请求库设置它 - 我错过了什么吗?
【问题讨论】:
标签: python-3.x proxy python-requests
当我使用请求时,我希望仅将一些标头传递给我的代理,但我没有看到执行此操作的方法。
urllib3.ProxyManager 有一个 proxy_headers 参数,所以我假设有一种方法可以为请求库设置它 - 我错过了什么吗?
【问题讨论】:
标签: python-3.x proxy python-requests
您可以使用自定义的 HTTPAdapter 来实现(例如,如下所示):
import requests
proxyheaders = { 'http://proxy.that.needs.header:8080/': { 'ProxyHeader1': 'SomeValue', 'ProxyHeaderN': 'OtherValue' } }
class ProxyHeaderAwareHTTPAdapter(requests.adapters.HTTPAdapter):
def proxy_headers(self, proxy):
if proxy in proxyheaders:
return proxyheaders[proxy]
else:
return None
s = requests.Session()
s.mount('http://', ProxyHeaderAwareHTTPAdapter())
s.mount('https://', ProxyHeaderAwareHTTPAdapter())
s.get(....)
...
如果你愿意的话,你也可以直接创建并返回一个配置好的 urllib3.ProxyManager 如果你覆盖了 proxy_manager_for 方法而不是 proxy_headers。
https://requests.kennethreitz.org/en/master/api/#requests.adapters.HTTPAdapter
【讨论】: