我知道如何很好地使用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中做错了什么?
答案 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
或其他任何内容本地副本。