我正在使用Luminati代理管理器,并且尝试将代理与请求一起使用时遇到SSLCertificationError。 我可以在Selenium中使用代理服务器,所以它似乎必须与我如何在 requests 中使用代理服务器做些什么?
请注意,我确实通过安装 certifi
为Mac用户尝试了默认解决方案我正在使用的示例代码:
import random
import requests
proxies = {
'http': 'http://127.0.0.1:24000',
'https': 'http://127.0.0.1:24000'
}
headers = [{'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; AS; rv:11.0) like Gecko'},
{'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:64.0) Gecko/20100101 Firefox/64.0'},
{'User-Agent': 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.10; rv:62.0) Gecko/20100101 Firefox/62.0'},
]
url = 'https://lumtest.com/myip.json'
header = random.choice(headers)
try:
req = requests.get(url, proxies=proxies, headers=header)
html = req.text
print(html)
except Exception as e:
print('failed: ', url)
print(e)
这将引发错误:
HTTPSConnectionPool(host ='lumtest.com',port = 443):最多重试 网址超出了:/myip.json(由 SSLError(SSLCertVerificationError(1,'[SSL:CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获取本地颁发者证书 (_ssl.c:1056)')))
如果我通过verify=False
,一切都可以。但我高度怀疑这是正确/明智的做法;)