跳到正文

Browser Use 代理设置:让浏览器 Agent 走 HTTP 代理

Browser Use 会替 AI Agent 开一个浏览器。想让这个浏览器通过代理访问网页,只要在 Browser 对象上设置一次。本文讲当前版本的写法、一个 Agent 一个代理、Playwright 和 Playwright MCP 的对应写法、时区和语言怎么对上,以及常见报错。

当前版本的 Browser Use 代理写法

Browser Use 把代理作为浏览器的一个参数:proxy 接收一个 ProxySettings 对象,包含 server、username、password 和 bypass。Browser 是 BrowserSession 的别名,所以 Browser(proxy=...) 就是全部设置。

很多旧教程里的 BrowserConfig 是旧版本才有的,当前 API 里没有,代码里导入它会报 ImportError。请改用下面的写法。

Browser Use 用 ProxySettings:先查出口

import asyncio
import os
from browser_use import Agent, Browser, ChatOpenAI
from browser_use.browser.profile import ProxySettings

browser = Browser(
    proxy=ProxySettings(
        server=f"http://{os.environ['PROXY_HOST']}:{os.environ['PROXY_PORT']}",  # HTTP endpoint
        username=os.environ["PROXY_USER"],
        password=os.environ["PROXY_PASS"],
        bypass="localhost,127.0.0.1",  # optional
    )
)


async def main():
    agent = Agent(
        task=(
            "Open https://ipinfo.io/json and report the IP address and country it shows. "
            "Then continue with the real task."
        ),
        llm=ChatOpenAI(model=os.environ["LLM_MODEL"]),
        browser=browser,
    )
    history = await agent.run()
    print(history.final_result())


asyncio.run(main())

仅为示例:环境变量请换成你自己的值。任务里先让 Agent 报出出口 IP 和国家,再做别的事。

为什么先查出口

第一步让「代理配好了」变成「Agent 的浏览器确实显示我选的国家」。每次运行开头都做一次,并把报出的国家和你生成代理时选的国家对一下。

bypass 是不走代理的主机列表,用逗号隔开,比如 localhost,127.0.0.1。用不上可以不写。

一个 Agent 一个代理

给每个 Agent 各建一个 Browser,各带自己的 ProxySettings,再用 asyncio.gather 一起跑。代理跟着它所属的浏览器走,所以两个 Agent 不会不小心共用同一个出口。Browser Use 官方的并行示例标注为实验性,所以请保持一个 Agent 对应一个 Browser 对象。

两个 Agent、两个代理,并行运行

import asyncio
import os
from browser_use import Agent, Browser, ChatOpenAI
from browser_use.browser.profile import ProxySettings


def make_browser(host_env, port_env, user_env, pass_env):
    return Browser(
        proxy=ProxySettings(
            server=f"http://{os.environ[host_env]}:{os.environ[port_env]}",
            username=os.environ[user_env],
            password=os.environ[pass_env],
        )
    )


async def run_one(task, browser):
    agent = Agent(task=task, llm=ChatOpenAI(model=os.environ["LLM_MODEL"]), browser=browser)
    return await agent.run()


async def main():
    de = make_browser("DE_HOST", "DE_PORT", "DE_USER", "DE_PASS")
    jp = make_browser("JP_HOST", "JP_PORT", "JP_USER", "JP_PASS")
    results = await asyncio.gather(
        run_one("Open https://ipinfo.io/json and report the IP and country", de),
        run_one("Open https://ipinfo.io/json and report the IP and country", jp),
    )
    for history in results:
        print(history.final_result())


asyncio.run(main())

仅为示例:请换成你自己的值。

纯 Playwright 的同一套写法

Browser Use 底层通过 Playwright 驱动 Chromium,所以 Playwright 自己的代理选项值得了解。代理可以在 launch 时设给整个浏览器,也可以在 new_context(Node.js 里是 newContext)时只设给一个上下文,选项有 server、bypass、username、password。

Playwright 选项文档说明,username 和 password 用于 HTTP 代理。所以带账号密码的 SOCKS5 在 Chromium 里不可用:请用 HTTP 端口。Proxy302 上是 proxy.proxy302.com 的 2222 端口;SOCKS5 是 3333 端口。

