python - 通过代理请求访问网站有时不起作用(http.client.RemoteDisconnected:远程结束关闭连接没有响应)
问题描述
我一直在尝试使用 requests 模块通过 python 中的代理访问网站(在我的示例中我正在访问 api.ipify.org,因为它应该打印代理的 ip)。我之前使用相同的程序测试过代理,它已经工作了。但有时当我随机运行它时,它会给我一个错误。这是我的代码:
import requests
proxies = {
"http": "39.100.18.200:8080",
"https": "39.100.18.200:8080",
}
r = requests.get("http://api.ipify.org/", proxies=proxies)
print(r.text)
它应该打印: 39.100.18.200 它以前有,但随机它会给我这个错误:
Traceback (most recent call last):
File "C:\Users\mmein\AppData\Local\Programs\Python\Python38-32\lib\site-packages\urllib3\connectionpool.py", line 665, in urlopen
httplib_response = self._make_request(
File "C:\Users\mmein\AppData\Local\Programs\Python\Python38-32\lib\site-packages\urllib3\connectionpool.py", line 421, in _make_request
six.raise_from(e, None)
File "<string>", line 3, in raise_from
File "C:\Users\mmein\AppData\Local\Programs\Python\Python38-32\lib\site-packages\urllib3\connectionpool.py", line 416, in _make_request
httplib_response = conn.getresponse()
File "C:\Users\mmein\AppData\Local\Programs\Python\Python38-32\lib\http\client.py", line 1322, in getresponse
response.begin()
File "C:\Users\mmein\AppData\Local\Programs\Python\Python38-32\lib\http\client.py", line 303, in begin
version, status, reason = self._read_status()
File "C:\Users\mmein\AppData\Local\Programs\Python\Python38-32\lib\http\client.py", line 272, in _read_status
raise RemoteDisconnected("Remote end closed connection without"
http.client.RemoteDisconnected: Remote end closed connection without response
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\mmein\AppData\Local\Programs\Python\Python38-32\lib\site-packages\requests\adapters.py", line 439, in send
resp = conn.urlopen(
File "C:\Users\mmein\AppData\Local\Programs\Python\Python38-32\lib\site-packages\urllib3\connectionpool.py", line 719, in urlopen
retries = retries.increment(
File "C:\Users\mmein\AppData\Local\Programs\Python\Python38-32\lib\site-packages\urllib3\util\retry.py", line 436, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='39.100.18.200', port=8080): Max retries exceeded with url: http://api.ipify.org/ (Caused by ProxyError('Cannot connect to proxy.', RemoteDisconnected('Remote end closed connection without response')))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\mmein\OneDrive\Desktop\pywork\nitrothruproxy.py", line 7, in <module>
r = requests.get("http://api.ipify.org/", proxies=proxies)
File "C:\Users\mmein\AppData\Local\Programs\Python\Python38-32\lib\site-packages\requests\api.py", line 76, in get
return request('get', url, params=params, **kwargs)
File "C:\Users\mmein\AppData\Local\Programs\Python\Python38-32\lib\site-packages\requests\api.py", line 61, in request
return session.request(method=method, url=url, **kwargs)
File "C:\Users\mmein\AppData\Local\Programs\Python\Python38-32\lib\site-packages\requests\sessions.py", line 530, in request
resp = self.send(prep, **send_kwargs)
File "C:\Users\mmein\AppData\Local\Programs\Python\Python38-32\lib\site-packages\requests\sessions.py", line 643, in send
r = adapter.send(request, **kwargs)
File "C:\Users\mmein\AppData\Local\Programs\Python\Python38-32\lib\site-packages\requests\adapters.py", line 510, in send
raise ProxyError(e, request=request)
requests.exceptions.ProxyError: HTTPConnectionPool(host='39.100.18.200', port=8080): Max retries exceeded with url: http://api.ipify.org/ (Caused by ProxyError('Cannot connect to proxy.', RemoteDisconnected('Remote end closed connection without response')))
[Finished in 2.4s with exit code 1]
[shell_cmd: python -u "C:\Users\mmein\OneDrive\Desktop\pywork\nitrothruproxy.py"]
[dir: C:\Users\mmein\OneDrive\Desktop\pywork]
[path: C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\Git\cmd;C:\Program Files\nodejs\;C:\Users\mmein\AppData\Local\Programs\Python\Python38-32\Scripts\;C:\Users\mmein\AppData\Local\Programs\Python\Python38-32\;C:\Users\mmein\AppData\Local\Programs\Python\Python38\Scripts\;C:\Users\mmein\AppData\Local\Programs\Python\Python38\;C:\Program Files\MySQL\MySQL Shell 8.0\bin\;C:\Users\mmein\AppData\Local\Microsoft\WindowsApps;C:\Users\mmein\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\mmein\AppData\Local\atom\bin;C:\Users\mmein\OneDrive\Desktop\gecko\geckodriver.exe;C:\ffmpeg\bin;C:\MinGW\bin;C:\Program Files\heroku\bin;C:\Users\mmein\AppData\Roaming\npm;%USERPROFILE%\AppData\Local\Microsoft\WindowsApps;]
解决方案
推荐阅读
- sql - 在Oracle SQL中按字符数拆分字符串
- python - 如何为其他方法封装类方法
- angular - 有没有办法从组件中的 db 值添加角度指令?
- java - JNI - 如何获取 Double.toString() 方法以将 jdouble 转换为 jstring
- node.js - 在 AWS ec2 实例上部署 Node Express 应用程序和 php 应用程序的最佳实践
- php - 从对象 php laravel 获取数据
- git - Git:制作一个由当前分支的更改组成的 PR,该更改取决于另一个分支的更改
- transactions - Spring重试期间如何根据线程增加Atomikos默认jta超时
- django - 自定义的 django all-auth 表单未提交
- c# - 如何将列中的二进制数据转换为文件?