7. https請求, 接口報SSLError

原文鏈接:https://requests.kennethreitz.org//zh_CN/latest/user/advanced.html#advanced
# -*-coding:utf8-*-
"""
=========================================
author: Lujier           time: 2019/10/16
E-mail: [email protected]
==========================================
"""
import requests

# 1.  發送get請求
baidu_url = "https://www.baidu.com"
r = requests.get(url=baidu_url)

# 2. 獲取響應狀態碼
# print(r.status_code)
# 3. 獲取cookies
print(r.cookies)
print(r.headers)
print(r.request)

運行代碼報如下錯誤:

requests.exceptions.SSLError: HTTPSConnectionPool(host='www.baidu.com', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:833)'),))
 

原因是:Requests 可以爲 HTTPS 請求驗證 SSL 證書,就像 web 瀏覽器一樣。SSL 驗證默認是開啓的,如果證書驗證失敗,Requests 會拋出 SSLError

baidu_url = "https://www.baidu.com"
r = requests.get(url=baidu_url)

在該域名上我沒有設置 SSL,默認會驗證SSL, verify 是設置爲 True 的。選項 verify 僅應用於主機證書

所以,解決驗證失敗的問題,我們可以繞過驗證

baidu_url = "https://www.baidu.com"
r = requests.get(url=baidu_url, verify=False)

這樣子,問題就解決了

 

不過,這種做法並不是萬能解決SslError問題的,大家如果還有其他疑問也可參考:

Request高級用法 : https://requests.kennethreitz.org//zh_CN/latest/user/advanced.html#advanced

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章