“远程主机强制关闭了现有连接”是什么原因?我该如何解决?

1 投票
1 回答
3917 浏览
提问于 2025-04-18 11:56

我正在尝试打开一个需要登录的网站。我决定使用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

另一个问题告诉我错误是什么,但我不明白该怎么解决……希望能得到帮助 :)

1 个回答

0

如果问题是因为认证过程出现的,你需要把用户名和密码传递给认证参数(假设这些凭证是用户输入的):

r = requests.get(url, proxies=proxies, auth=HTTPProxyAuth(user, password))

撰写回答