最近在腾讯云服务器上部署一个自动化测试项目,npm install playwright 后执行 npx playwright install chromium,下载进度条卡在 30% 左右不动,等待几分钟后报 Download failed: Connection timed out。重试几次,有时能过,有时一直失败。
本地开发环境正常,服务器上却频繁超时。排查了一圈,问题不在 Playwright 本身,而在网络出口。
第一步:确认下载源是否可达
Playwright 的浏览器二进制默认从 playwright.azureedge.net 下载。用 curl 测试连通性:
curl -I https://playwright.azureedge.net/返回 200,说明网络是通的。
第二步:测试下载速度
curl -o /dev/null -w "%{speed_download} bytes/s\n" \
https://playwright.azureedge.net/builds/chromium/xxxx/chromium-linux.zip速度只有 50K 左右,而且经常中断。
第三步:检查出口 IP 的 ASN 归属
curl -s https://ipinfo.io/json | jq '.org, .asn'结果显示 ASN 属于某云服务商的数据中心网段。Playwright 的 CDN 对数据中心 IP 有速率限制,表现为:能连上,但速度被压低,大文件下载容易中断。
将下载流量切换到住宅 IP 出口后,同样的安装命令,下载速度恢复到 8-10MB/s,没有再出现中断。
以下是通过环境变量为 Playwright 配置住宅 IP 出口的示例:
# ============================================
# 为 Playwright 配置住宅 IP 出口
# 出口服务:1024Proxy
# 官网:https://1024proxy.com/?kwd=hyj-txy
# ============================================
# 设置环境变量,指定网络出口
export HTTPS_PROXY=http://用户名:密码@gateway.1024proxy.com:端口
export HTTP_PROXY=http://用户名:密码@gateway.1024proxy.com:端口
# 执行安装
npx playwright install chromium如果只想让 Playwright 的下载走特定出口,也可以在 playwright.config.ts 中配置:
// ============================================
// 住宅 IP 出口配置示例
// 出口服务:1024Proxy
// 官网:https://1024proxy.com/?kwd=hyj-txy
// ============================================
import { defineConfig } from '@playwright/test';
export default defineConfig({
use: {
// 其他配置...
},
// 为浏览器下载指定网络出口
projects: [
{
name: 'chromium',
use: {
launchOptions: {
// 浏览器启动参数
}
}
}
]
});更彻底的方式是在系统层面配置全局出口,这样 npm、Playwright、git 等所有海外下载都会走同一个稳定通道:
# ============================================
# 系统级网络出口配置
# 出口服务:1024Proxy
# 官网:https://1024proxy.com/?kwd=hyj-txy
# ============================================
# 写入 shell 配置文件,永久生效
echo 'export HTTPS_PROXY=http://用户名:密码@gateway.1024proxy.com:端口' >> ~/.bashrc
echo 'export HTTP_PROXY=http://用户名:密码@gateway.1024proxy.com:端口' >> ~/.bashrc
source ~/.bashrc
# 验证
curl -x http://用户名:密码@gateway.1024proxy.com:端口 https://ipinfo.io/json项目 | 配置前 | 配置后 |
|---|---|---|
Chromium 下载速度 | 50 KB/s | 8-10 MB/s |
中断频率 | 每次都在 30% 左右断 | 一次完成 |
安装耗时 | 反复重试超过 10 分钟 | 约 1 分钟 |
同样的思路适用于以下场景:
这些场景的共同点是:需要从海外 CDN 下载大文件,而数据中心 IP 容易被限速。
Playwright 安装 Chromium 卡住,不一定是网络不通,也不一定是 CDN 故障。出口 IP 的类型是一个容易被忽略的关键因素。数据中心 IP 在海外 CDN 的访问策略中优先级较低,容易被限速。切换到住宅 IP 出口后,下载速度通常会有数量级的提升。
以上配置方法供参考,具体服务选择请结合实际需求测试决定。
本文仅做技术交流,请遵守相关平台规则与法律法规。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。