出现错误页,或 407 Proxy Authentication Required
检查 用户名或密码有错字,或者资产已过期、流量已用完。
处理 在「我的资产」里重新复制 LOGIN 和 PASSWORD,并用上面的 curl 命令测试。先把这一步修好,再动 Playwright。
停止条件 curl 也返回 407 就别再改代码了:问题在账号密码或资产本身。带上订单号提交 Support 工单。
账号密码写在哪、什么时候一个浏览器一个代理就够、怎么让每个 context 各用各的 IP。
写在 launch() 里的代理管整个浏览器,里面所有 context 和页面都从同一个 IP 出去。写在 new_context() 里的代理只管这一个 context,所以一个浏览器进程可以同时跑几个互相隔离的会话,各用各的 IP。
只跑一个任务、只要一个出口地区,就按浏览器设置。并发跑多个任务、一个账号对应一个 context,或者要轮流用一批 IP,就按 context 设置。cookie 和本地存储本来就按 context 隔离,代理要再单独设上去。
| 项目 | 在哪里设置 | 管多大范围 | 账号和密码 |
|---|---|---|---|
| 按浏览器 | chromium.launch(proxy=...) | 这个浏览器里所有 context 和页面 | 有 server、username、password 三个字段 |
| 按 context | browser.new_context(proxy=...) | 只管这个 context 里打开的页面 | 字段相同;浏览器本身可以不设代理 |
| 浏览器启动参数 | args=["--proxy-server=..."] | Chromium 命令行,管整个浏览器 | 不适合放账号密码:要带账号密码就用 Playwright 的 proxy 对象 |
来源:Playwright 官方文档 Network 页和 Browser.new_context 页,2026 年 11 月 13 日读取。启动参数一行是 Chromium 命令行的写法;需要账号密码时请用 proxy 对象。
# pip install playwright then playwright install chromium
from playwright.sync_api import sync_playwright
proxy = {
"server": "http://HOST:PORT", # HTTP endpoint from My assets
"username": "LOGIN",
"password": "PASSWORD",
}
with sync_playwright() as p:
browser = p.chromium.launch(proxy=proxy) # every context in this browser uses it
page = browser.new_page()
page.goto("https://ipinfo.io/json")
print(page.inner_text("body")) # shows the proxy's exit IP
browser.close()
仅作示例:把 HOST、PORT、LOGIN、PASSWORD 换成「我的资产」里复制的值。
# pip install playwright then playwright install chromium
import asyncio
from playwright.async_api import async_playwright
PROXIES = [ # one entry per IP, copied from My assets
{"server": "http://HOST:PORT", "username": "LOGIN_1", "password": "PASSWORD_1"},
{"server": "http://HOST:PORT", "username": "LOGIN_2", "password": "PASSWORD_2"},
]
async def check(browser, proxy):
context = await browser.new_context(proxy=proxy) # this context only
try:
page = await context.new_page()
await page.goto("https://ipinfo.io/json")
print(proxy["username"], await page.inner_text("body"))
finally:
await context.close()
async def main():
async with async_playwright() as p:
browser = await p.chromium.launch() # no proxy on the browser itself
await asyncio.gather(*(check(browser, x) for x in PROXIES))
await browser.close()
asyncio.run(main())
仅作示例:把 HOST、PORT、LOGIN、PASSWORD 换成「我的资产」里复制的值。
// npm i playwright then npx playwright install chromium
import { chromium } from 'playwright'
const proxies = [ // one entry per IP, copied from My assets
{ server: 'http://HOST:PORT', username: 'LOGIN_1', password: 'PASSWORD_1' },
{ server: 'http://HOST:PORT', username: 'LOGIN_2', password: 'PASSWORD_2' },
]
const browser = await chromium.launch() // no proxy on the browser itself
await Promise.all(proxies.map(async (proxy) => {
const context = await browser.newContext({ proxy }) // this context only
try {
const page = await context.newPage()
await page.goto('https://ipinfo.io/json')
console.log(proxy.username, await page.textContent('body'))
} finally {
await context.close()
}
}))
await browser.close()
仅作示例:把 HOST、PORT、LOGIN、PASSWORD 换成「我的资产」里复制的值。
server 字段既能写 http:// 也能写 socks5://,但用户名和密码字段在文档里是写给 HTTP 代理的。Chromium 自带的 SOCKS5 客户端只发「无需认证」,所以需要账号密码的 SOCKS5 代理在 Chromium 里用不了,字段填了也一样。
所以 Chromium 请用代理的 HTTP 地址。在 Proxy302,就是 proxy.proxy302.com 的 2222 端口。一个资产支持哪种协议要看产品,请以「我的资产」里该资产显示的协议为准。如果一定要在浏览器里用带账号密码的 SOCKS5,请看下面链接的那篇。
先不带代理运行上面的单代理脚本,记下 ipinfo.io/json 返回的你自己的 IP。
加上 proxy 对象再运行。ip 字段应该变成代理的出口 IP,国家也应该是你选的那个国家。
预期结果 JSON 里的 IP 和国家与你自己的不同。
按 context 设置时,给每个 context 都打印一次 IP。两个 context 用两个不同的静态 IP,应该看到两个不同的地址。
如果打印出来的是你自己的 IP,说明 proxy 对象传给了别的调用,不是创建这个页面的那个。检查页面来自哪个浏览器或 context。
# HTTP endpoint (the one Chromium can log in to)
curl -x http://LOGIN:PASSWORD@HOST:PORT https://ipinfo.io/json
# SOCKS5 endpoint (works in curl, not in Chromium with a login)
curl -x socks5h://LOGIN:PASSWORD@HOST:PORT https://ipinfo.io/json
仅作示例:把 HOST、PORT、LOGIN、PASSWORD 换成「我的资产」里复制的值。
检查 用户名或密码有错字,或者资产已过期、流量已用完。
处理 在「我的资产」里重新复制 LOGIN 和 PASSWORD,并用上面的 curl 命令测试。先把这一步修好,再动 Playwright。
停止条件 curl 也返回 407 就别再改代码了:问题在账号密码或资产本身。带上订单号提交 Support 工单。
检查 Chromium 的 SOCKS5 没有密码认证方式。
处理 把 server 改成同一个资产的 HTTP 地址。
检查 资产发放的是另一种协议,或者 HOST、PORT 写错了。
处理 核对资产显示的协议和端口:proxy.proxy302.com 上 HTTP 用 2222,SOCKS5 用 3333。需要哪种协议,就用那种协议重新生成或购买。
检查 launch() 和 new_context() 用了同一条代理,或者几条记录指向同一个 IP。
处理 给每个 new_context() 传不同的账号密码。动态住宅不开会话时每个新连接可能换一个 IP;某个 context 要一直用同一个地址,就用静态 IP。
检查 出口 IP 不在你想要的国家。
处理 在 ipinfo.io 查这个 IP,并在生成或购买资产时重新选出口国家。
每个 context 需要一个固定地址,选静态 ISP 比较合适:租期内 IP 不轮换,1 天 US$0.50,30 天 US$7.99(折合约每天 US$0.27),一次最多能买 100 个。需要从一个池里用很多不同的 IP,可以用动态住宅,低价线路每 GB US$1.50;不开会话时,每个新连接会换一个 IP。
两种都请在生成或购买时选 HTTP 协议,这样同一组账号密码可以直接填进 Playwright 的 proxy 对象。Playwright 页面里有完整配置和其他选项。
打开静态 ISP 页面(或动态住宅页面),选国家,协议选 HTTP,核对费用后用钱包付款。
打开「我的资产」,复制主机、端口、用户名和密码。要给多个 context 用,就买或生成多个资产。
把这些值填进 proxy 对象:server 写 http://主机:端口,再填 username 和 password。
像上面的例子那样,在 Playwright 里访问 https://ipinfo.io/json 确认出口。
把 proxy={"server": "http://HOST:PORT", "username": "LOGIN", "password": "PASSWORD"} 传给 chromium.launch(),整个浏览器生效;传给 browser.new_context(),只对这个 context 生效。
能。Playwright 文档写明代理可以按 context 单独设置,所以一个浏览器里可以有不同 IP 的 context。
server 字段可以写 socks5:// 地址,但用户名和密码在文档里是写给 HTTP 代理的。在 Chromium 里,需要登录的 SOCKS5 用不了,请改用 HTTP 地址。
不需要。launch() 和 new_context() 的 proxy 选项就是设置地址和账号密码的正规位置。
在同一个 context 的页面里打开 https://ipinfo.io/json,看 ip 字段。
官方文档 · 确认日期:
Read on 13 November 2026: proxy can be set globally for the whole browser or for each browser context; username and password are optional fields for an HTTP(S) proxy; examples use launch(proxy={server, username, password}) and new_context(proxy={server}).
官方文档 · 确认日期:
Read on 13 November 2026: server accepts HTTP and SOCKS proxies, for example http://myproxy.com:3128 or socks5://myproxy.com:3128; bypass is a comma-separated list of domains; username and password are used "if HTTP proxy requires authentication".
官方文档 · 确认日期:
Read on 13 November 2026: the SOCKS5 greeting Chromium sends is 05 01 00 (one method, "no authentication"), and a reply that selects any other method is treated as an unexpected-auth error.
产品观察 · 确认日期:
站点产品事实文件,2026 年 11 月 13 日对照控制台、后端和价目表核对:静态 ISP 按 IP 租赁价格(US$,1 PTC = US$1)、动态住宅低价线路每 GB 价格、proxy.proxy302.com 上 HTTP 2222 端口和 SOCKS5 3333 端口、各产品支持哪种协议、无免费试用。
注册账号、充值一次,就能选动态住宅、静态 ISP 或数据中心 IP,几分钟配进你的浏览器。