Python请求的SSL证书问题

tvz2xvvm  于 2023-03-13  发布在  Python
关注(0)|答案(2)|浏览(176)

我正在请求访问需要SSL证书才能访问的站点。当我尝试访问该URL时,出现SSL证书错误

import requests
proxies = {"https":"https://user:pwd@host:port"}
r = requests.get("https://URL", proxies=proxies)
print(r.status_code)

文件“C:\程序文件\Python37 -32\库\站点包\请求\会话. py”,第533行,在请求中响应= self.send(prep,**send_kwargs)文件“C:\程序文件\Python37 -32\库\站点包\请求\会话. py”,第646行,在发送中r = adapter.send(请求,**kwargs)文件“C:\程序文件\Python37 -32\库\站点包\请求\adapters.py”,第514行,在发送中引发SSLError(e,请求=请求)请求。异常。SSLError:HTTP连接池(主机=“pit-wvrpnpd.johnlewis.co.uk”,端口=443):URL超过最大重试次数:/suite-api(由SSL错误导致(SSL证书验证错误(1,'[SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败:证书链中的自签名证书(_ssl.c:1076“')))
如果我在Python的请求中使用verify=False,我会得到下面的错误

r = requests.get("https://URL", proxies=proxies,verify=False)

C:\程序文件\Python37 -32\库\站点包\urllib3\连接池.py:851:不安全请求警告:正在发出未经验证的HTTPS请求。强烈建议添加证书验证。请参阅:403https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings错误请求提示
所以我决定从Chrome下载SSL证书“site.cer”然后我使用它如下,但它抛出错误

r = requests.get("https://URL", proxies=proxies, cert=('C:\\site.cer'))

文件“C:\程序文件\Python37 -32\库\站点包\请求\会话. py”,第533行,在请求中响应= self.send(prep,**send_kwargs)文件“C:\程序文件\Python37 -32\库\站点包\请求\会话. py”,第646行,在发送中r = adapter.send(请求,**kwargs)文件“C:\程序文件\Python37 -32\库\站点包\请求\adapters.py”,第514行,在发送中引发SSLError(e,请求=请求)请求。异常。SSLError:HTTP连接池(主机=“pit-wvrpnpd.johnlewis.co.uk”,端口=443):URL超过最大重试次数:/suite-api(由SSL错误引起(SSL错误(9,“[SSL] PEM库(_ssl.c:3854)”)))
我用的是Python 3.7,你知道我哪里出错了吗?

ukxgm1gy

ukxgm1gy1#

verify=False添加这个头给了我访问权限。

headers = {
    'user-agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36",
}

response = requests.request("GET", url, headers=headers, verify=False)
iqjalb3h

iqjalb3h2#

from bs4 import BeautifulSoup
import requests
url = "https://www.tutorialspoint.com/index.htm"
req = requests.get(url,verify=False)
soup = BeautifulSoup(req.text, "html.parser")
print(soup.title)

这很管用#

相关问题