AI代理,能够自动浏览网站——Claude与Playwright MCP、browser-use、云Browserbase——面临与普通解析器相同的障碍:从一个地址发出的几十个请求后,接下来就会遇到Cloudflare的挑战。不同之处在于,代理不会感到沮丧,而是陷入循环,耗尽代币试图“按下不存在的按钮”。
解决这个问题的方法是使用代理。但将代理连接到代理上意外地并不明显:网络上的一半说明提供的语法被Chromium默默忽略。以下是2026年三种最常见堆栈的有效配置以及所有人都会遇到的陷阱分析。
谁需要这个
这是给那些已经启动代理并出现以下症状的人准备的指南:
- 代理执行10-20步后,每一步都会返回验证码或“验证您是人类”的页面;
- 代理看到的内容与您不同:网站根据您的服务器IP显示价格、结果和商品的可用性,而不是所需国家的内容;
- 代理在云中运行(VPS、GitHub Actions、容器),而托管商的数据中心地址已被标记为机器人;
- 您已输入带有用户名和密码的代理,但浏览器启动时似乎根本没有代理。
如果您还处于“为什么代理会被阻止”的阶段——请先阅读关于反机器人系统如何区分代理浏览器与人类的分析:那里讲述了检测信号,而这里是连接的纯实践。
陷阱 #1:Chromium不接受代理字符串中的用户名和密码
这是最常见的错误,导致人们花费数小时进行调试。提供商的经典字符串格式是user:pass@host:port。您将其插入浏览器的启动标志中:
--proxy-server="http://user:[email protected]:8080"
结果却什么都不工作。Chromium不支持在--proxy-server标志中传递凭据:控制台会出现不支持代理的错误,而流量则会绕过。如果去掉凭据,仅保留host:port,浏览器在正常模式下会显示系统窗口请求用户名和密码——而这就停滞了,因为在无头模式下没有窗口,也没有人可以点击。
由此得出三条有效路径,选择时需谨慎:
- 基于IP的授权(白名单)。 这是代理的最干净选项。您将运行代理的机器地址添加到提供商控制面板的白名单中——然后可以完全不使用用户名和密码,简单地使用
host:port字符串。--proxy-server标志开始按预期工作,无头模式下不会再询问任何内容。ProxyCove支持这两种方法——用户名:密码和IP白名单,甚至可以同时使用,因此可以为代理设置白名单,而为手动任务保留密码。 - 通过API而非标志传递凭据。 Playwright、Puppeteer和browser-use能够接受
username和password作为单独的字段——这不是命令行标志的机制,它是有效的。适合您自己编写代理代码时使用。 - 本地中继。 您可以在本地设置一个无密码的代理,将请求转发到带有密码的上游,并指定代理的本地地址。这种选项适用于白名单不可用的情况:例如,机器的IP地址不固定。
Playwright MCP:真正有效的配置
微软的Playwright MCP——今天是需要真正浏览器的代理的事实标准。代理通过MCP客户端配置中的服务器参数直接设置:
{"mcpServers":{"playwright":{"command":"npx","args":["@playwright/mcp@latest","--browser","chromium","--headless","--proxy-server","http://gate.example.com:8080","--proxy-bypass",".local,.internal","--isolated","--viewport-size","1920x1080"]}}}
这里重要的要点包括:
--proxy-server接受HTTP和SOCKS5地址,格式为socks5://host:port。没有凭据——参见上面的陷阱。--proxy-bypass——以逗号分隔的域名列表,绕过代理。不是装饰性选项:如果代理有内部服务或本地API,通过居民通道转发它们会产生额外的流量费用。--isolated将配置保存在内存中,不会写入磁盘。对于每个任务都需要从头开始时很有用。反之,cookie不会在重启时保留,每个会话对于网站看起来都是新访客。--user-data-dir——相反,持久配置。对于需要授权的场景,请使用它,而不是隔离,并确保固定IP(见下文关于粘性会话的部分)。--storage-state允许在隔离会话中插入保存的cookie和localStorage——这是前两者之间的折中。--allowed-origins和--blocked-origins限制代理可以访问的地方。被低估的节省:代理如果沉迷于分析和广告域,流量消耗会轻易增加三倍。--device(例如,"iPhone 15")和--user-agent更改代理呈现的浏览器类型。请根据代理类型一致地设置它们:移动User-Agent与数据中心IP叠加——这是一个矛盾,反机器人系统会立即识别。
关于--cdp-endpoint:它将MCP连接到已启动的浏览器。此时,代理不是通过MCP标志设置,而是在启动该浏览器时设置——这是“代理已设置,但IP仍然”的典型原因。
browser-use:通过ProxySettings设置代理
如果代理是基于browser-use构建的,配置将进入设置对象,这里可以传递用户名和密码——它们通过API而不是命令行传递:
from browser_use import Browser, ProxySettings
proxy = ProxySettings(server='http://gate.example.com:8080', username='user', password='pass', bypass='localhost,127.0.0.1')
browser = Browser(proxy=proxy)
server字段是必需的,其他字段是可选的。相同的原则也适用于纯Playwright:代理可以在启动浏览器时全局设置,或者通过browser.newContext({ proxy: { server: ... } })为每个上下文单独设置。第二种方式是并行代理的关键:每个上下文获得自己的出口地址,十个任务不会共享一个IP。
云浏览器:会话级别的代理
在Browserbase和类似服务中,浏览器运行在他人的云中,因此启动标志不可用——代理在会话参数中设置,通常是http://用户名:密码@网关:端口格式的环境变量。Chromium的限制在这里并不妨碍:云提供商自己解析字符串并从内部配置浏览器。
实际细节:云浏览器有自己的代理池,所有客户共享。如果任务对地址的声誉敏感——登录账户、与您已经熟悉的平台工作——自己的通道比公共通道更可预测。
轮换或固定:根据任务类型选择
新手的错误是对每个请求启用轮换,并惊讶于为什么代理被注销。代理场景有两种模式,它们不可互换:
- 每个请求轮换(在ProxyCove中是端口824)——用于侦查:绕过一百个商品,收集结果,检查不同地区的价格。每个请求都从新地址发出,难以将它们关联在一起。
- 固定会话(端口10000+,更换间隔从1到120分钟)——用于所有由步骤组成的任务:登录、购物车、多页面表单、与界面的长对话。如果在链中间更改IP,网站在最佳情况下会要求重新授权,最坏的情况下会将会话标记为可疑。
代理几乎总是以第二种模式运行:它本质上是执行一系列步骤,而不是一次性操作。有关选择间隔的详细信息和典型错误已在关于何时需要粘性会话及其配置的指南中进行了分析。
五个潜在问题
- 带有授权的SOCKS5在Chromium中。 Playwright中有
socks5://语法,但“SOCKS5加用户名和密码”的组合在Chromium浏览器中历史上存在问题——相应的请求在Playwright跟踪器中自2021年11月以来一直开放。如果有选择,代理请使用HTTP(S)通道,它更可预测。 - DNS和WebRTC泄漏。 流量通过代理,但名称直接解析或WebRTC返回真实地址——整个伪装失去意义。必须在启动代理之前检查这一点:如何在通过代理工作时关闭WebRTC.
- 地理和语言不同步。 IP在德国,机器的时区是莫斯科,界面语言是英语——这样的组合本身看起来像自动化。在Playwright中,语言和时区通过上下文参数设置,请确保与代理所在国家一致。
- 您未请求的流量。 代理完全打开页面,包括图片、字体和广告脚本。在按流量计费的居民通道上,这是一项显著的开支——请阻止不必要的域名,并在可能的情况下禁用媒体加载。
- 代理未在浏览器启动的地方设置。 在通过
--cdp-endpoint、通过Docker包装或通过云服务工作时,MCP标志不会影响实际连接。设置后首先要做的事情是让代理打开任何IP检查服务,确保地址和国家是正确的。
选择代理类型的原则
规则很简单:任务越接近真实用户,地址就越“人性化”。
- 居民代理——代理的基础。这些是家庭提供商的地址,对于网站来说,代理看起来像普通访客。在有Cloudflare、区域价格和任何反机器人提示的地方都需要。
- 移动代理——社交网络和对账户特别敏感的平台的重型武器。一个移动地址背后有成千上万的真实用户,因此完全禁止它对平台来说代价高昂。
- 数据中心代理——用于内部API、测试环境和没有保护的开放源。快速且便宜,但在受保护的网站上,代理几乎会立即遇到挑战。
对于代理场景的有用细节:在ProxyCove中,协议的更改通过替换连接字符串中的前缀进行——HTTP、HTTPS和SOCKS5可以在同一代理上使用,无需重新配置代理。池中有超过195个国家,因此“向代理显示本地结果”可以通过购买时选择国家来解决。
总结
将代理连接到AI代理并不是一行代码,而是连续三个解决方案:如何授权(对于无头代理几乎总是使用IP白名单,而不是密码)、在哪里设置代理(MCP标志、设置对象或云会话参数——但必须在实际启动浏览器的地方)以及以何种模式工作(对于多步骤场景——固定地址,而不是每个请求的轮换)。此外,必须在实际启动之前检查DNS和WebRTC泄漏。
仔细完成这一过程一次——代理将不再浪费代币与验证码对话。ProxyCove的居民代理可以在几分钟内连接到Playwright MCP和browser-use,按流量计费,IP白名单可在控制面板中为无头模式启用。
