anacond 或python3 報check_hostname requires server_hostname錯誤

墨抒穎發表於2021-09-29

前往墨抒穎的網站檢視純淨版本

anacond 或python3 報check_hostname requires server_hostname錯誤

在anaconda啟動過程中提示如下錯誤

anaconda-check_hostname-requires-server_hostname-error.png

或者你可以在python3中看到類似的錯誤

python-error.jpg

錯誤解析

出現問題的主要原因是Urllib3 的 1.26.4 版本中存在一個錯誤。

在 Python 3.4 和 2.7.9 中,SSLContext 上有一個 check_hostname 屬性,它將讓 SSLContext 例項處理檢查 do_handshake 中的主機名。urllib3 在可能的情況下依靠它而不是自己進行檢查會很好。我認為這與將 SSLContext 用作 TLS 內容的"bag of configuration"的其他內容相得益彰。這可以通過確定 SSLContext 物件是否具有 check_hostname 屬性來檢測。有一個缺點,這依賴於將主機名作為 SSLContext().wrap_socket(server_name=)的一部分傳遞。最初這僅在 OpenSSL 啟用了 SNI 時才有效。但是即使未啟用 SNI,Python 3.4.3 和 2.7.9 也會接受 server_name。

解決方案

1. URLLIB3 降低到1.25.8以下urllib3 == 1.25.8

urllib3-lovered-version.jpg

2. 請求方法加驗證=假引數

response = requests.request('GET', 'http://xxx.xxxx.com', verify=False)

直接執行會報如下警告:

InsecureRequestWarning:正在發出未經驗證的 HTTPS 請求。強烈建議新增證照驗證。請參閱:https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings InsecureRequestWarning,

3. 在請求請求前,新增如下程式碼,即可解決以上警告

Urllib3.disable_warnings() 或 Requests.Packages.urllib3.disable_warnings()

4. 關掉代理

close-agent.png

相關文章

liunx下遠端anaconda 搭建/構建環境,連線,移植/拷貝環境
Python3 獲取任意貼吧 最新帖子製作詞雲圖儲存為markdown

相關文章