📦 The legacy system has been retired. Any proxies you already generated keep working until their traffic is used up — for help, contact [email protected].

← Hell World Blog··11 分钟阅读

AI Agent 的代理技术栈 — browser-use、Computer Use、MCP、Operator

给 LLM 驱动的网页 Agent 选代理,到底什么方案真正管用。为什么 Agent 流量在反爬眼里一眼可疑、粘性会话与轮换会话怎么选、住宅与 ISP 怎么取舍,以及一套可直接套用的 browser-use 和 Anthropic Computer Use 接线示例。

Maya Chen#ai-agent#browser-use#mcp#automation#residential

过去这一年里我们看到的 Agent 流量,比之前五年加起来还要多。形态也变了。2023 年典型的客户是跑一批 Playwright worker 反复爬那五个固定域名;2026 年典型的客户则是跑一个 LLM 驱动的 Agent,它的执行计划指到哪它就去哪——在十几家零售商之间比价、在 SEC 文件和财报电话会纪要之间来回跳着做调研、对着一长串小众网站自动下单。这类负载的代理决策,跟你给 2023 年爬虫做的决策完全是两回事,而很多 Agent 开发者都做错了。

这篇文章其实就是客户上门说"本地跑得好好的,一上生产就挂"时我们给出的那套实操建议。我们会讲清楚:为什么 Agent 流量在反爬栈眼里显得可疑、什么样的会话策略真正管用、怎么按目标站的难度档位选 IP 池,以及我们看到客户最终沉淀下来的几套接线方案——覆盖 browser-use、Anthropic Computer Use、OpenAI Operator 以及 MCP 风格的工具服务器。这些都不是纸上谈兵,而是从我们工单队列里提炼出来的真实模式,并在合适的地方回链到住宅代理ISP 静态移动数据中心产品。

为什么 Agent 流量是反爬的活靶子

拿一个全新的 LLM Agent,配一个干净的住宅 IP,丢到一个有 Cloudflare 防护的站点上,看着它失败。IP 没问题,有问题的是 Agent。原因跟 2010 年代早期 Selenium 脚本失败的原因一模一样:就算 IP 看起来像人,流量也不像人。

有三种模式会稳定地把 Agent 出卖掉。

节奏太均匀。 人的停留时间是有起伏的——扫两秒、点一下、看八秒、滚动、走神、再回来。而 LLM 驱动的 Agent 是一个确定性循环:收到截图或 DOM、思考几百毫秒、点击、等页面加载、重复。每个动作之间的间隔会紧紧地聚集在模型的响应延迟附近。行为模型在一次会话里就能识别出来——十来次交互之后,这个时间间隔的直方图就不像人了。

视口暴露身份。 browser-use 这个基于 Playwright 的库,已经成了事实上的开源 Agent 标准栈,它默认用 headless Chromium 配一个固定视口。Anthropic Computer Use 从一块虚拟显示器上截图,这块显示器通常是 1024x768。OpenAI Operator 跑在远端基础设施上,带着 OpenAI 自己的指纹。这些都跟反爬从真实用户那里看到的视口分布对不上。

鼠标轨迹是直线。 Playwright Agent 点击一个坐标时,光标是直接跳过去的。真人的光标会划弧线、会过冲、会回拉修正、会抖动。PerimeterX 和 Akamai 的传感器层尤其会采集鼠标移动轨迹,对这种直线"瞬移"打很低的分。

User-Agent 是框架默认值。 browser-use 自带 Playwright 的 UA,Computer Use 也有自己的默认值。不去覆盖这些默认值的 Agent,会跟成千上万个同样的 Agent 共用同一个指纹,而这些指纹早就进了同一批威胁情报源。等你把它指向一个真实站点的时候,那个默认 UA 已经在拦截名单上了。

这就把失败模式分成了两半。再高端的住宅 IP 也救不了一个节奏和视口都在大喊"我是自动化"的 Agent;而一个调教好、隐身做得到位的 Agent,仍然需要一个干净的 IP。这两层是叠加的。 只在一层上花钱的开发者,会想不通自己的成功率为什么总是不上不下。

三层检测难题

代理只是三层中的一层,只盯着代理想问题的客户,预算分配是错的。

