Steel Browser 深度解析:为 AI 智能体构建的企业级云端浏览器 API

基于 Docker 的云端浏览器沙盒,支持 Puppeteer/Playwright/Selenium,会话持久化、反检测、代理轮询内置。

亿牛云技术团队2026年5月18日6 分钟阅读

引言:从用户端到服务器端

前两篇文章介绍的 Nanobrowser 和 Browy 都是用户端工具——运行在开发者的个人桌面浏览器中。它们利用了用户已有的登录态、Cookie 和家庭 IP,天然避开了 CAPTCHA 和 WAF 检测。

但这类工具有一个天花板:无法规模化

当你需要同时处理 50 个采集任务、管理 1000 个独立会话、或是在 CI/CD 管道中运行自动化测试时,基于浏览器扩展的方案就不够用了。你需要的是基础设施级别的浏览器管理。

Steel Browser 正是为此而生——一个开源的、可自托管的云端浏览器 API,将 Chrome 实例的管理抽象化为 REST API 调用。

架构概览

Steel 的核心是一个基于 Fastify 的 Node.js 服务,封装了 Puppeteer 的 Chrome 控制能力,并通过 REST API 暴露出来。

┌─────────────────────────────────────────┐
│            Steel Browser Server          │
│                                         │
│  ┌─────────┐  ┌──────────┐  ┌────────┐ │
│  │ Sessions │  │   CDP    │  │ Quick  │ │
│  │  Manager │  │  Proxy   │  │ Actions│ │
│  └────┬────┘  └────┬─────┘  └───┬────┘ │
│       │            │            │       │
│  ┌────▼────────────▼────────────▼────┐  │
│  │         Chrome Instance Pool      │  │
│  │     (Puppeteer + CDP + Stealth)   │  │
│  └────────────────┬──────────────────┘  │
│                   │                     │
│  ┌────────────────▼──────────────────┐  │
│  │  Built-in: 代理链 / 扩展 / 录制    │  │
│  └───────────────────────────────────┘  │
└──────────────────┬──────────────────────┘

         REST API / WebSocket

    ┌──────────────┴──────────────┐
    │  Puppeteer     Playwright   │
    │  Selenium      自定义客户端   │
    └─────────────────────────────┘

核心能力拆解

能力技术实现业务价值
会话管理隔离的浏览器配置文件,跨请求保留 Cookie/localStorage/IndexedDB智能体可登录一次后数天恢复操作
双协议兼容同时暴露 CDP 端点和 Selenium WebDriver 接口现有 Puppeteer/Playwright/Selenium 代码可直接接入
快速操作 API/scrape /screenshot /pdf 等高级端点减少启动浏览器的机械开销
反检测隐身配置 + 代理轮询 + CAPTCHA 求解提高自动化在 WAF 下的存活率
扩展支持加载自定义 Chrome 扩展可注入录制器、分析器等辅助工具

部署方式

Docker 快速启动(推荐)

docker run -p 3000:3000 -p 9223:9223 ghcr.io/steel-dev/steel-browser

启动后访问 http://localhost:3000 查看 API,http://localhost:3000/ui 查看调试界面,端口 9223 用于 Chrome DevTools 远程调试。

一键云部署

平台方式
Railway一键部署按钮
Render一键部署按钮
自托管Docker Compose

自定义 Chrome 路径

export CHROME_EXECUTABLE_PATH=/path/to/your/chrome
docker compose up

API 使用详解

Steel 提供两种交互方式:会话模式和快速操作模式。

会话模式(Session Mode)

适用于有状态的长时间运行智能体。需要先创建会话,然后在同一会话中执行多次操作。

创建会话:

curl -X POST http://localhost:3000/sessions \
  -H "Content-Type: application/json" \
  -d '{
    "stealth": true,
    "proxy": {
      "server": "http://proxy.16yun.cn:8888",
      "username": "user",
      "password": "pass"
    }
  }'

在会话中导航:

curl -X POST http://localhost:3000/sessions/<session-id>/cdp \
  -H "Content-Type: application/json" \
  -d '{
    "method": "Page.navigate",
    "params": { "url": "https://example.16yun.cn" }
  }'

获取页面内容:

curl http://localhost:3000/sessions/<session-id>/scrape

关闭会话:

curl -X DELETE http://localhost:3000/sessions/<session-id>

快速操作模式(Quick Actions)

适用于无状态的单次数据提取,无需管理会话生命周期。

抓取页面内容:

curl http://localhost:3000/scrape \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.16yun.cn",
    "stealth": true
  }'

截取全页截图:

curl http://localhost:3000/screenshot \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.16yun.cn",
    "fullPage": true
  }' --output page.png

生成 PDF:

curl http://localhost:3000/pdf \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.16yun.cn"
  }' --output page.pdf

SDK 方式

Steel 提供了 Node.js 和 Python 的官方 SDK:

