Python發(fā)送請求SSL驗(yàn)證設(shè)置的幾種方案
這個錯誤通常是由于SSL/TLS握手失敗導(dǎo)致的,可能原因包括證書驗(yàn)證問題、不兼容的加密協(xié)議或網(wǎng)絡(luò)連接中斷。以下是幾種解決方案,按推薦順序排列:
方案一:臨時禁用SSL驗(yàn)證(快速測試)
response = requests.get(url=url, headers=header, verify=False)
注意:生產(chǎn)環(huán)境不推薦長期禁用驗(yàn)證,存在安全風(fēng)險
方案二:指定TLS版本(推薦)
response = requests.get(
url=url,
headers=header,
ssl_version='TLSv1_2' # 顯式指定TLS 1.2版本
)
方案三:添加重試機(jī)制
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.retry import Retry
session = requests.Session()
retry = Retry(total=3, backoff_factor=0.5)
adapter = HTTPAdapter(max_retries=retry)
session.mount('https://', adapter)
response = session.get(url=url, headers=header)
方案四:檢查本地環(huán)境
- 更新證書庫:運(yùn)行
pip install --upgrade certifi - 檢查系統(tǒng)時間:確保系統(tǒng)時間準(zhǔn)確
- 防火墻排查:臨時禁用防火墻/安全軟件測試
方案五:完整改進(jìn)代碼
import os
import requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
url = 'https://www.hainan.gov.cn/.../files/eae7d9e018bf468794e87e690eef3a95.zip'
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
"Accept": "*/*",
}
# 創(chuàng)建帶重試的Session
session = requests.Session()
retry = Retry(total=3, backoff_factor=1, status_forcelist=[500, 502, 503, 504])
adapter = HTTPAdapter(max_retries=retry)
session.mount("https://", adapter)
try:
# 添加超時參數(shù)
response = session.get(url, headers=headers, timeout=10, verify=True)
response.raise_for_status()
# 確保目錄存在
os.makedirs('test_file', exist_ok=True)
with open('test_file/test2.zip', 'wb') as f:
f.write(response.content)
except requests.exceptions.RequestException as e:
print(f"請求失敗: {type(e).__name__}: {e}")
except Exception as e:
print(f"其他錯誤: {e}")
補(bǔ)充建議:
- 先在瀏覽器測試:手動訪問該URL確認(rèn)是否可下載
- 檢查文件路徑:確保
test_file目錄存在 - 嘗試簡單請求:先用
curl或Postman測試基本連接性 - 更新依賴庫:
pip install --upgrade requests urllib3
如果問題持續(xù)存在,可能是服務(wù)器端配置問題(如僅支持特定TLS版本),建議聯(lián)系網(wǎng)站管理員確認(rèn)支持的加密協(xié)議。
到此這篇關(guān)于Python發(fā)送請求SSL驗(yàn)證設(shè)置的幾種方案的文章就介紹到這了,更多相關(guān)Python SSL驗(yàn)證設(shè)置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)視頻下載與合成的示例代碼
這篇文章主要為大家詳細(xì)介紹了Python是如何實(shí)現(xiàn)視頻的下載以及合成的,文中的實(shí)現(xiàn)步驟講解詳細(xì),感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下吧2022-04-04
scrapy結(jié)合selenium解析動態(tài)頁面的實(shí)現(xiàn)
這篇文章主要介紹了scrapy結(jié)合selenium解析動態(tài)頁面的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
10個Python常用的損失函數(shù)及代碼實(shí)現(xiàn)分享
損失函數(shù)是一種衡量模型與數(shù)據(jù)吻合程度的算法。損失函數(shù)測量實(shí)際測量值和預(yù)測值之間差距的一種方式。本文為大家總結(jié)了10個常用的損失函數(shù)及Python代碼實(shí)現(xiàn),需要的可以參考一下2022-09-09
解決tf.keras.models.load_model加載模型報錯問題
這篇文章主要介紹了解決tf.keras.models.load_model加載模型報錯問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06
python OpenCV學(xué)習(xí)筆記之繪制直方圖的方法
本篇文章主要介紹了python OpenCV學(xué)習(xí)筆記之繪制直方圖的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-02-02
數(shù)據(jù)挖掘之Apriori算法詳解和Python實(shí)現(xiàn)代碼分享
這篇文章主要介紹了數(shù)據(jù)挖掘之Apriori算法詳解和Python實(shí)現(xiàn)代碼分享,本文先是對Apriori算法做了詳細(xì)介紹,然后給出了Python版實(shí)現(xiàn)代碼,需要的朋友可以參考下2014-11-11

