代理下載瀏覽器報(bào) “self signed certificate in certificate chain“ 如何解決?)
Playwright 經(jīng)代理下載瀏覽器報(bào) self signed certificate in certificate chain 如何解決【免費(fèi)下載鏈接】playwrightPlaywright is a framework for Web Testing and Automation. It allows testing Chromium, Firefox and WebKit with a single API.項(xiàng)目地址: https://gitcode.com/GitHub_Trending/pl/playwright在公司內(nèi)網(wǎng)中Playwright 默認(rèn)從 Microsoft 的 CDN 下載瀏覽器二進(jìn)制文件直接訪問(wèn)通常被防火墻或代理攔截。按文檔做法可以通過(guò)HTTPS_PROXY環(huán)境變量讓 Playwright 走代理下載。但如果代理對(duì)流量做了攔截并使用企業(yè)自簽的證書(shū) authorityCA做中間人下載瀏覽器時(shí)會(huì)拋出Error: self signed certificate in certificate chain。此時(shí)的問(wèn)題不在代理本身而是 Node.js 的 TLS 校驗(yàn)不信任代理的自簽 CA——解決辦法是先把企業(yè)根證書(shū)通過(guò)NODE_EXTRA_CA_CERTS環(huán)境變量注入再執(zhí)行安裝命令。本文依據(jù) docs/src/browsers.md 中 Install behind a firewall or a proxy 一節(jié)給出完整的配置與驗(yàn)證路徑。先確認(rèn)下載流量走的是代理在修復(fù)證書(shū)問(wèn)題前先確認(rèn)安裝命令確實(shí)經(jīng)過(guò)代理。文檔給出的方式是設(shè)置HTTPS_PROXY再執(zhí)行install命令下文中https://192.0.2.1是文檔中的示例代理地址替換為你所在公司的代理地址# bash HTTPS_PROXYhttps://192.0.2.1 npx playwright install:: Windows cmd set HTTPS_PROXYhttps://192.0.2.1 npx playwright install# PowerShell $Env:HTTPS_PROXYhttps://192.0.2.1 npx playwright installPython 語(yǔ)言綁定同理先安裝包再經(jīng)代理安裝瀏覽器pip install playwright HTTPS_PROXYhttps://192.0.2.1 playwright installJava 與 C# 分別通過(guò)各自的 CLI 入口設(shè)置同樣的環(huán)境變量# Java HTTPS_PROXYhttps://192.0.2.1 mvn exec:java -e -D exec.mainClasscom.microsoft.playwright.CLI -D exec.argsinstall# C# $Env:HTTPS_PROXYhttps://192.0.2.1 pwsh bin/Debug/netX/playwright.ps1 install如果命令運(yùn)行到下載階段即報(bào)出Error: self signed certificate in certificate chain說(shuō)明代理在用自簽 CA 攔截 HTTPS 請(qǐng)求進(jìn)入下一步。用 NODE_EXTRA_CA_CERTS 指向企業(yè)根證書(shū)文檔明確給出的修復(fù)方式是在安裝瀏覽器之前把自定義根證書(shū)通過(guò)NODE_EXTRA_CA_CERTS環(huán)境變量傳入。該變量的取值是企業(yè)代理 CA 根證書(shū)文件在本地磁盤(pán)上的路徑按 shell 分別設(shè)置# bash export NODE_EXTRA_CA_CERTS/path/to/cert.pem:: Windows cmd set NODE_EXTRA_CA_CERTSC:\certs\root.crt# PowerShell $Env:NODE_EXTRA_CA_CERTSC:\certs\root.crt上面的/path/to/cert.pem、C:\certs\root.crt均為文檔示例路徑必須替換為你從公司 IT 處獲取的根證書(shū)文件的實(shí)際位置.pem或.crt格式。設(shè)置完成后將代理變量與證書(shū)變量組合起來(lái)重新執(zhí)行安裝# bash證書(shū)變量 export 后與代理下載命令組合 export NODE_EXTRA_CA_CERTS/path/to/cert.pem HTTPS_PROXYhttps://192.0.2.1 npx playwright install:: Windows cmd set NODE_EXTRA_CA_CERTSC:\certs\root.crt set HTTPS_PROXYhttps://192.0.2.1 npx playwright install# PowerShell $Env:NODE_EXTRA_CA_CERTSC:\certs\root.crt $Env:HTTPS_PROXYhttps://192.0.2.1 npx playwright install證書(shū)校驗(yàn)通過(guò)后安裝命令不再拋出Error: self signed certificate in certificate chain瀏覽器會(huì)完整下載到本機(jī)。驗(yàn)證瀏覽器是否安裝成功安裝完成后用install --list查看本機(jī)所有 Playwright 安裝已擁有的瀏覽器npx playwright install --list# Python playwright install --list也可以直接查看瀏覽器緩存目錄確認(rèn)二進(jìn)制已落盤(pán)。Playwright 把瀏覽器下載進(jìn) OS 特定的緩存目錄Windows%USERPROFILE%\AppData\Local\ms-playwrightmacOS~/Library/Caches/ms-playwrightLinux~/.cache/ms-playwright文檔給出的磁盤(pán)占用示例輸出僅作示例實(shí)際數(shù)值隨版本變化du -hs ~/Library/Caches/ms-playwright/* 281M chromium-XXXXXX 187M firefox-XXXX 180M webkit-XXXX相關(guān)的兩個(gè)邊界情況下載慢導(dǎo)致連接超時(shí)文檔說(shuō)明可以通過(guò)PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT環(huán)境變量以毫秒為單位調(diào)大連接超時(shí)例如PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT120000 npx playwright install。在 Linux 上用代理安裝系統(tǒng)依賴(lài)install-deps如果以 root 運(yùn)行需要把HTTPS_PROXY一起傳進(jìn)去否則 Playwright 嘗試提權(quán)時(shí)不會(huì)把HTTPS_PROXY等環(huán)境變量傳遞給 Linux 包管理器文檔給出的寫(xiě)法是sudo HTTPS_PROXYhttps://192.0.2.1 npx playwright install-deps。最后說(shuō)明一個(gè)相鄰但不同的場(chǎng)景如果公司是在內(nèi)部制品庫(kù)托管瀏覽器二進(jìn)制而非走代理那屬于PLAYWRIGHT_DOWNLOAD_HOST的使用范疇與本文的證書(shū)問(wèn)題不是同一處理路徑本文不展開(kāi)。【免費(fèi)下載鏈接】playwrightPlaywright is a framework for Web Testing and Automation. It allows testing Chromium, Firefox and WebKit with a single API.項(xiàng)目地址: https://gitcode.com/GitHub_Trending/pl/playwright創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考