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

> Python 和 Node.js 中的 Playwright 静态代理设置：服务器、用户名和密码、每个 IP 一个浏览器上下文、出口 IP 检查。30 天 IP，无需 KYC，加密货币支付。

- URL: https://steadyproxy.com/zh/guides/playwright-static-proxy/
- 最后更新: 2026-10-19
- Publisher: SteadyProxy (https://steadyproxy.com)

将静态 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 |
| SOCKS5 | Playwright 支持此用法；文档说明了 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*

```python
"""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）*

```javascript
// 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](https://steadyproxy.com/zh/use-cases/geolocation-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。请参阅[定价](https://steadyproxy.com/zh/pricing/) 以了解所有套餐规格。

## 本指南使用了哪些来源？

1. [网络：HTTP 代理（Python）](https://playwright.dev/python/docs/network#http-proxy) — Playwright (2026-10-19)
2. [网络：HTTP 代理（Node.js）](https://playwright.dev/docs/network#http-proxy) — Playwright (2026-10-19)
3. [ipify API](https://www.ipify.org/) — ipify (2026-10-19)

---

SteadyProxy: SteadyProxy 是一家静态代理服务商：提供 ISP（静态住宅）和独立数据中心 IP，按 IP 租用 30 天，加密货币支付，无需上传身份证件。