Python 版 Playwright:浏览器级和上下文级代理

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    # Proxy for the whole browser
    browser = p.chromium.launch(
        proxy={
            "server": "http://HOST:PORT",
            "username": "USERNAME",
            "password": "PASSWORD",
            "bypass": "localhost,127.0.0.1",
        }
    )
    page = browser.new_page()
    page.goto("https://ipinfo.io/json")
    print(page.inner_text("body"))
    browser.close()

    # Or one proxy per context
    browser = p.chromium.launch()
    context = browser.new_context(
        proxy={"server": "http://HOST:PORT", "username": "USERNAME", "password": "PASSWORD"}
    )
    page = context.new_page()
    page.goto("https://ipinfo.io/json")
    print(page.inner_text("body"))
    browser.close()

仅为示例:请换成你自己的值。

Node.js 版 Playwright:浏览器级和上下文级代理

import { chromium } from 'playwright';

// Proxy for the whole browser
const browser = await chromium.launch({
  proxy: {
    server: 'http://HOST:PORT',
    username: 'USERNAME',
    password: 'PASSWORD',
    bypass: 'localhost,127.0.0.1',
  },
});
const page = await browser.newPage();
await page.goto('https://ipinfo.io/json');
console.log(await page.innerText('body'));
await browser.close();

// Or one proxy per context
const browser2 = await chromium.launch();
const context = await browser2.newContext({
  proxy: { server: 'http://HOST:PORT', username: 'USERNAME', password: 'PASSWORD' },
});
const page2 = await context.newPage();
await page2.goto('https://ipinfo.io/json');
console.log(await page2.innerText('body'));
await browser2.close();

仅为示例:请换成你自己的值。

Playwright MCP

如果你不写 Python 代码,而是通过 Playwright MCP 服务器驱动浏览器,对应的参数是 --proxy-server 和 --proxy-bypass。官方 README 把账号密码写在代理地址里:http://user:password@host:port。密码里有 @、:、/ 这类特殊字符时,要做百分号编码。

README 里也列了 SOCKS5 的写法,但和上面的 Playwright 一样,需要账号密码时请用 HTTP 端口。

Playwright MCP 加代理:mcpServers 配置

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": [
        "@playwright/mcp@latest",
        "--proxy-server",
        "http://USER:PASS@HOST:PORT",
        "--proxy-bypass",
        "localhost,127.0.0.1"
      ]
    }
  }
}

仅为示例:请换成你自己的值。

在 MCP 客户端里通过代理读网页

如果只是想让 Agent 通过 Proxy302 代理读一个公开网页、不需要开浏览器,可以看 proxy-mcp-server 指南。proxy302-mcp 是 Proxy302 官方的 MCP 服务,在 GitHub 开源,由 Proxy302 团队维护。Proxy302 也在 https://proxy302.com/v1/mcp 托管了一份:Claude Code、Cursor、VS Code 这类能带 Authorization 请求头的客户端,填 API 密钥就能连,不用安装。

让时区和语言对上出口地区

有些网站会根据访客所在地区显示不同的货币、语言和运费说明。想看到页面的本地版,除了代理,还要把浏览器的语言和时区设成出口地区。

Playwright 里对应的上下文选项是 locale(语言标签,如 de-DE)和 timezone_id(时区 ID,如 Europe/Berlin;Node.js 里叫 timezoneId),都写在官方选项里。它们改变的是浏览器报告的内容,代理改变的是地址。

Python:一个上下文里同时设代理、语言和时区

context = browser.new_context(
    proxy={"server": "http://HOST:PORT", "username": "USERNAME", "password": "PASSWORD"},
    locale="de-DE",
    timezone_id="Europe/Berlin",
)

仅为示例:请换成你自己的值。

Node.js:一个上下文里同时设代理、语言和时区

const context = await browser.newContext({
  proxy: { server: 'http://HOST:PORT', username: 'USERNAME', password: 'PASSWORD' },
  locale: 'de-DE',
  timezoneId: 'Europe/Berlin',
});

仅为示例:请换成你自己的值。

亚马逊侧实测的出口

亚马逊侧实测的出口
项目网络(ISP)ASN响应,毫秒
美国AT&T Enterprises, LLCAS70181807
英国PlusnetAS68712563
德国Vodafone GmbHAS32091058
日本BTV CO.,LTD.AS181351548
新加坡Starhub LtdAS55430629
俄罗斯PJSC VimpelcomAS84022031
巴西TELEFÔNICA BRASIL S.AAS265996263
印度尼西亚PT. Telekomunikasi SelularAS236931752

