如何在 Playwright 中设置代理(浏览器级与 Per-Context 认证)
更新于:
Playwright 原生支持 HTTP 代理认证(server、username、password),适用于 Chromium、Firefox 和 WebKit,无需安装任何浏览器扩展或第三方封装库。更强大的是,Playwright 的 Per-Context Proxy(独立上下文代理)功能允许单个浏览器实例同时运行数十个相互隔离的 BrowserContext 会话,每个会话均绑定各自独立的 VinaProxy 静态 IP。
proxy={ server: 'http://ip:port', username: 'user', password: 'pass' }- 1 个IP₫40,000
- 5+ 个IP₫35,000
- 10+ 个IP₫25,000
- 20+ 个IP₫25,000
- 50+ 个IP₫25,000
- 100+ 个IP₫25,000
- 200+ 个IP₫25,000
- 500+ 个IP₫25,000
- 1000+ 个IP₫22,000
- 2000+ 个IP₫20,000
- 1 个IP₫50,000
- 3+ 个IP₫40,000
- 5+ 个IP₫40,000
- 10+ 个IP₫32,000
- 50+ 个IP₫30,000
- 100+ 个IP₫30,000
- 200+ 个IP₫30,000
- 500+ 个IP₫25,000
Playwright 代理对象配置参数
无论是在 chromium.launch({ proxy }) 中进行全局配置,还是在 browser.newContext({ proxy }) 中为单独会话配置,均使用统一的 proxy 配置对象:
| Playwright 属性 | 取值格式 | 技术说明 |
|---|---|---|
server | 'http://ip:port' | 仅包含主机和端口,必须附带 http:// 前缀 |
username | 'user' | 来自 VinaProxy 控制台的代理用户名 |
password | 'pass' | 代理密码(Playwright 原生处理 HTTP 407 认证) |
bypass | 'localhost,127.0.0.1' | 可选参数,以逗号分隔的跳过代理的目标主机列表 |
高效运行多 IP BrowserContext 的最佳实践
- 在 Windows 和 macOS 上,若打算在各
browser.newContext()中单独覆盖proxy,必须在chromium.launch()中传入占位参数proxy: { server: 'http://per-context' }激活 Chromium 动态路由 - 在
browser.newContext()中将timezoneId与locale与代理 IP 所在地理位置保持一致,确保请求头与 JavaScriptIntlAPI 匹配目标地区 - 利用
page.route()拦截并中止不必要的图片与字体资源请求,显著提高数据采集吞吐量
操作步骤
- 1
获取 IP、端口、用户名与密码
从 VinaProxy 控制台复制你的
ip:port:user:pass认证凭据。 - 2
将 proxy 对象传入 newContext()
调用
const context = await browser.newContext({ proxy: { server: 'http://ip:port', username: 'user', password: 'pass' } })。 - 3
对齐 timezoneId 和 locale 设置
配置与代理所在地区相符的
timezoneId与locale(例如America/New_York或Asia/Ho_Chi_Minh)。 - 4
在新建页面中验证出口 IP
创建新标签页
const page = await context.newPage()并请求https://vinaproxy.com/api/my-ip查看返回的公网 IP。
常见问题
为什么 Playwright 报错 'Proxy is only supported when browser is launched with a proxy'?
在 Windows 和 macOS 上,Chromium 要求在启动时提供全局代理启动参数,之后才允许每个上下文覆盖代理。请使用 chromium.launch({ proxy: { server: 'http://per-context' } }) 启动浏览器,再在各 browser.newContext({ proxy }) 中传入真实代理。
Playwright 的 Firefox 和 WebKit 核心也支持 VinaProxy 代理吗?
是的。在 Node.js 和 Python 环境中,Chromium、Firefox 和 WebKit 均支持完全一致的 proxy: { server, username, password } 语法。
无头模式运行 Playwright 浏览器会产生流量计费吗?
不会。所有 VinaProxy 独享 IPv4 与静态 ISP 套餐均包含无限制月度流量。
使用独享静态 IP 扩展 Playwright BrowserContext 会话
覆盖全球 7 大区域的高速无限制 HTTP(S) 静态代理。
购买 Playwright 代理