我正在尝试打开一个受身份验证保护的网站。我决定使用 requests 模块,它适用于基本网站(facebook 是我的主要测试站点)。但是,当我尝试在具有“更高级”身份验证的网站上使用它(即,多个防火墙以及密码保护)时,我收到以下错误:
Traceback (most recent call last):
File "C:\Python27\Pre-SiDashboard\more_test.py", line 15, in <module>
r = requests.get(url, proxies=proxies, auth=('user','pass'))
File "C:\Python27\lib\site-packages\requests-2.3.0-py2.7.egg\requests\api.py", line 55, in get
return request('get', url, **kwargs)
File "C:\Python27\lib\site-packages\requests-2.3.0-py2.7.egg\requests\api.py", line 44, in request
return session.request(method=method, url=url, **kwargs)
File "C:\Python27\lib\site-packages\requests-2.3.0-py2.7.egg\requests\sessions.py", line 461, in request
resp = self.send(prep, **send_kwargs)
File "C:\Python27\lib\site-packages\requests-2.3.0-py2.7.egg\requests\sessions.py", line 567, in send
r = adapter.send(request, **kwargs)
File "C:\Python27\lib\site-packages\requests-2.3.0-py2.7.egg\requests\adapters.py", line 395, in send
raise ProxyError(e)
ProxyError: ('Cannot connect to proxy.', error(10054, 'An existing connection was forcibly closed by the remote host'))
这是我的代码(网站、代理和密码隐藏):
import requests
from requests.auth import HTTPBasicAuth
import getpass
proxies = {
"http": "http://a_proxy.blah.blah.org",
"https": "http://a_proxy.blah.blah.org",
}
url = 'https://example.com/here/there/'
user = getpass.getuser()
password = getpass.getpass("password:")
r = requests.get(url, proxies=proxies, auth=('user','pass'))
#print r.text
print r.cookies
print r.status_code
另一个问题告诉我错误是什么,但我不明白如何解决它......
帮助表示赞赏:)
最佳答案
如果由于身份验证过程而出现问题,您应该将用户和密码传递给 auth 参数(假设凭据是用户的输入):
r = requests.get(url, proxies=proxies, auth=HTTPProxyAuth(user, password))
关于python - "An Existing Connection was Forcibly Closed by the Remote Host"为什么?我该如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24542699/