[英]How to properly use proxies in Python requests?
我有一個代理列表。 當我使用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
庫設置代理。
有兩點讓我印象深刻:
您在 curl 命令中使用https://xxx:port
,但在 Python 中使用了xxx:port
。 您可能必須包含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"
或通過命令行/命令提示符
Windows
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.