Cloudflare宣布推出Kitesurf,这是一款完全运行在Workers平台上的新网页浏览器,专为人工智能代理和自动化应用设计。目前,Kitesurf在试用阶段可通过Browser Run免费使用,但设有账户级使用限制。
Cloudflare表示,Chromium等传统浏览器主要是为人类需求构建的,因此包含模型和代理未必需要的功能与资源消耗。相比之下,Kitesurf侧重于机器可读内容、令牌数量、上下文容量、可扩展性、性能和成本,同时接受在视觉渲染准确度方面作出一定取舍。
专注于代理需求的浏览器
人工智能代理通常不需要标签页、视觉属性、扩展或设备间同步,但需要提取HTML、截取屏幕截图,并以低成本大规模处理网页。当代理处理不受信任的页面和来源时,其安全需求也有所不同,因此提示注入和工具安全等风险成为优先事项。
Kitesurf的开发始于发布前12周,受益于Cloudflare开发者平台的多项进展,包括在Workers中运行WebAssembly日趋成熟、动态隔离环境、基于SQLite的Durable Objects、Workers之间的RPC机制、Service Bindings、Node.js兼容性的改进以及运行限制的提升。
隔离且无状态的架构
Kitesurf由三个主要组件组成:Engine、PageScript和PageRenderer。Engine是唯一面向公众的组件;它处理Chrome DevTools Protocol的HTTP REST和WebSocket接口,并保存会话状态。其余组件则尽可能保持无状态,从而可以在发生故障时重新启动或销毁,并根据需求进行扩展。
SandboxOutbound Worker负责所有与互联网的通信,而其他组件则通过Dynamic Workers被禁止直接访问网络。该组件执行CORS策略,添加类似浏览器的标头,过滤响应,为每个页面隔离Cookie,并以403代码拒绝违反策略的请求。
PageScript为每个页面或内部框架使用独立的进程外隔离环境,并采用部分由Rust编写的Blitz和Stylo CSS解析器。PageRenderer则将计算后的页面对象转换为客户端可以JPEG、PNG或PDF等格式显示的帧。为处理故障情况,该系统经过设计,使错误导致空白帧或缺失元素,而不是令整个会话崩溃。
测试结果与性能
Kitesurf目前已通过超过21.5万个Web Platform Tests测试,并且每周新增数百项成功测试。覆盖情况较好的领域包括对代理至关重要的CSS、DOM、HTML、选择器、SVG和XHR。
在一项比较中,Browser Run对14个URL集合执行了五次快速操作的中位数运行。在截取屏幕截图时,Kitesurf消耗约380毫秒的处理器时间,而Chromium为1173毫秒;在提取HTML时,Kitesurf消耗229毫秒,而Chromium为877毫秒。屏幕截图的内存消耗为57.8 MiB,HTML提取为39.4 MiB;Chromium相应为271 MiB和273.7 MiB。
相比之下,Chromium的总耗时更短:截取屏幕截图耗时637毫秒,而Kitesurf为1148毫秒;提取HTML耗时472毫秒,而Kitesurf为820毫秒。Cloudflare将这一差异归因于Chromium的JIT优势以及软件渲染和编码成本,同时认为,在上述测试中降低三至七倍的内存和处理器消耗与运行成本和可扩展性的关联更大。
可用性与限制
可以通过在Browser Run的CDP端点中添加browser=kitesurf参数来使用Kitesurf;它还支持Puppeteer、Playwright、chrome-remote-interface,以及使用MCP和CDP的代理工具。此外,它也可通过Quick Actions使用,并提供一个公共Playground,用于测试URL、检查DOM和控制台消息、网络活动以及WebAssembly消耗。
Kitesurf适合需要渲染页面、提取内容、生成PDF文件或屏幕截图的代理,但需要接受它与Chromium浏览器并不完全兼容。目前,它不支持视频播放、WebGL,也不支持通过真实TLS指纹处理机器人挑战握手;它也不适合需要持续状态的长期认证会话。Cloudflare建议通过Kitesurf接口或Playground测试目标网站;如有需要,也可以使用默认的基于Chromium的Browser Run。
Cloudflare正在扩大CDP覆盖范围,改进屏幕截图和PDF文件的渲染准确度,提高WPT测试兼容性,并降低处理器、内存和总耗时。该公司表示,待Kitesurf准备就绪后,计划开放其源代码,使客户能够在自己的账户上部署专属版本。