第一层:TLS 指纹。 JA3 和 JA4 是对 TLS ClientHello 做的哈希——密码套件列表、扩展顺序、支持的椭圆曲线组。真实的 Chrome 会产出一个特定的 JA4。用默认 urllib3 的 Python requests 会产出另一个,而这个值跟全世界所有其他 Python 脚本干干净净地映射在一起。TLS 指纹跟 User-Agent 头对不上,就是一个很强的自动化信号。代理不会改变你的 TLS 指纹——代理是透明的,ClientHello 还是你的客户端产出的——所以这一层是 Agent 自己的活。

第二层:IP 类别。 这才是代理所在的层。数据中心 ASN(AWS、GCP、各大主机托管商)默认被标为高风险。来自真实 ISP 的住宅 ASN 评分更高。移动运营商评分最高,因为对站点来说,误封一个运营商 IP 的代价太大了。ISP 类代理——托管在数据中心、但挂着住宅 ASN——处在中间。

第三层:行为。 请求一旦进来,会话就会随时间被持续打分。鼠标移动、点击节奏、滚动模式、页面停留时长。默认情况下,Agent 在这一层都很糟糕。

陷阱在于:只修好一层,另外两层照样把你标出来。高端住宅配 Python 的 TLS 指纹,会失败;调教好的 headless Chrome 跑在 AWS IP 上,会失败。代理是答案的一部分,不是答案的全部。

粘性还是轮换:Agent 的会话难题

这是我们见到的最大的配置错误。客户带着爬虫时代的习惯过来——那个年代默认就是按请求逐次轮换——照着这个思路配 Agent,会话状态立刻就崩了。

Agent 是有状态的。一个在做下单的 Agent,有购物车、有会话 cookie、有 CSRF token,还有一堆 UI 状态,这些全都假定是同一个浏览器在跨多次请求跟服务器对话。在"加入购物车"和"去结算"之间轮换 IP,站点就会让会话失效——有时悄无声息,有时直接把 IP 轮换当成劫持企图标记出来。不管哪种,Agent 都会丢掉进度然后重试,这既烧带宽又拉高反爬的怀疑度。

对几乎所有 Agent 负载来说,正确的设置都是粘性会话。在 Hell World 住宅代理上,粘性是通过用户名来配置的——加一个会话 token 后缀,形如 username-session-abc123——在上游 IP 轮换之前能保持大约 30 分钟。ISP 静态本身就是粘性的。移动粘性通常是 10-30 分钟,具体取决于 IP 池。

时间窗口很关键。粘性窗口太短,会话会在流程中途丢状态;住宅上粘性窗口设太长也没用,底层 IP 到点照样在上游轮换,因为住宅 IP 是真实的 ISP 连接,本来就会循环。做得好的客户会把窗口设得比自己最长的任务再长一点点——一个 5 分钟的下单流程,配 10 分钟粘性就很从容。而对动辄数小时的调研会话,ISP 静态更稳妥,因为底下什么都不会轮换。

还有一套模式适合长时间运行的 Agent:按任务轮换、任务内粘性。Agent 从队列里取一个任务,拿到一个全新的粘性会话,跑到完成,丢掉这个会话。下一个任务再拿一个新的。对于任务彼此独立的 Agent 集群——调研、比价、监控——这才是对的形态。

按目标档位选 IP 池

不是每个目标都需要同一种代理。数据中心和移动在零售价上大约差 30 倍,那些不管什么目标都默认用住宅的客户,在低对抗目标上是在超额花钱。

目标档位 示例 推荐 IP 池 粘性窗口
第一档 — 低反爬 公开文档、新闻站、搜索结果页、政府开放数据、维基百科 数据中心或轻量住宅 短窗口或逐请求
第二档 — Cloudflare 防护的 SaaS、B2B 大多数 SaaS 后台、B2B 门户、中端电商、分类信息 住宅 5-10 分钟
第三档 — 高对抗、高价值 银行、票务、球鞋站、社交平台、高端流媒体、重账号工作流 ISP 静态独享,或 4G 移动 整个会话生命周期

第一档是 Agent 开发者最浪费钱的地方。如果你的 Agent 是去那些没有反爬的站点上调研公开信息,数据中心代理就够了,而且便宜一个数量级。唯一值得加钱往上走的理由,是数据中心覆盖不到的地理位置。

