Python Requests 访问SSl证书无效的网址

如果URL的SSl证书是无效的,那么在使用 requests 请求该URL时会抛出SSLError异常。一定要访问的话,设置 verify 参数为 False

如果网站没有设置SSl证书,或SSl证书过期,或SSL证书不被CA机构认可,在浏览器访问网站时都有可能出现访问不安全的提示

以崔庆才的这个 https://ssr2.scrape.center/ 网站为例,打开时是下面这样的:

requests-verify

如果使用 requests 请求这类网站:

1
2
3
4
import requests

res = requests.get('https://ssr2.scrape.center/')
print(res.status_code)

运行结果如下:

1
requests.exceptions.SSLError: HTTPSConnectionPool(host='ssr2.scrape.center', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate (_ssl.c:1129)')))

终端抛出了 SSLError 异常

如果想要访问,可以加上 verify 参数:

1
2
3
4
import requests

res = requests.get('https://ssr2.scrape.center/', verify=False)
print(res.status_code)

运行结果如下:

1
2
3
InsecureRequestWarning: Unverified HTTPS request is being made to host 'ssr2.scrape.center'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings
warnings.warn(
200

请求成功了,但又出现了一些警告,不过我们可以屏蔽它:

1
2
3
4
5
6
import requests
from requests.packages import urllib3

urllib3.disable_warnings()
res = requests.get('https://ssr2.scrape.center/', verify=False)
print(res.status_code)

运行结果如下:

1
200