更新时间:2023-09-28 来源:黑马程序员 浏览量:
大多数网站中都加人了SSL证书,以实现数据信息在浏览器和服务器之间的加密传输,保证双方传递信息的安全性。SSL证书是一种数字证书,类似于驾驶证、护照和营业执照的电子副本,由受信任的数字证书颁发机构CA在验证服务器身份后颁发,具有服务器身份验证和数据传输加密功能。
当使用Requests 调用请求函数发送请求时,由于请求函数的verify参数的默认值为True.所以每次请求网站默认都会进行SSL证书的验证。不过,有些网站可能没有购买SSL证书,或者SSL证书失效。程序访问这类网站时会因为找不到SSL证书而抛出SSLError异常。例如,使用Requests请求国家数据网站,具体代码如下。
import requests base url = 'https://data.stats.gov.cn/' header = { 'User-Agent': 'Mozilla/5.0 (Nindows NT 6.1; Win64; x64' 'AppleWebKit/537.36 (KHTML, like Gecko)' 'Chrome/90.0.4430.212 Safar1/537.36') # 发送GET请求 response = requests.get (base_url, headers=header) print (response.status_code)运行代码,程序抛出SSLError异常,具体内容如下。
...... requests.exceptions.SSLError: HTTPSConnectionPool (host='data.stats.gov.cn', port= 443): Max retries exceeded with url: / (Caused by SSLError(SSLCert Verification Error(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1108)')))
这时需要主动关闭SSL验证,即在调用getO函数时将verify参数设置为False,代码如下。
C:\Users\admin\AppData\Roaming\Python\Python38\site-packages\ur11ib3\ connectionpool.py:981: InsecureRequestNarning: Unverified HTTPS request is being made to host 'data.stata.gov.cn'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage. htmltssl-warnings
这时,如果不希望收到警告信息,则可以采用如下方式消除警告信息。
import urllib3 urllib3.disable warnings()
再次运行程序,发现控制台中不再输出上面的警告信息。