# Node.js
npm install steel-sdk
 
# Python
pip install steel-sdk
from steel_sdk import Steel
 
client = Steel(base_url="http://localhost:3000")
session = client.sessions.create(stealth=True, proxy="http://user:pass@proxy.16yun.cn:8888")
page = session.navigate("https://example.16yun.cn")
content = page.scrape()
session.close()

反检测与代理集成

Steel 最大的工程价值之一是其内置的反检测能力。

代理轮询配置

Steel 支持多层级代理链配置:

curl -X POST http://localhost:3000/sessions \
  -H "Content-Type: application/json" \
  -d '{
    "stealth": true,
    "proxy": {
      "server": "http://proxy.16yun.cn:8888",
      "username": "user",
      "password": "pass"
    }
  }'
代理类型推荐产品适用场景
隧道代理(自动轮换)爬虫代理大规模匿名采集,IP 自动管理
API 代理(精细控制)API 代理每次请求切换 IP,精细提取策略
独享代理(固定出口)独享代理长期登录态任务,稳定身份

隐身配置

Steel 内置了多层反检测机制:

  • 隐身插件(Stealth Plugin):覆盖 WebDriver 属性、navigator 特征、Chrome 自动化痕迹
  • 指纹管理:修改浏览器指纹参数,降低被识别概率
  • 扩展注入:可加载自定义隐身扩展增强能力

错误码与排错

在使用代理时,常见的错误码处理:

错误码含义建议操作
407代理认证失败检查用户名密码配置
429请求频率超限降低并发数,增加间隔
403IP 白名单错误检查 IP 白名单配置(API 代理场景)
504目标超时重试 2-3 次,跳过持续失败的任务

会话持久化的工程价值

Steel 最有价值的功能之一是会话持久化

在 AI 浏览器自动化中,登录是最麻烦的环节之一——需要处理 CAPTCHA、多因素认证、复杂的表单提交。如果每次任务都需要重新登录,成功率会显著下降。

Steel 的会话持久化意味着:

第一天:智能体登录目标网站(手动或自动),通过 CAPTCHA
     ↓  Cookie + localStorage + IndexedDB 被持久化到隔离配置文件
第三天:智能体恢复同一会话
     ↓  无需重新登录,上次的认证状态仍然有效
第七天:同一配置继续使用...

这在数据采集需要高频次访问同一站点、或管理多个登录账号的场景下尤其有用。

规模化部署的挑战

Steel 虽然在架构上贴近生产部署,但在规模化运营中仍然面临一些工程挑战(截至 2026 年中旬):

Issue描述状态
指纹生成一致性自托管 API 在生成一致指纹时偶发失败社区讨论中
Chrome 版本适配部分指纹生成器缺少特定 Chrome 版本的桌面样本持续跟进上游
iOS Safari iframe 兼容嵌入式 iframe 在 iOS Safari 上的键盘输入存在问题已记录
Akamai 3.0 绕过社区高度关注能否可靠绕过 Akamai 3.0 反爬系统讨论中

这些问题反映了构建企业级浏览器基础设施的极端复杂性——尤其是面对 Akamai、Datadome 等深度浏览器指纹检测系统时,纯粹依赖 JavaScript 垫片的隐身方案存在天花板。

Steel 与其他方案的对比

维度SteelNanobrowserBrowyagent-browser
部署方式Docker 容器 / 云服务Chrome 扩展Chrome 扩展 + 本地宿主CLI + 守护进程
执行环境云端无头桌面有头桌面有头终端无头/有头
并发能力高(多会话多实例)低(单浏览器)低(单标签页)中(单实例但快速)
状态持久化隔离配置文件跨请求浏览器原生 Cookie沙盒文件系统守护进程跨命令状态
反检测内置 + 代理轮询继承用户浏览器继承用户浏览器取决于底层引擎
协议兼容Puppeteer/Playwright/Selenium仅扩展 APICDP + 自定义CDP + CLI
适合团队数据团队 / QA 团队个人个人个人 / 小团队

总结

Steel Browser 代表了一条与 Nanobrowser、Browy 截然不同的技术路线:它不依赖用户的桌面浏览器,而是将浏览器管理抽象为可编程的 REST API。这种基础设施化的设计使其成为大规模并发 AI 智能体的理想后端。

但它也要面对云端自动化的原生问题——数据中心 IP 的可疑性、CAPTCHA 的处理成本、以及深层次反检测系统的对抗。对于需要长期、大批量采集的场景,Steel + 16YUN 爬虫代理 + 会话持久化 的组合是目前可落地的最强方案之一。

下一篇文章将介绍 agent-browser——Vercel Labs 开发的基于 Rust 的浏览器自动化 CLI,它对 Token 效率的优化达到了令人惊叹的程度。

需要企业代理方案?

我们可根据目标站点、并发规模与稳定性目标提供定制方案。