无需 KYC — 无需身份证、无需自拍、无需文件 · 使用加密货币支付:BTC, USDT, USDC, ETH, SOL, LTC
语言: 简体中文
使用加密货币购买

指南 · 无头浏览器

浏览器自动化代理:Playwright、Puppeteer 和 Selenium

如何认证、为每个浏览器上下文分配不同国家和固定 IP,以及绕过 Selenium 中 Chrome 缺失的代理登录功能。

最后更新:

快速答案

如何在 Playwright、Puppeteer 和 Selenium 中使用代理?

将浏览器指向 http://gw.namelessproxy.com:7777,并使用您的代理用户名和密码登录。Nameless Proxy 是一家注重隐私、无需 KYC 的代理提供商,支持 Playwright 的 proxy 选项、Puppeteer 的 page.authenticate() 以及通过本地转发器使用 Selenium。每个浏览器上下文一个会话 ID,确保每个配置文件一个 IP。住宅代理流量起价为 US$0.53/GB。无需 KYC —— 无需身份证、自拍或文件。支持加密货币支付。

浏览器设置一览

代理服务器http://gw.namelessproxy.com:7777(HTTP 端口)
Playwright使用 proxy 选项配置服务器、用户名和密码,可针对浏览器或上下文设置
Puppeteer使用 --proxy-server 标志加上 page.authenticate()
Selenium使用本地转发器添加凭据,或使用 IP 白名单
每个配置文件一个 IP每个上下文一个会话 ID,最长 60 分钟
定向用户名中包含:USERNAME-country-{cc}-city-{city}-session-{id}-ttl-{minutes}

浏览器需要哪个代理端口?

使用 HTTP 端口 7777。它通过 CONNECT 隧道支持 HTTPS,所有浏览器均支持。Chromium 不支持带用户名和密码的 SOCKS5,因此 SOCKS5 端口仅适用于自行处理 SOCKS5 登录的工具。

浏览器会下载图片、字体和脚本,因此每页使用的流量远超普通 HTTP 客户端。请屏蔽不需要的重资源;流量按十进制 GB 计费。

如何在 Playwright 中设置代理?

传递一个包含 server、username 和 password 的 proxy 对象。在每个浏览器上下文中设置它,为每个上下文分配自己的国家和粘性会话,且都在同一个浏览器进程中。将 locale 和 timezone_id 与出口国家匹配,这样页面就能看到一致的访问者。

Python 版 Playwright:每个上下文一个粘性 IP
# pip install playwright && playwright install chromium
import uuid
from playwright.sync_api import sync_playwright

SERVER = "http://gw.namelessproxy.com:7777"   # HTTP port: browsers
USERNAME, PASSWORD = "USERNAME", "PASSWORD"

def proxy_for(country, city, ttl=30):
    """One sticky session per browser context."""
    session = uuid.uuid4().hex[:10]
    return {
        "server": SERVER,
        "username": f"{USERNAME}-country-{country}-city-{city}-session-{session}-ttl-{ttl}",
        "password": PASSWORD,
    }

with sync_playwright() as p:
    # Placeholder launch proxy: some Chromium builds need one before contexts
    # can set their own. It is never used when every context sets a proxy.
    browser = p.chromium.launch(proxy={"server": "http://per-context"})
    for country, city, tz in [("ae", "dubai", "Asia/Dubai"), ("sa", "riyadh", "Asia/Riyadh")]:
        context = browser.new_context(proxy=proxy_for(country, city), locale="ar", timezone_id=tz)
        page = context.new_page()
        page.goto("https://api.ipify.org")
        print(country, page.inner_text("body"))
        context.close()
    browser.close()
Node.js 版 Playwright
// npm i playwright && npx playwright install chromium
const { chromium } = require('playwright');
const crypto = require('crypto');

const server = 'http://gw.namelessproxy.com:7777';
const proxyFor = (country, city, ttl = 30) => ({
  server,
  username: `USERNAME-country-${country}-city-${city}-session-${crypto.randomBytes(5).toString('hex')}-ttl-${ttl}`,
  password: 'PASSWORD',
});

(async () => {
  const browser = await chromium.launch({ proxy: { server: 'http://per-context' } });
  const context = await browser.newContext({ proxy: proxyFor('eg', 'cairo') });
  const page = await context.newPage();
  await page.goto('https://api.ipify.org');
  console.log(await page.textContent('body'));
  await browser.close();
})();

如何在 Puppeteer 中设置代理?

启动 Chrome 时使用 --proxy-server 并在首次导航前调用 page.authenticate()。Chrome 会忽略写入标志中的凭据,因此页面会响应代理的 407 验证请求。每个页面可以用不同用户名认证,因此每个页面都可以拥有自己的国家和会话。最近的 Puppeteer 版本也接受在 browser.createBrowserContext() 中的 proxyServer 选项。

