python - 如何在 Python 请求中正确使用代理?
问题描述
我有一个代理列表。当我使用以下方法测试其中一个时curl
:
curl -proxy https://x.x.x:port https://www.google.com/
我得到了预期的结果,但是当我运行时:
proxies = {'http' : 'x.x.x:port', 'https' : 'x.x.x:port'}
requests.get('https://www.google.com/', proxies = proxies)
它卡住了一段时间,然后我收到此错误:
requests.exceptions.ProxyError: HTTPSConnectionPool(host='www.google.com', port=443): Max retries exceeded with url: / (Caused by ProxyError('Cannot connect to proxy.', ConnectionResetError(104, 'Connection reset by peer')))
我尝试了不同的代理定义方式,例如:
'http' : 'http://x.x.x:port', 'https' : 'https://x.x.x:port'
没有任何效果,总是出现这个错误,如何解决?
解决方案
编辑:刚刚看到您尝试不同方式的最后一条说明,这与我的第一个建议一致。您可能想os
在我稍后的建议中尝试使用库设置代理。
有两点让我印象深刻:
您
https://x.x.x:port
在 curl 命令中使用过,但x.x.x:port
在 Python 中使用过。您可能必须包括https://
.您同时使用了 http 和 https。我认为这不会导致错误,但仍然值得研究
首先,我建议包括https://
这样的:
proxies = {'https' : 'https://x.x.x:port'}
requests.get('https://www.google.com/', proxies = proxies)
其次,我会尝试设置 https(如果失败,请尝试设置 http):
import requests
proxies = {
'https': 'https://x.x.x.x:port',
}
requests.get('https://example.org', proxies=proxies)
此外,您可以通过 Python 设置环境代理,例如:
import os
os.environ["http_proxy"] = "http://x.x.x.x:port"
os.environ["https_proxy"] = "https://x.x.x.x:port"
或通过命令行/命令提示符
视窗
set http_proxy=http://x.x.x.x:port
set https_proxy=https://x.x.x.x:port
Linux/OS X:
export http_proxy=http://x.x.x.x:port
export https_proxy=https://x.x.x.x:port
推荐阅读
- r - 如何最好地在 R 中创建计算列
- java - 如何在不进入矩形的情况下围绕被阻止的矩形平移精灵?
- python - 如何弄清楚为什么 systemd 服务因结果“退出代码”而失败?
- deployment - 是否存在仅将多堆栈部署到一个服务器实例的最佳实践?
- java - 获取动画 ImageView (Android Studio) 的旋转值
- javascript - TypeError:无法读取未定义的属性“hasOwnProperty”-Twitter API V2 与 GAS
- python - 来自一个热编码标签的 BERT 模型损失函数
- php - 如何包括类?
- google-sheets - 根据一行上的 X 值重复单元格并移动到下一行并执行相同的过程
- .net - .NET:DateTimeOffset:FromUnixTimeMilliSeconds:转换为山区时间