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

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


## 智能体带来的三个问题

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


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

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

```bash
export HTTPS_PROXY="http://AGENTUSER-cc-us-sid-task-4f2a-ttl-2h:PASS@res.proxshift.com: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（包括第三方工具发起的请求）都会遵循该设置。

```javascript
import { EnvHttpProxyAgent, setGlobalDispatcher } from "undici";
setGlobalDispatcher(new EnvHttpProxyAgent()); // 读取 HTTPS_PROXY / NO_PROXY
```


## Playwright MCP 服务器

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

```json
{
  "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，避免并行运行共享出口；同时将上下文的区域设置和时区设为出口所在国家/地区。

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


## 上限控制：子用户

为每个智能体或项目创建一个[子用户](https://proxshift.com/zh/docs/authentication)，并设置以 GB 为单位的流量限制。智能体会获得独立的用户名和密码，其用量单独统计；无论陷入何种循环，都无法突破上限。


## 保持合理的访问行为

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


## 问题

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

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

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

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

来源：https://proxshift.com/zh/guides/ai-agents-proxy
