集成 · 中级

为 AI 智能体配置代理:环境变量、Playwright MCP 与浏览器智能体

智能体浏览网页时像急躁的人:访问大量页面、目标不可预测,也记不住哪些网站曾经拦截它们。为每个任务分配一个住宅出口、让会话覆盖整个任务,再设置支出上限,就能获得稳定的配置。

阅读约需 3 分钟 7 个章节 更新于 发布于

智能体带来的三个问题#

  • 目标不可预测。 智能体自行决定访问哪里;你无法预先为一个网站选择数据中心代理、为另一个网站选择住宅代理。住宅出口是稳妥的默认选择。
  • 每个任务包含大量跳转。 搜索、打开、点击、阅读,再重复:一个任务就是一个会话,在任务持续期间应始终使用同一出口。
  • 支出没有上限。 陷入循环的智能体可能获取数 GB 数据。请为其设置不可超出的上限。

适用于整个工具链的环境变量#

大多数 Python HTTP 技术栈(requests、httpx、aiohttp、urllib)和许多工具都遵循 HTTPS_PROXYHTTP_PROXYNO_PROXY。在智能体进程中设置这些变量,无需修改代码,即可让所有获取页面的工具走代理。

Shell
export HTTPS_PROXY="http://AGENTUSER-cc-us-sid-task-4f2a-ttl-2h:[email protected]:9000"
export HTTP_PROXY="$HTTPS_PROXY"
export NO_PROXY="localhost,127.0.0.1,api.openai.com,api.anthropic.com"
python agent.py

使用 NO_PROXY 排除模型提供商的 API 主机:LLM 调用不需要住宅出口,只会徒增流量费用。

Node.js 智能体#

Node 的 fetch(undici)默认忽略环境变量。在启动时设置一次全局 dispatcher,智能体中的每个 fetch(包括第三方工具发起的请求)都会遵循该设置。

Node.js
import { EnvHttpProxyAgent, setGlobalDispatcher } from "undici";
setGlobalDispatcher(new EnvHttpProxyAgent()); // 读取 HTTPS_PROXY / NO_PROXY

Playwright MCP 服务器#

Claude、ChatGPT 类工具和 IDE 智能体使用 Playwright MCP 服务器驱动浏览器,该服务器可在启动时接收代理。请传入网关、粘性用户名,以及本地主机绕过列表。

MCP 配置
{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": [
        "@playwright/mcp@latest",
        "--proxy-server=http://res.proxshift.com:9000",
        "--proxy-bypass=localhost,127.0.0.1"
      ]
    }
  }
}

Chromium 会提示输入代理凭据,但 MCP 会话无法响应;请在控制面板中将机器的公网 IP 加入白名单,以免出现提示。如果希望为该机器单独设置流量上限,请使用子用户。如果服务器提供用户名和密码选项,则改为传入粘性用户名。

基于 Playwright 构建的浏览器智能体#

browser-use 等框架会在浏览器配置中公开 Playwright 的代理设置(server、username、password)。每次运行智能体时都分配新的会话 ID,避免并行运行共享出口;同时将上下文的区域设置和时区设为出口所在国家/地区。

基于 Playwright 的 Python 智能体
proxy = {
    "server": "http://res.proxshift.com:9000",
    "username": f"AGENTUSER-cc-us-sid-{run_id}-ttl-1h",
    "password": "PASS",
}
# 在框架接收 Playwright 代理设置的位置传入 `proxy`

上限控制:子用户#

为每个智能体或项目创建一个子用户,并设置以 GB 为单位的流量限制。智能体会获得独立的用户名和密码,其用量单独统计;无论陷入何种循环,都无法突破上限。

保持合理的访问行为#

  • 限制智能体每分钟对每个域名的请求数;轮换出口不能成为高频轰炸的借口。
  • 在浏览器上下文中屏蔽图片、媒体和字体;智能体只需读取文本。
  • 为每个任务记录会话 ID,以便将被拦截的运行追溯到其出口,并在新出口上重新执行。

大家常问的问题#

LLM API 调用也应该通过代理吗?

不应该。使用 NO_PROXY 排除提供商主机:这些调用不需要住宅出口,只会消耗流量。

主要阅读文档和开放网站的智能体应使用哪种网络?

对于开放资源,数据中心地址更便宜、速度也更快,但智能体无法预测何时会遇到受保护的网站。住宅代理是稳妥的默认选择;只有在智能体仅访问已知开放目标时,才改用数据中心代理。

准备好即可开始

立即投入实际使用。

创建账户,充值 $20,然后将本指南中的端点粘贴到您的工具中。您购买的流量永不过期。