第二档是我们工单里 Agent 流量的大头。大多数 B2B SaaS 用的是中等灵敏度的 Cloudflare Bot Management。住宅粘性 5-10 分钟是标准答案。廉价池在这里会挂,而高端池能过——原因我们在反爬态势那篇里讲过:便宜住宅 IP 回收得太快,近期的滥用历史还粘在上面。

第三档是 Agent 要么贵贵地成功、要么便宜地失败的地方。重账号流程——任何要登录的、任何背后有风控团队的——对 IP 变化的惩罚极其凶狠。ISP 静态独享是首选。你按月租下一个特定 IP,站点看到你的账号永远从同一个地址过来,你就不会触发"异常登录位置"告警。球鞋发售或票务的模式是移动粘性,详见球鞋代理指南

接线方案

我们看到客户实际部署的三套配置,大致形态如下。

browser-use + 住宅粘性

browser-use 接受一个 BrowserConfig,里面可以传一个 Playwright 风格的 proxy 字典:

proxy_user = "your_account-session-task42"
proxy = {
  "server": "http://gate.hellworld.io:7777",
  "username": proxy_user,
  "password": "your_password"
}

用户名里的会话 token(-session-task42)维持着粘性窗口。每个任务挑一个 token,在任务期间一直用,任务结束就丢掉。Agent 的规划器不需要知道代理的存在——它看到的是 Playwright 加载出来的页面,而那已经是经代理路由过的页面了。再配上一个 Chrome UA 和一个调教过的视口,你就有了一套能用的第二档技术栈。

Anthropic Computer Use + ISP 独享

Computer Use 跑在一个带虚拟显示器的容器里。出站流量会走操作系统层面配置的 HTTP/HTTPS 代理,通常是通过传进去的 HTTP_PROXYHTTPS_PROXY 环境变量。对于重账号工作流——一个管理 SaaS 后台的 Agent、一个银行流程——把这些环境变量指向你按月租下的 ISP 静态代理。

相比住宅,它有两点好处。一是 IP 不轮换,所以只要 Agent 在跑,会话就一直稳定。二是同一个 IP 多次对着同一目标运行,会积累正向声誉,而不是每次都从冷启动开始。当一个 ISP IP 向某个 SaaS 账号持续输送几周的正常流量之后,反爬栈就学会了:这个 IP 加这个账号是一对正常组合。

MCP 服务器 + 按任务粘性住宅

MCP(Model Context Protocol)是 Anthropic 给工具服务器定的标准——Agent 调用 MCP 服务器暴露出来的工具,比如 fetch_urlsearch_web。当这些工具发起出站 HTTP 请求时,代理配置由 MCP 服务器持有,Agent 根本看不到。

模式是这样的:服务器从 Agent 那里接一个 task_id,据此派生出一个会话 token,然后把抓取请求通过住宅上的 username-session-${task_id} 路由出去。每个任务拿到自己专属的粘性出口;任务一结束,会话就丢掉。这是我们在生产栈里见到的最干净的职责分离——Agent 负责规划,MCP 层负责网络身份,而按任务隔离限制了某个 IP 被标记后的交叉污染。

地理位置比 Agent 开发者想的更重要

数量惊人的一批 Agent 开发者会忘了:"调研德国当前的价格"需要一个出口在德国的 IP。他们从美国的执行环境、用一个美国住宅 IP 跑 Agent,Agent 去搜 Google,Google 返回的是 google.com 的英文结果配美国价格,然后 Agent 一本正经地把这些当成德国价格报上来。Agent 自己根本意识不到。用户拿到错误结果,反过来怪模型。

Hell World 住宅覆盖 210 个国家,支持国家、州/省、城市级定位。地理选择器放在用户名里——username-country-de-session-task42 就是一个德国住宅出口。对于做本地化调研的 Agent,要把地理感知做进规划器:任务说"在德国"时,工具调用就指定对应的地理参数。14 个品牌的地理覆盖明细在对比页里,需要知道我们都测过哪些的话可以去看。

成本账

