Python發(fā)送請求SSL驗證設(shè)置的幾種方案
這個錯誤通常是由于SSL/TLS握手失敗導致的,可能原因包括證書驗證問題、不兼容的加密協(xié)議或網(wǎng)絡(luò)連接中斷。以下是幾種解決方案,按推薦順序排列:
方案一:臨時禁用SSL驗證(快速測試)
response = requests.get(url=url, headers=header, verify=False)
注意:生產(chǎn)環(huán)境不推薦長期禁用驗證,存在安全風險
方案二:指定TLS版本(推薦)
response = requests.get(
url=url,
headers=header,
ssl_version='TLSv1_2' # 顯式指定TLS 1.2版本
)
方案三:添加重試機制
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)境
- 更新證書庫:運行
pip install --upgrade certifi - 檢查系統(tǒng)時間:確保系統(tǒng)時間準確
- 防火墻排查:臨時禁用防火墻/安全軟件測試
方案五:完整改進代碼
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}")
補充建議:
- 先在瀏覽器測試:手動訪問該URL確認是否可下載
- 檢查文件路徑:確保
test_file目錄存在 - 嘗試簡單請求:先用
curl或Postman測試基本連接性 - 更新依賴庫:
pip install --upgrade requests urllib3
如果問題持續(xù)存在,可能是服務(wù)器端配置問題(如僅支持特定TLS版本),建議聯(lián)系網(wǎng)站管理員確認支持的加密協(xié)議。
到此這篇關(guān)于Python發(fā)送請求SSL驗證設(shè)置的幾種方案的文章就介紹到這了,更多相關(guān)Python SSL驗證設(shè)置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
scrapy結(jié)合selenium解析動態(tài)頁面的實現(xiàn)
這篇文章主要介紹了scrapy結(jié)合selenium解析動態(tài)頁面的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-09-09
10個Python常用的損失函數(shù)及代碼實現(xiàn)分享
損失函數(shù)是一種衡量模型與數(shù)據(jù)吻合程度的算法。損失函數(shù)測量實際測量值和預(yù)測值之間差距的一種方式。本文為大家總結(jié)了10個常用的損失函數(shù)及Python代碼實現(xiàn),需要的可以參考一下2022-09-09
解決tf.keras.models.load_model加載模型報錯問題
這篇文章主要介紹了解決tf.keras.models.load_model加載模型報錯問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06
數(shù)據(jù)挖掘之Apriori算法詳解和Python實現(xiàn)代碼分享
這篇文章主要介紹了數(shù)據(jù)挖掘之Apriori算法詳解和Python實現(xiàn)代碼分享,本文先是對Apriori算法做了詳細介紹,然后給出了Python版實現(xiàn)代碼,需要的朋友可以參考下2014-11-11

