automation

云浏览器还是本地浏览器:真正的区别是什么

云浏览器和本地浏览器的真正差异在于会话跑在哪里、谁能看到它,而不是功能清单。这里是这条边界实际改变的内容。

更新于 6 分钟阅读 Agilelogin product team

要点

  • 云浏览器和本地浏览器真正的区别在于会话跑在哪里,而不是哪一个功能更多。
  • 托管浏览器的出口 IP、机器特征和网络路径归提供方的基础设施所有,不归操作方所有——这是关于信任边界的事实,不是某种变通办法。
  • 智能体与托管浏览器之间的每一跳都会增加往返延迟;本地浏览器直接去掉了这一跳。
  • 托管浏览器的运营方能看到浏览器与其控制平面之间的流量;本地浏览器不存在这样一个第三方。
  • 没有哪一种架构天然”更好”——两者回答的是不同的问题:谁需要看到什么。

浏览器跑在哪里,以及这改变了什么

“云浏览器”和”本地浏览器”描述的是同一款软件运行的两个不同位置,而这个位置就是全部关键所在。云浏览器运行在提供方运营的基础设施上——数据中心、容器集群、一批无头实例——智能体或脚本通过网络访问它,通常是通过以远程 WebSocket 端点形式暴露的 CDP。本地浏览器运行在操作方自己的机器上,它暴露的任何自动化接口也留在这台机器上。

这个位置决定了信任边界。使用托管浏览器时,提供方的基础设施位于操作方和浏览器加载的每一个页面之间:它终止连接、可以记录经过它的内容,并且无论有没有人去读这些日志,它都是会话的一方。使用本地浏览器时,唯一涉及其中的基础设施是操作方自己的设备。两种安排都不天然更安全——运营良好的托管集群可以做到专业隔离,维护不善的本地机器也可能是更弱的一环——但它们不是同一条边界,把二者当作可以互换是问题开始的地方。在选择之前值得问的问题,不是”哪个更强大”,而是”除了操作方之外,还有谁最终能看到这个会话”。

自动化场景下的延迟与位置

位置还带来第二个更具体的后果:距离会消耗时间。本地浏览器在同一台机器上接收指令并执行,指令和页面之间没有网络跳转。托管浏览器至少会增加一次往返——一旦脚本发出的是一连串 CDP 调用而不是单次请求,往往会有好几次——这发生在自动化逻辑所在的位置和浏览器实例实际所在的位置之间。对少数几个动作而言,这点开销可以忽略不计。但对一个要向页面发出上百条小指令、等待选择器、并对结果作出反应的工作流来说,这些往返会累积起来,“在这台机器上”和”在提供方网络上的某处”之间的差异,就会成为工作流总运行时间里实实在在的一部分。

在规模化场景下,地理位置只会让这一点更明显,而不是相反。托管浏览器实例部署在提供方有算力的地方,这未必靠近操作方,也未必靠近工作流需要访问的站点。本地浏览器的位置是固定且已知的:就在操作方设备已经所在的地方,走的是那台机器已经拥有的、通往目标站点的网络路径。可预测的位置并不意味着在每种情况下都更快——一个拥有出色对等互联的数据中心可以胜过家庭宽带——但它减少了一个变量,让工作流运行缓慢却没人说得清原因时,少一件需要排查的事。

托管浏览器能看到什么,而本地浏览器看不到

一旦自动化进入画面,第一节提出的可见性问题就有了具体形态。托管浏览器的提供方能够观察到——这是架构层面的事实,而不是某个厂商特有的政策——浏览器实例与控制它的一方之间的流量、会话运行期间积累的 Cookie 与存储数据,以及浏览器访问的每个站点都能看到的网络身份——出口 IP、机器特征。这不需要任何人怀有恶意;“提供方的基础设施处在中间”在实践中就是这个意思。本地浏览器不存在与之对应的第三方。它的 Cookie 与存储数据留在操作方设备上,它的网络出口就是操作方已经配置好的那个,浏览器和它访问的站点之间也没有提供方的基础设施。

这也是 Profile 起作用的地方,与浏览器跑在哪里无关。一个驱动本地浏览器的自动化接口,仍然需要自己那套关于”哪个 Profile 归属哪个会话”的纪律——位置改变的是还有谁能看到一个会话,而不是工作流本身是否需要按智能体隔离、标注清晰的状态。一个没有按 Profile 隔离的本地浏览器,仍然可能让一个工作流的 Cookie 泄漏进另一个工作流的会话。架构回答的是和隔离模型不同的问题,二者互不替代。

这是架构上的区别,不是一张功能清单

用一张对比表——速度、成本、搭建成本各占一行——来回答”云浏览器还是本地浏览器”很有诱惑力,就像购买指南那样。但这种框架低估了真正的差异。成本和搭建成本是某个具体产品定价与打包方式的属性,会随厂商和月份变化。会话跑在哪里、除了操作方之外还有谁能看到它,并不会随定价变化——从浏览器被部署到某处的那一刻起,这就由架构决定了。这才是在做出选择之前值得思考的区别:不是哪家的功能清单目前更好看,而是工作流的状态和流量实际会落在哪里,以及对于这个工作流所处理的内容来说,这个答案是否可以接受。

没有哪种架构对每项任务都是正确的默认选择。一个需要以单台机器无法支撑的规模持续运行、且不依赖某台特定操作方设备保持在线的工作流,有充分的理由选择托管基础设施。一个围绕着操作方希望完全不放到第三方基础设施上的账号和会话构建的工作流,同样有充分的理由把浏览器留在本地。“云端还是本地”的诚实答案是:这取决于谁需要看到这个会话——这个问题值得认真回答,而不是默认选择当初最容易搭建起来的那种架构。