標籤

4GL (1) 人才發展 (10) 人物 (3) 太陽能 (4) 心理 (3) 心靈 (10) 文學 (31) 生活常識 (14) 光學 (1) 名句 (10) 即時通訊軟體 (2) 奇狐 (2) 爬蟲 (1) 音樂 (2) 產業 (5) 郭語錄 (3) 無聊 (3) 統計 (4) 新聞 (1) 經濟學 (1) 經營管理 (42) 解析度 (1) 遊戲 (5) 電學 (1) 網管 (10) 廣告 (1) 數學 (1) 機率 (1) 雜趣 (1) 證券 (4) 證券期貨 (1) ABAP (15) AD (1) agentflow (4) AJAX (1) Android (1) AnyChart (1) Apache (14) BASIS (4) BDL (1) C# (1) Church (1) CIE (1) CO (38) Converter (1) cron (1) CSS (23) DMS (1) DVD (1) Eclipse (1) English (1) excel (5) Exchange (4) Failover (1) Fedora (1) FI (57) File Transfer (1) Firefox (3) FM (2) fourjs (1) Genero (1) gladiatus (1) google (1) Google Maps API (2) grep (1) Grub (1) HR (2) html (23) HTS (8) IE (1) IE 8 (1) IIS (1) IMAP (3) Internet Explorer (1) java (4) JavaScript (22) jQuery (6) JSON (1) K3b (1) ldd (1) LED (3) Linux (117) Linux Mint (4) Load Balance (1) Microsoft (2) MIS (2) MM (51) MSSQL (1) MySQL (27) Network (1) NFS (1) Office (1) OpenSSL (1) Oracle (126) Outlook (3) PDF (6) Perl (60) PHP (33) PL/SQL (1) PL/SQL Developer (1) PM (3) Postfix (2) postfwd (1) PostgreSQL (1) PP (50) python (5) QM (1) Red Hat (4) Reporting Service (28) ruby (11) SAP (234) scp (1) SD (16) sed (1) Selenium (3) Selenium-WebDriver (5) shell (5) SQL (4) SQL server (8) sqlplus (1) SQuirreL SQL Client (1) SSH (2) SWOT (3) Symantec (2) T-SQL (7) Tera Term (2) tip (1) tiptop (24) Tomcat (6) Trouble Shooting (1) Tuning (5) Ubuntu (37) ufw (1) utf-8 (1) VIM (11) Virtual Machine (2) VirtualBox (1) vnc (3) Web Service (2) wget (1) Windows (19) Windows (1) WM (6) Xvfb (2) youtube (1) yum (2)

2024年10月18日 星期五

Python certificate_verify_failed-解決方法

 https://www.jeffcodingmentor.com/python%E5%AD%B8%E7%BF%92/certificate_verify_failed-%E8%A7%A3%E6%B1%BA%E6%96%B9%E6%B3%95

 

CERTIFICATE_VERIFY_FAILED 解決方法

for Windows + Anaconda + Python 3

用 Python requests 要到台北科技教育網抓取網站資料時,會遇到 SSL: CERTIFICATE_VERIFY_FAILED 錯誤,而瀏覽器(如Chrome)都沒有問題,原因是環境中 (windows + anaconda) 沒有台北科技教育網 SSL 所要的憑證

import requests

requests.get("https://techpro.tp.edu.tw/manager/cms/taipei-edu/scartch.html")


SSLError: HTTPSConnectionPool(host='techpro.tp.edu.tw', port=443): Max retries exceeded with url: /manager/cms/taipei-edu/scartch.html (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)'),))

如果只是測試,那關掉認證就可以解決,但還是有警告提示。

requests.get("https://techpro.tp.edu.tw/manager/cms/taipei-edu/scartch.html", verify=False)


C:\Users\ManaTsao\.conda\envs\tensorflowenv\lib\site-packages\urllib3\connectionpool.py:986: InsecureRequestWarning: Unverified HTTPS request is being made to host 'techpro.tp.edu.tw'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings

InsecureRequestWarning,

若要徹底解決問題,就要將憑證加到環境中。步驟如下:

1. 先更新 certifi :

在 andaconda prompt 中執行

pip install certifi

pip install -U pyopenssl

若此時再執行 requests.get 沒有出錯,那就不必繼續下面的步驟。

2. 找出台北科技教育網所用的認證:

在 Chrome 中打開台北教育網後,按 F12 進入開發人員工具模式,並選擇 Security


找到用的是 RapidSSL RSA CA 2018。點 View Certificate 進去找一下是哪一家公司發行的,是 digicert 這家公司。

3. 接著到 Google 搜尋 “RapidSSL RSA CA 2018 download” 並找到 digicert 的網頁


注意是digicert的網頁

一路可以找到下載的地方



點選 Download PEM 下載 RapidSSLRSACA2018.crt.pem , 用文字編輯器打開,大概長這樣:


RapidSSLRSACA2018.crt.pem 的內容

4. 回到 Jupyter Notebook 執行

import certifi

certifi.where()

執行結果:

'C:\\Users\\ManaTsao\\.conda\\envs\\tensorflowenv\\lib\\site-packages\\certifi\\cacert.pem'

找到該檔案,也用文字編輯器打開,內容會像是這樣:


cacert.pem 的內容

5. 接著把網頁上 Rapid SSL RSA 的說明,copy 到 cacert.pem 的最下方,再 copy RapidSSLRSACA2018.crt.pem 裡面所有的內容,結果如下:


加上 RapidSSLRSACA2018.crt.pem 的結果

完成後記得存檔

6. 回到 Jupyter Notebook 重新執行

import requests

requests.get("https://techpro.tp.edu.tw/manager/cms/taipei-edu/scartch.html")

就不會有錯誤或警告了,結果如下:

<Response [200]>

第一次發此類文,只是把這幾天受的苦、網路爬的文做個記錄,希望能幫到大家。Bye now~

************************************************************************

有另一個方法可以試試:

使用Browser 的下載憑證,載網址左邊有一鎖頭小圖示,點進去後下載發行公司的憑證