文章目錄
- Python Selenium 忽略證書錯誤和忽略
- 🔧 **一、忽略 SSL 證書錯誤**
- 1. **基礎配置(適用于 Chrome/Firefox)**
- 2. **高級場景:指定證書指紋**
- 3. **瀏覽器兼容方案**
- 🔇 **二、隱藏 DevTools 監聽提示**
- 1. **禁用控制臺日志輸出**
- 2. **移除瀏覽器界面提示**
- 3. **無頭模式優化**
- ? **三、完整代碼示例**
- 💡 **四、注意事項**
Python Selenium 忽略證書錯誤和忽略
之前一篇博客《Python Selenium 搜索和點擊》會出現SSL證書錯誤:
[502260:506160:0626/153236.677:ERROR:net\socket\ssl_client_socket_impl.cc:878] handshake failed; returned -1, SSL error code 1, net_error -103
我們可以通過瀏覽器選項忽略該錯誤。
🔧 一、忽略 SSL 證書錯誤
當訪問使用自簽名證書或過期證書的 HTTPS 網站時,可通過以下配置忽略瀏覽器警告:
1. 基礎配置(適用于 Chrome/Firefox)
from selenium import webdriver
from selenium.webdriver.chrome.options import Optionschrome_options = Options()
# 忽略所有證書錯誤
chrome_options.add_argument('--ignore-certificate-errors')
# 忽略 SSL 相關錯誤(如握手失敗)
chrome_options.add_argument('--ignore-ssl-errors')driver = webdriver.Chrome(options=chrome_options)
driver.get("https://example.com")
2. 高級場景:指定證書指紋
若需信任特定證書(如內部 CA),可添加指紋驗證:
chrome_options.add_argument('--ignore-certificate-errors-spki-list=<your_cert_fingerprint>')
chrome_options.add_argument('--ca-certs=path/to/ca.pem') # 指定證書路徑
獲取指紋命令:
openssl x509 -in ca.pem -pubkey -noout | openssl pkey -pubin -outform der | openssl dgst -sha256 -binary | openssl base64
3. 瀏覽器兼容方案
- Firefox:
options = webdriver.FirefoxOptions() options.accept_untrusted_certs = True
- IE:
caps = webdriver.DesiredCapabilities.INTERNETEXPLORER caps['acceptSslCerts'] = True
🔇 二、隱藏 DevTools 監聽提示
DevTools listening on ws://...
是 Chrome 的調試端口信息,可通過以下方式屏蔽:
1. 禁用控制臺日志輸出
chrome_options.add_argument('--log-level=3') # 關閉所有非致命日志
chrome_options.add_experimental_option('excludeSwitches', ['enable-logging']) # 禁止 Selenium 自身日志
2. 移除瀏覽器界面提示
# 隱藏 "Chrome 正受到自動測試軟件控制" 提示欄
chrome_options.add_argument('--disable-infobars')
# 禁用自動化控制特征(減少被檢測風險)
chrome_options.add_argument('--disable-blink-features=AutomationControlled')
chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])
3. 無頭模式優化
若使用無頭模式,需額外關閉沙箱和 GPU:
chrome_options.add_argument('--headless=new')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-gpu')
? 三、完整代碼示例
from selenium import webdriver
from selenium.webdriver.chrome.options import Optionsdef init_driver():chrome_options = Options()# 忽略證書錯誤chrome_options.add_argument('--ignore-certificate-errors')chrome_options.add_argument('--ignore-ssl-errors')# 隱藏 DevTools 提示chrome_options.add_argument('--log-level=3')chrome_options.add_argument('--disable-infobars')chrome_options.add_argument('--disable-blink-features=AutomationControlled')chrome_options.add_experimental_option('excludeSwitches', ['enable-automation', 'enable-logging'])# 無頭模式配置(可選)chrome_options.add_argument('--headless=new')chrome_options.add_argument('--no-sandbox')chrome_options.add_argument('--disable-gpu')return webdriver.Chrome(options=chrome_options)driver = init_driver()
driver.get("https://example.com")
print("頁面標題:", driver.title)
driver.quit()
💡 四、注意事項
- 安全風險:
- 忽略證書錯誤僅限測試環境,生產環境需使用有效證書。
- 反檢測策略:
- 部分網站(如 Cloudflare)會檢測自動化特征,可結合
debuggerAddress
復用已有瀏覽器會話。
- 部分網站(如 Cloudflare)會檢測自動化特征,可結合
- Selenium 4 兼容性:
- 若
accept_insecure_certs=True
失效,優先使用add_argument
參數。
- 若
通過上述配置,既可解決證書驗證問題,又能保持控制臺輸出簡潔,適用于爬蟲、自動化測試等場景。