Proxy302 每小时连通性检查,2026 年 11 月 3 日 18:18 UTC:每个国家通过动态住宅出口向亚马逊发一次请求。IP 只公开前三段。每个国家只有一个样本,不是平均值,之后的检查结果会不同。

常见报错和处理

407 Proxy Authentication Required

检查 代理收到了请求,但不接受账号密码。看 ProxySettings 或 proxy 字典里是不是真的带了 username 和 password,是否和「我的资产」里的一致,端口是否对应所选协议。

处理 改对账号密码;Chromium 里用 HTTP 端口(2222)。写进地址时,特殊字符要做百分号编码。

ERR_PROXY_CONNECTION_FAILED

检查 浏览器根本连不上代理。看主机和端口对不对,协议头是不是 http://,有没有别的代理设置叠在上面。

处理 改对主机、端口或协议头,再跑一次出口检查。在中国大陆请开着辅助工具(见下面的步骤)。

超时

检查 不走代理能打开、走代理就超时,问题多半在代理这条路或页面本身,不在你的代码。换一个出口国家试同一个请求。

处理 慢页面把导航超时调大,并换更近的国家重试。

网站显示的国家不对

检查 出口可能和你选的不一样,或者浏览器的时区和语言与出口地区不一致。正式任务前再跑一次 IP 查询任务。

处理 按出口国家设 locale 和 timezone_id;多步骤任务用静态 IP。

适合用来做什么

常见用途是读取公开网页、查看页面在其他地区的样子、本地化网站的 QA,以及在遵守网站条款和访问频率限制的前提下采集数据。代理只改变网站看到的网络地址;请求频率要克制,并遵守各网站的规则。

用 Proxy302 怎么做

动态住宅适合要读很多页面、或要查看多个地区的 Agent:选国家、生成 HTTP 协议的代理,用 proxy.proxy302.com 的 2222 端口。要登录账号、需要一个固定地址的 Agent,用静态 ISP IP。产品详情见动态住宅页面。

用 Proxy302 怎么做:步骤

  1. 第 1 步

    打开动态住宅页面(或静态 ISP 页面),选国家和 HTTP 协议,生成代理。

  2. 第 2 步

    打开「我的资产」(控制台里放你所有已购商品的页面),复制 HOST、PORT、USERNAME、PASSWORD。「连接」页有带你自己地址的现成示例。

  3. 第 3 步

    把它们填进 ProxySettings、Playwright 的 proxy 选项或 MCP 参数里。

  4. 第 4 步

    做出口检查:让 Agent 打开 https://ipinfo.io/json,报出 IP 和国家,国家应与你选的一致。

  5. 第 5 步

    在中国大陆,从「连接」页打开辅助工具,点「一键加速」,使用代理期间保持开着。

价格和限制

动态住宅经济线每 GB 1.5 美元起,优质线每 GB 5 美元,买大流量包更便宜。静态 ISP IP 1 天 0.5 美元,30 天 7.99 美元。没有免费试用:最小一单是 1 GB 流量或一个 IP 用 1 天。代理不能解除限制、恢复被封的账号或提高额度。

Proxy302 一览

Proxy302 一览
项目价格协议地区适合的 Agent 工作
动态住宅经济线每 GB 1.5 美元起,优质线每 GB 5 美元;买大流量包单价更低HTTP、SOCKS5195 个以上国家和地区,支持的线路可选州和城市浏览、调研类 Agent,数据采集
静态 ISP(按 IP)1 天 0.5 美元,30 天 7.99 美元,各国同价HTTP 或 SOCKS5,每个 IP 购买时选定下单页列出 30 个国家,库存每天变化要登录账号的 Agent:一个账号配一个固定 IP
AI 订阅专用 ISP每 30 天:Claude 15 PTC,GPT / Grok 10 PTC,Gemini 8 PTC;每档首单 5 折HTTP 或 SOCKS5Claude:美国、英国、德国、西班牙、日本、新加坡;GPT / Grok 和 Gemini:美国、英国、法国、西班牙、意大利、日本、韩国、新加坡登录 ChatGPT、Claude、Gemini、Grok 账号的编程工具和 Agent
机房 IP(按 IP)1 天 0.25 美元,30 天 3.99 美元HTTP 或 SOCKS5,每个 IP 购买时选定8 个国家只调接口、不在意 IP 类型的流量
proxy302-mcp免费、开源(MIT 协议)MCP,本地 stdio,用 npx 启动用的是上面这些产品让 Claude Code、Codex、Cursor 等 MCP 客户端拿代理、通过代理打开网页