带代理登录的 Puppeteer
// npm i puppeteer
const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({
    args: ['--proxy-server=http://gw.namelessproxy.com:7777'],
  });
  const page = await browser.newPage();
  // Chrome ignores credentials in --proxy-server, so answer the 407 challenge per page
  await page.authenticate({
    username: 'USERNAME-country-ng-city-lagos-session-x7k2p9-ttl-30',
    password: 'PASSWORD',
  });
  await page.goto('https://api.ipify.org');
  console.log(await page.evaluate(() => document.body.innerText));
  await browser.close();
})();

如何在 Selenium 中使用带认证的代理?

运行一个本地小型转发器为你添加凭据,并将 Chrome 指向它。Chrome 的 --proxy-server 标志不接受用户名或密码,Selenium 也没有填写代理登录的选项。下面的转发器使用 pproxy:它在你的机器上监听,无需密码,并将请求转发到带有用户名和目标的网关。每个粘性会话运行一个转发器,每个转发器使用自己的本地端口。

如果你的机器有固定的公网 IP,可以在客户端区域将其加入白名单,然后直接将网关地址传给 --proxy-server。selenium-wire 包也曾支持代理登录,但现在已不再维护。

启动本地转发器
pip install pproxy selenium

# Local forwarder: no auth on 127.0.0.1:8899, adds your credentials upstream (#user:pass)
pproxy -l http://127.0.0.1:8899 \
  -r "http://gw.namelessproxy.com:7777#USERNAME-country-ke-city-nairobi-session-k3m9q1-ttl-30:PASSWORD"
通过转发器使用 Selenium
# Selenium 4.6+ downloads the matching chromedriver itself (Selenium Manager)
from selenium import webdriver
from selenium.webdriver.common.by import By

options = webdriver.ChromeOptions()
options.add_argument("--proxy-server=http://127.0.0.1:8899")   # the local forwarder
driver = webdriver.Chrome(options=options)
try:
    driver.get("https://api.ipify.org")
    print(driver.find_element(By.TAG_NAME, "body").text)
finally:
    driver.quit()

如何保持每个浏览器配置文件一个 IP?

为每个浏览器上下文分配自己的会话 ID 和 TTL,并在配置文件生命周期内保持该 ID。只要 TTL 有效,上下文就会从同一个住宅代理 IP 退出(最长 60 分钟)。如果该 IP 后的设备离线,则启动新的会话 ID。

当配置文件需要保持一个 IP 多天时,使用专用 4G/5G 端口更合适:IP 会保持不变,直到你主动更换。请将代理用于合法用途,如广告验证、质量检测和管理客户账户。禁止使用代理进行虚假账户和规避封禁,详见可接受使用政策。

常见问题

为什么 Chrome 会忽略 --proxy-server 中的用户名和密码?

Chrome 的命令行标志只接受协议、主机和端口,不会读取其中的凭据。浏览器会等待代理发出的 407 验证请求。Playwright 会通过其 proxy 选项响应,Puppeteer 通过 page.authenticate() 响应。Selenium 没有代理登录的钩子,因此需要本地转发器或 IP 白名单。

我能用 Playwright 或 Puppeteer 使用 SOCKS5 端口吗?

不能使用用户名和密码:Chromium 不支持 SOCKS5 代理认证。请使用 HTTP 端口 7777,它通过 CONNECT 隧道支持 HTTPS 并支持登录。SOCKS5 端口 7778 适合那些自行处理 SOCKS5 认证的工具,比如 curl 或带有 socks5h:// 的 Python。

如何给每个浏览器上下文分配不同国家?

为每个上下文构建代理用户名:USERNAME-country-ae-city-dubai-session-… 用于一个上下文,USERNAME-country-sa-city-riyadh-session-… 用于另一个。在 Playwright 中,将其传递给 new_context(proxy=…)。在 Puppeteer 中,为每个国家打开一个页面,并用每个用户名调用 page.authenticate()。一个浏览器进程可以这样服务多个国家。

如何减少无头浏览器的流量使用?

屏蔽不需要的内容。在 Playwright 中,page.route() 可以中止图片、字体和媒体请求;在 Puppeteer 中,使用请求拦截。为同一站点的多个页面复用一个上下文以利用缓存。流量按十进制 GB 计费,客户端区域显示每日使用量,建议使用前后测量。

为什么网站仍显示错误的国家?

IP 只是一个信号。网站还会读取浏览器语言、时区,有时还会读取地理位置 API。设置 Playwright 上下文的 locale 和 timezone_id 以匹配出口国家,例如阿联酋的 Asia/Dubai。同时清除网站在之前访问其他国家时设置的 cookies。

selenium-wire 仍然是添加代理登录的好方法吗?

它曾经有效,但项目已不再维护,可能会在新版本的 Chrome 或 Selenium 中失效。像 pproxy 这样的本地转发器专注于一件事——为上游代理添加凭据,且兼容任何浏览器。在客户端区域将服务器 IP 加入白名单,则完全无需凭据。

给每个浏览器配置独立的IP

来自US$0.53/GB的住宅代理,来自$2.63/天的专用4G移动代理端口。无需 KYC — 无需身份证、自拍和文件。

来自 US$0.53/GB · 无需 KYC

购买代理