今天我在無頭驅動的列印服務器(RaspPi / python3)中遇到了一個奇怪的行為。
我需要從 Web 服務器下載 PDF 或渲染的 Python 腳本。直到現在我確實使用過:
src = "https://ssl.server.tld/path/to/file.pdf"
target = "/path/to/saved.pdf"
os.system("wget -O " target " " src)
從現在開始我使用:
with urllib.request.urlopen(src) as response, open(target, 'wb') as out_file:
data = response.read()
out_file.write(data)
問題是:顯然幾天后,SSL 證書已過時。該os.system()版本拋出一個非 PYTHON 錯誤
https://ssl.***.de/config_page.py
Aufl?sen des Hostnamen ?ssl.***.de (ssl.***s.de)?... 176.***.***.10
Verbindungsaufbau zu ssl.***.de (ssl.***.de)|176.***.***.10|:443... verbunden.
FEHLER: Dem Zertifikat von ?ssl.***.de? wird nicht vertraut.
FEHLER: Das Zertifikat von ?ssl.***.de? ist abgelaufen.
正如我所提到的,沒有 python 錯誤或例外,我想要的檔案正在下載,但大小為 0 位元組。只有除錯器在控制臺輸出中顯示上面參考的文本。
該urllib版本按需要運行,沒有錯誤,沒有控制臺輸出,并且檔案正確。
我錯過了什么?這是一種特殊的安全行為os.system()嗎?
感謝您的回答。
uj5u.com熱心網友回復:
如您所知,wget正在驗證證書,而urlopen不是。
如果您想wget跳過檢查證書,請添加引數--no-check-certificate
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/313713.html
