无需 KYC——无需身份证、无需自拍、无需证件 · 用加密货币支付:BTC, USDT, USDC, ETH, SOL, LTC · 最低充值 US$25
语言: 简体中文
查看价格

指南 · Playwright

Python 和 Node.js 中的 Playwright 静态代理设置

将静态 IP 的服务器、用户名和密码传递给浏览器或每个上下文,然后在正式工作前检查出口 IP。

最后更新:

快速回答

如何在 Playwright 中设置静态代理?

对于 Playwright 静态代理,将包含服务器、用户名和密码的代理传递给 chromium.launch(),或者为每个浏览器上下文分配自己的代理,以便在一个浏览器中运行多个静态 IP。然后打开 api.ipify.org 检查出口 IP。SteadyProxy 静态 IP 租期为 30 天,截至 2026 年 10 月每个 IP 起价 US$2.24,无需 KYC,支持加密货币支付。

关键信息有哪些?

启动选项proxy = server, username, password(HTTP 代理登录)
按上下文browser.newContext({ proxy }) 让每个上下文拥有独立的静态 IP
SOCKS5Playwright 支持此用法;文档说明了 HTTP(S) 代理的用户名和密码,因此 SOCKS5 需配合 IP 白名单使用
SteadyProxy 身份验证用户名和密码,或 IP 白名单(最多 10 个 IP)
检查api.ipify.org 用于查询出口 IP,ipinfo.io/json 用于查询网络信息
代码检查Python 已通过 py_compile,Node.js 已通过 node --check,检查日期为 2026 年 10 月 19 日(Playwright 1.60)

如何在 Playwright for Python 中设置静态代理?

当整个浏览器需要使用同一个静态 IP 时,在浏览器启动时设置代理。server 填写你的 IP 对应的 HTTP 地址,格式为 http://host:port;用户名和密码填写在各自的字段中,不要放在 URL 里。Playwright 会替你响应代理的登录请求,因此不会弹出登录框。该示例先访问 api.ipify.org,再访问 ipinfo.io/json,并打印两个结果。

playwright_sync.py:整个浏览器使用一个静态 IP
"""Playwright (Python) through one static proxy.

Install: python -m pip install playwright && python -m playwright install chromium
"""
import os

from playwright.sync_api import sync_playwright

PROXY = {
    "server": "http://" + os.environ.get("PROXY_HOST", "gw.steadyproxy.com") + ":"
    + os.environ.get("PROXY_PORT", "7777"),
    "username": os.environ.get("PROXY_USER", "USERNAME"),
    "password": os.environ.get("PROXY_PASS", "PASSWORD"),
}

with sync_playwright() as p:
    browser = p.chromium.launch(proxy=PROXY)
    context = browser.new_context()
    page = context.new_page()
    page.goto("https://api.ipify.org?format=json", timeout=30000)
    print("Exit IP:", page.inner_text("body"))
    page.goto("https://ipinfo.io/json", timeout=30000)
    print("Network:", page.inner_text("body"))
    browser.close()

如何在一个 Playwright 浏览器中使用多个静态 IP?

为每个 IP 创建一个浏览器上下文。根据 Playwright 文档,代理可以设置为整个浏览器使用,也可以为每个浏览器上下文单独设置。各上下文不共享 cookie 和存储,因此每个上下文就像在各自 IP 上运行的独立配置。Node.js 示例会循环遍历两个 IP,在每个上下文中访问 api.ipify.org,并在使用后关闭该上下文。请用仪表盘中每个 IP 的主机、端口、用户名和密码填充该列表。

playwright_contexts.mjs:每个静态 IP 一个上下文(Node.js)
// Playwright (Node.js): one browser, one context per static IP.
// Install: npm i playwright && npx playwright install chromium
import { chromium } from 'playwright';

// Copy host, port, username and password of each IP from your dashboard.
const staticIps = [
  { name: 'client-a', host: 'gw.steadyproxy.com', port: '7777', username: 'USERNAME', password: 'PASSWORD' },
  { name: 'client-b', host: 'gw.steadyproxy.com', port: '7777', username: 'USERNAME', password: 'PASSWORD' },
];

