我试图获得一个Python脚本,它使用requests
模块通过代理请求数据。根据requests documentation:
You can also configure proxies by setting the environment variables HTTP_PROXY and HTTPS_PROXY.
然而,据我所知,这只在目标URL引用主机名时有效,而在目标URL引用IP地址时失败。例如,我试图获取资源http://overcloud-public-vip:5000
。主机名(overcloud-public-vip
)不能在本地解析,但可以由代理解析为192.168.30.6
。这是有效的:
>>> import os
>>> import requests
>>> os.environ['HTTP_PROXY'] = 'http://localhost:8123'
>>> requests.get('http://overcloud-public-vip:5000')
<Response [300]>
但是如果我尝试同样的方法,使用ip地址而不是 主机名,失败:
^{pr2}$我可以确认(使用strace -e trace=connect python
)该模块
千万不要在这一秒钟内尝试联系代理服务器
案例。在
这尤其令人沮丧,因为即使我使用 一个主机名,代码最终将从 远程服务器本身包含ip地址,所以我简单地 把失败推迟了一步。在
这种行为似乎与文档不符。我在用 请求2.9.1版:
>>> requests.__version__
'2.9.1'
这是requests
中的一个bug,还是我大脑中的一个bug?在
目前没有回答
相关问题 更多 >
编程相关推荐