请求库未通过代理正确地引导HTTP请求

时间:2013-01-15 23:29:26

标签: python node.js proxy python-requests

我知道如何很好地使用requests,但由于某种原因,我没有成功地使代理工作。我提出以下要求:

r = requests.get('http://whatismyip.com', proxies={'http': 'http://148.236.5.92:8080'})

我得到以下内容:

requests.exceptions.ConnectionError: [Errno 10060] A connection attempt failed b
ecause the connected party did not properly respond after a period of time, or e
stablished connection failed because connected host has failed to respond

然而,我知道代理有效,因为使用节点:

request.get({uri: 'http://www.whatismyip.com', proxy: 'http://148.236.5.92:8080'},
    function (err, response, body) {var $ = cheerio.load(body); console.log($('#greenip').text());});

我得到以下(正确)回复:

148.236.5.92

此外,当我以不同的方式尝试requests请求时(例如,在代理前没有写http://),它只是允许请求正常通过而无需通过代理或返回错误。

我在Python中做错了什么?

2 个答案:

答案 0 :(得分:2)

这是一个众所周知的问题:https://github.com/kennethreitz/requests/issues/1074

我不确定为什么要花这么长时间修复它。不过要回答你的问题,你没有做错任何事。

答案 1 :(得分:1)

正如sigmavirus24所说,这是known issue,已修复,但尚未打包成新版本并推送到PyPI。

所以,如果你急需这个,你可以从git repo的主人升级。

如果你正在使用pip,这很简单。而不是:

pip install -U requests

这样做:

pip install -U git+https://github.com/kennethreitz/requests

如果您未使用pip,则可能必须明确git clone回购,然后easy_install .python setup.py或其他任何内容本地副本。