const browser = await chromium.launch();
try {
  for (const ip of staticIps) {
    const context = await browser.newContext({
      proxy: { server: `http://${ip.host}:${ip.port}`, username: ip.username, password: ip.password },
    });
    const page = await context.newPage();
    await page.goto('https://api.ipify.org?format=json', { timeout: 30000 });
    console.log(ip.name, await page.innerText('body'));
    await context.close();
  }
} finally {
  await browser.close();
}

在 Playwright 中应使用 HTTP 还是 SOCKS5?

大多数情况下,使用 HTTP 端口并填写用户名和密码。这是 Playwright 文档中针对代理登录描述的组合方式,HTTPS 页面会通过 CONNECT 隧道传输。仅当你的机器在 IP 白名单中、无需登录时,才使用 socks5:// server 配合 SOCKS5。同一个静态 IP 的两个端口会提供相同的出口 IP。SteadyProxy 支持 HTTP、HTTPS(CONNECT)和 SOCKS5。

如何在多次运行之间保持同一静态 IP 上的登录状态?

登录后保存上下文的存储状态,下次使用同一代理时加载该状态。在 Python 中,context.storage_state(path='client-a.json') 会写入 cookie 和本地存储;browser.new_context(storage_state='client-a.json', proxy=...) 会恢复它们。请为每个 IP 和每个账号保留一个状态文件,切勿将一个账号的状态加载到另一个账号的 IP 上。请将这些文件视为机密。

最常见的问题有哪些?

四种错误覆盖了大多数情况。ERR_PROXY_CONNECTION_FAILED 表示主机或端口错误,或者在你这一侧被阻止。407 响应表示登录信息错误,或源 IP 不在白名单中。ERR_TUNNEL_CONNECTION_FAILED 表示代理拒绝了目标;请检查阻止列表:银行、政府、支付门户和票务网站,以及 SMTP(发邮件)端口 25、465 和 587。每个页面都超时说明该 IP 出现故障;请用 curl 测试,然后联系支持。

人们还会问关于 Playwright 和静态代理的哪些问题?

可以把用户名和密码放在 server URL 里吗?

请改用单独的 username 和 password 字段。在 Playwright 中,这是登录 HTTP 代理的文档推荐方式,而且可以避免特殊字符带来的 URL 编码问题。server 字段只需填写静态 IP 的协议、主机和端口。

Playwright 中每个页面会获得独立的 IP 吗?

不会。页面继承其上下文的代理,而上下文继承浏览器的代理,除非它们设置了自己的代理。同一上下文中的所有页面共享同一个静态 IP。如果需要多个 IP,请创建多个上下文(如 Node.js 示例所示),或创建多个浏览器。

Playwright 中可以在 Firefox 或 WebKit 上使用静态代理吗?

可以。proxy 选项对 chromium、firefox 和 webkit 的启动来说结构相同。请用 api.ipify.org 测试每种浏览器引擎,因为各引擎处理某些代理错误的方式不同。跨引擎进行 QA 时,请为每种引擎保持相同的静态 IP,以确保结果可比。

应该设置 locale 和时区以匹配 IP 吗?

对于本地 QA 和地理定位测试,是的:browser.new_context(locale='de-DE', timezone_id='Europe/Berlin') 会让你的网站按本地访客看到的方式呈现。它改变的是测试浏览器请求的内容,而不是 IP;IP 仍然决定你的网站检测到的国家。请参阅地理定位 QA 以了解测试计划。

如何检查每个上下文都使用了正确的 IP?

在每个新上下文中先访问 api.ipify.org,并将返回结果与仪表盘中的 IP 列表进行比对。如果不匹配,就让本次运行失败。开销是每个上下文一次轻量请求,这可以防止整个运行过程使用错误的 IP 发出流量。

用 10 个静态 IP 运行 10 个 Playwright 上下文需要多少费用?

截至 2026 年 10 月,10 个 ISP IP 的费用为 US$20.86,10 个专用数据中心 IP 的费用为 US$12.69,均为 30 天的价格。计费按 IP 计算,不按 GB 计算。付款使用加密货币,无需 KYC。请参阅定价 以了解所有套餐规格。

本指南使用了哪些来源? (3)
  1. 网络:HTTP 代理(Python) — Playwright (2026-10-19)
  2. 网络:HTTP 代理(Node.js) — Playwright (2026-10-19)
  3. ipify API — ipify (2026-10-19)

每个 ISP IP 低至 US$2.24 · 30 天 · 无需 KYC

查看价格