一个典型的 Agent 任务每小时烧掉 50-300 MB 带宽,取决于它是截图密集型(Computer Use)还是 DOM 密集型(browser-use)。按我们 $0.23/GB 的住宅价算,一小时 Agent 工作的成本是个位数美分。这跟 LLM 推理成本比起来微不足道。

真正会快速飙升的数字是重试。一个撞上 CAPTCHA、失败、重新规划、重试、再次失败的 Agent,在单个任务上很容易把带宽翻 5-10 倍。挑战验证页会加载图片和 JS,这些全都会计费。真正重要的成本优化是避免重试——第一次就选对池、正确地维持粘性会话、把 Agent 的隐身调到不触发挑战验证。在廉价池上省下的那 $0.05/GB,跟因重试损失掉 30% 任务比起来根本不值一提。

该监控什么

按优先级排序,能早期发现问题的几个指标:

按目标的成功率。 把任务按目标域名分桶。某个桶掉下去,意味着那个目标收紧了,或者你这个池的 IP 进了它的拦截名单。局部信号每次都比整体成功率更有用。

被标记前的会话寿命。 一个粘性会话在被挑战之前能处理多少次请求?如果这个数字随时间下降,说明你的池在退化,或者你的行为在泄露身份。如果它随目标不同而变化,说明你有针对特定目标的调优要做。

出口 IP 类别构成。 抽样出口,检查 ASN 分布。如果你买的是住宅,却有 20% 的出口显示为数据中心 ASN,说明你的池在混类——去找你的供应商谈。

代理解决不了什么

我们是卖代理的,所以直说:没有任何代理能修好一个工程做得稀烂的 Agent。TLS 指纹错了,IP 无所谓;节奏机械了,IP 无所谓;视口是框架默认值,IP 无所谓。隐身和 IP 声誉是两个独立的层,两者都得做对。

我们见过廉价池在调教好的 Agent 上能用,也见过高端池在马虎的 Agent 上照样挂。把第一轮迭代花在 Agent 本身上——把 User-Agent、视口、TLS 指纹、节奏都搞对。然后再加代理。顺序很重要,因为当你确定 Agent 本身是干净的,调试会快得多。

一旦做到了这一点,代理这一层就成了一个有实际意义的杠杆。第一档的活转到数据中心,省钱。第二档选对住宅品牌,不再在 Cloudflare 上栽跟头。第三档走 ISP 或移动,登录态流程不再被标记。对比页是挑池的起点;住宅ISP移动数据中心各页有具体细节。按档位选、把粘性配对、在任务需要的地方做地理定位、上生产后做监控。这就是全部的技术栈。

One wallet, the full Hell World lineup

14 residential brands, 3 4G mobile pools, Static ISP, and 2 unlimited tiers. Top up $5, route some traffic, form your own opinion. Bandwidth never expires.

客户怎么说

5.0/5 · 44 条真实评价来自 Discord #feedback 频道

★★★★★

good customer service

service was delayed due to system error but once the team was aware, was immediately given my proxies and gave extra to make up for it
Akbx
Akbx
★★★★★

great service

resolved issue quickly ! thanks
zfly
zfly
★★★★★

I paid for the plan and the proxies never arrived

I need help please, it's been an hour already
SuperBears8
SuperBears8
★★★★★

Good service

Fast response and resolution
Allen
Allen
★★★★★

Paypal Issue

Had an issue with paypal and the support was able to get me up and running within the hour. Service is great!
inu
inu
★★★★★

Awesome support and great product

Was having issues setting up proxies from a couple pools. Support responded quickly and was very helpful. Everything running smoothly in no time.
terdleman
terdleman
★★★★★

good customer service

service was delayed due to system error but once the team was aware, was immediately given my proxies and gave extra to make up for it
Akbx
Akbx
★★★★★

great service

resolved issue quickly ! thanks
zfly
zfly
★★★★★

I paid for the plan and the proxies never arrived

I need help please, it's been an hour already
SuperBears8
SuperBears8
★★★★★

Good service

Fast response and resolution
Allen
Allen
★★★★★

Paypal Issue

Had an issue with paypal and the support was able to get me up and running within the hour. Service is great!
inu
inu
★★★★★

Awesome support and great product

Was having issues setting up proxies from a couple pools. Support responded quickly and was very helpful. Everything running smoothly in no time.
terdleman
terdleman