HTTPS连接池SSL证书验证

2024-03-28 11:25:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用python3和请求库来抓取一个房地产列表网站

url = 'https://www.mlslistings.com'
page = requests.get(url)

我遇到了以下错误:

^{pr2}$

我可以用

url = 'https://www.mlslistings.com'
page = requests.get(url,verify=False)

但我被警告过

InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecureRequestWarning)

我沿着链接找到了他们的建议pip install certifi,然后尝试

import certifi
import urllib3
http = urllib3.PoolManager(cert_reqs='CERT_REQUIRED', ca_certs=certifi.where())
http.request('GET', 'https://mlslistings.com')

但这样做给了我同样的错误。在

所以我有两个问题: 1为什么添加证书验证是“强烈建议”?,和 2在不放弃并使用verify=False的情况下,我能做些什么来克服这个问题呢?在


Tags: httpscomfalseurlgetrequestwww错误
2条回答

要在不禁用verify的情况下使其正常工作,请使用web浏览器转到站点,并以base64格式导出根证书(证书路径中的第一项)。然后,当您使您的调用集验证是否等于您导出的证书的路径。在

page=requests.get(url, verify='/path/to/exported/certificate.cer')

为什么要验证证书?确保你做事有安全感。在

看起来您在url中错过了ssl证书的s。试试这个

url = 'https://www.mlslistings.com'
page = requests.get(url)

相关问题 更多 >