訪問 HTTPS 網站時的 SSL 錯誤解決方案

金木大大大發表於2023-11-17

在使用Python的requests庫進行HTTPS請求時,有時候會出現SSL錯誤,特別是在macOS和Python 3.10的環境下,且僅在使用requests.get方法並設定verify引數為False時出現。具體的錯誤資訊是:`SSLError: [SSL: BAD_ECPOINT] bad ecpoint (_ssl.c:997)`。這個問題通常發生在訪問某些特定的網站時,例如",並且還設定了headers引數為{"User-Agent":"firefox"}。


要解決這個問題,我們可以採用以下解決方案:


```python

import ssl

ssl._create_default_https_context = ssl._create_unverified_context

import requests


response = requests.get(", verify=False, headers={"User-Agent": "firefox"})

```


解決方法的核心是透過匯入ssl模組,並將`ssl._create_default_https_context`函式設定為`ssl._create_unverified_context`,這樣就可以繞過SSL證照驗證。然後,我們可以使用requests.get方法來訪問目標網站",同時將verify引數設定為False,headers引數設定為{"User-Agent":"firefox"}。這樣,就可以成功解決SSL錯誤問題。


然而,需要注意的是,這種方法雖然可以解決SSL錯誤問題,但會導致安全性問題,因為我們沒有驗證SSL證照。在實際使用中,建議採取以下步驟來確保安全性:


1. 驗證SSL證照可信性: 在使用這種繞過SSL驗證的方法之前,應該先檢查目標網站的SSL證照,確保它是可信的。可以使用瀏覽器或其他工具來檢視證照的資訊,包括頒發機構和證照有效期等。


2. 更新證照或採用其他方法: 如果目標網站的SSL證照不可信或已過期,應該考慮更新證照或採用其他驗證SSL證照的方法。可以聯絡網站管理員或證照頒發機構獲取支援。


3. 謹慎使用繞過方法:只有在確保目標網站的SSL證照問題已經解決或者是可信的情況下,才應該使用繞過SSL驗證的方法。不建議在不明確安全性的情況下使用此方法。


總之,雖然上述方法可以解決Python在macOS和Python 3.10環境下使用requests庫訪問HTTPS網站時的SSL錯誤問題,但在實際應用中,安全性應該始終放在首要位置,確保與目標網站建立的連線是安全的。如有疑慮,應該與網站管理員或安全專家進行進一步的溝通和解決方案討論。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70032566/viewspace-2995824/,如需轉載,請註明出處,否則將追究法律責任。

相關文章