价格按 PTC 从钱包扣,1 PTC = 1 美元。没有免费试用:最小一单是 1 GB 动态住宅流量,或一个 IP 用 1 天。核对于 2026-11-04。

常见问题

Browser Use 自带代理设置吗?

有。给 Browser 传 proxy=ProxySettings(server, username, password, bypass) 即可。BrowserConfig 是旧版本的,当前 API 里没有。

怎么让并行的每个 Agent 各用一个代理?

每个 Agent 建一个 Browser,各带自己的 ProxySettings,再用 asyncio.gather 一起跑。

Chromium 里能用带账号密码的 SOCKS5 吗?

不能。Playwright 的 username 和 password 选项用于 HTTP 代理,所以请用 HTTP 端口(proxy.proxy302.com 的 2222)。

IP 该轮换还是固定?

任务里的页面属于同一次访问(比如登录加几步操作)时,用一个固定 IP。彼此独立的单页读取,每个任务换一个 IP 更简单。

为什么网站还是显示错误的地区?

先查出口 IP。再把上下文的 locale 和 timezone_id 设成出口地区,它们决定浏览器报告的内容。

参考资料

11
  1. Browser Use docs: all parameters

    官方文档 · 确认日期:

    Read on 4 November 2026: the proxy parameter takes ProxySettings(server, bypass, username, password); Browser is an alias for BrowserSession; BrowserProfile can be passed to Browser.

  2. Browser Use source: browser/profile.py

    官方文档 · 确认日期:

    Source read on 4 November 2026: class ProxySettings has server, bypass, username and password; BrowserProfile.proxy; the current package exports Browser and BrowserSession and has no BrowserConfig.

  3. Playwright docs: Network, HTTP proxy

    官方文档 · 确认日期:

    Read on 4 November 2026: proxy can be set for the whole browser in launch or for each context; username and password for HTTP(S) proxy.

  4. Playwright docs: proxy option reference

    官方文档 · 确认日期:

    Read on 4 November 2026: server, bypass, username, password; username and password are for HTTP proxy authentication.

  5. Playwright for Python: Browser.new_context

    官方文档 · 确认日期:

    Read on 4 November 2026: locale, timezone_id and proxy options of new_context.

  6. Playwright docs: Emulation, locale and timezone

    官方文档 · 确认日期:

    Read on 4 November 2026: locale and timezoneId in browser.newContext; they affect the browser's locale and time zone only.

  7. Playwright MCP README

    官方文档 · 确认日期:

    Read on 4 November 2026: --proxy-server (including the http://user:password@host:port form) and --proxy-bypass.

  8. Proxy302 product facts and price list

    产品观察 · 确认日期:

    Product facts file of the site (values checked against the console, the backend and the price table on 18-19 October 2026): products, prices in US$ (1 PTC = US$1), lease terms, protocols and ports, countries, quantity limits, no free trial.

  9. Proxy302 ISP for AI subscriptions: public catalog

    产品观察 · 确认日期:

    Public JSON at proxy302.com/v1/proxy/ai-isp/catalog, read 4 November 2026: three tiers (Claude, GPT / Grok, Gemini), price per 30 days in PTC, 50% off the first order in a tier, cities by country.

  10. proxy302-mcp 的 README(Proxy302 官方 MCP 服务)

    产品观察 · 确认日期:

    Proxy302 官方 MCP 服务的 README:安装命令、环境变量、七个工具、只读不花钱的范围,以及托管地址 https://proxy302.com/v1/mcp。

  11. Proxy302 hourly connectivity check

    产品观察 · 确认日期:

    Public JSON of the probe at proxy302.com/live/connectivity/amazon.json (file probe-amazon-20261104.json), generated 3 November 2026, 18:18 UTC: one request per exit country through a rotating residential exit; exit ASN, network and response time.

准备好试试了吗?

注册账号、充值一次,就能选动态住宅、静态 ISP 或数据中心 IP,几分钟配进你的浏览器。