Playwright CDN 连接超时问题解决记录
2026-10-13
问题描述
现象:Playwright 安装浏览器时卡在 0%,最终报错:
Error: connect ETIMEDOUT 28.0.0.32:443
Downloading Chrome for Testing 149.0.7827.55 (playwright chromium v1228) from https://cdn.playwright.dev/builds/cft/149.0.7827.55/win64/chrome-win64.zip
原因:cdn.playwright.dev(CDN 域名)在国内网络环境下被限制或连接不稳定,无法直接建立 HTTPS 连接。
影响范围:
- Hermes Desktop 安装器内置的 Playwright 浏览器下载
- 手动执行 npx playwright install chromium(无代理时)
- 任何依赖 cdn.playwright.dev 的浏览器安装场景
解决方法
核心方案:通过 HTTP 代理连接 CDN
设置环境变量 HTTPS_PROXY 让 Playwright 走代理通道访问 CDN。
解决步骤
步骤 1:确认代理可用
curl -x http://127.0.0.1:7897 -s -o /dev/null -w "%{http_code}" --max-time 10 https://github.com
返回 200 即表示代理正常工作。
步骤 2:设置环境变量并执行安装
# Linux / macOS / WSL
export HTTPS_PROXY=http://127.0.0.1:7897
export HTTP_PROXY=http://127.0.0.1:7897
npx playwright install chromium
# Windows PowerShell
$env:HTTPS_PROXY="http://127.0.0.1:7897"
$env:HTTP_PROXY="http://127.0.0.1:7897"
npx playwright install chromium
步骤 3:验证安装结果
ls %LOCALAPPDATA%\ms-playwright\chromium-1228\
确认包含 INSTALLATION_COMPLETE 标记文件和浏览器目录结构(约 416 MB)。
注意事项
1. 环境变量 vs Git 配置的代理
npx/npm等 Node.js 工具只认HTTPS_PROXY环境变量,不认git config http.proxy- Git 有自己的代理配置系统,两者是独立的
- 需要同时配置两者才能让安装全过程都走代理
2. 锁文件问题
- Playwright 安装时会在
%LOCALAPPDATA%\ms-playwright\__dirlock创建锁文件 - 如果之前安装被中断,残留的锁文件会阻止后续所有安装操作
- 需要清理后再重试:
rm -rf %LOCALAPPDATA%\ms-playwright\__dirlock
3. 手动下载替换不生效
- 直接下载 ZIP 解压到
chromium-1228/会被 Playwright 识别为"未使用的浏览器" - 安装器会执行
Removing unused browser at ...\chromium-1228并删除 - Playwright 需要自身的注册机制(
INSTALLATION_COMPLETE等标记文件)来确认浏览器已安装 - 必须通过官方 CLI 或 SDK 安装才能被识别
4. 进度显示
- 通过代理下载时,进度条正常显示(10%、20%...100%)
- 平均下载时间约 2~5 分钟(取决于代理线路质量)
5. 代理相关注意事项
- 代理地址和端口(如
127.0.0.1:7897)根据实际使用的代理工具调整 - 确保代理支持 HTTPS CONNECT 隧道
- 某些代理可能对 CDN 流量有速度限制
可复用的解决场景
以下类型的网络问题均可复用本方案的 环境变量代理 解决策略:
| 场景 | 问题表现 | 复用方案 |
|---|---|---|
| npm install 下载包失败 | ETIMEDOUT / ERR_CONNECTION_TIMED_OUT |
设置 HTTPS_PROXY 环境变量后重试 npm install |
| pip install 下载 Python 包 | Read timed out / Connection broken |
设置 HTTPS_PROXY 或配置 pip 的 index-url 镜像源 |
| git clone / git fetch | early EOF / RPC failed; curl 92 |
设置 git config http.proxy 或 HTTPS_PROXY 环境变量 |
| curl / wget 下载文件 | 连接被重置 / 速度极慢 | 使用 -x 参数指定代理:curl -x http://proxy:port |
| 一般 GitHub 访问 | Connection reset by peer |
配置系统全局 HTTP 代理或使用 GitHub 镜像加速 |
| apt/yum 更新 | 无法连接软件源 | 配置系统代理或更换国内镜像源 |
通用解决模式
- 识别不可达的域名(如
cdn.playwright.dev、github.com等) - 检查代理是否可用(
curl -x proxy:port https://目标域名) - 将代理注入目标工具的环境变量(
HTTPS_PROXY是最通用的方案) - 如遇锁文件/缓存残留,先清理再重试
- 通过 CLI 安装比手动放置文件更可靠(确保有正确的注册信息)