Steel是一个开源浏览器 API,可以轻松构建与 Web 交互的 AI 应用程序和代理。您无需从头开始构建自动化基础设施,而是可以专注于 AI 应用程序,而 Steel 会处理复杂性。
此存储库是 Steel 背后的核心构建块,Steel 是一个生产就绪的容器化浏览器沙盒,您可以将其部署在任何地方。它包括内置的隐身功能、文本到 markdown 会话管理、用于查看/调试会话的 UI 以及通过 Puppeteer、Playwright 和 Selenium 🔥 等标准自动化框架进行的全面浏览器控制
Steel 处于公开测试阶段,并且每天都在发展。您的建议、想法和报告的错误对我们有很大帮助。不要犹豫,加入 Discord 上的对话或提出 GitHub 问题。我们阅读所有内容,回复大多数人,并爱您。
主要功能
它提供了一个 REST API 来控制、运行和管理生产就绪的浏览器环境。在后台,它管理浏览器实例、会话和页面,允许您以编程方式执行复杂的浏览任务,而不会遇到任何麻烦:steel-browser
- 完全浏览器控制:使用 Puppeteer 和 CDP 完全控制 Chrome 实例 - 允许您使用 Puppeteer、Playwright 或 Selenium 进行连接。
- 会话管理:跨请求维护浏览器状态、Cookie 和本地存储
- 代理支持:用于 IP 轮换的内置代理链管理
- 扩展支持:加载自定义 Chrome 扩展以增强功能
- 调试工具:内置请求日志记录和会话记录功能
- 防检测:包括隐身插件和指纹管理
- 资源管理:自动清理和浏览器生命周期管理
- 浏览器工具:公开 API 以快速将页面转换为 Markdown、可读性、屏幕截图或 PDF。
有关详细的 API 文档和示例,请查看我们的 API 参考或直接在 上浏览 Swagger UI。http://0.0.0.0:3000/documentation
安装和使用
最快的入门方法是构建并运行 Docker 镜像:
# Clone and build the Docker image
git clone https://github.com/steel-dev/steel-browser
cd steel-browser
docker compose up
或者,如果您安装了 Node.js 和 Chrome,则可以直接运行服务器:
npm run install
npm run dev
这将在端口 3000 上启动 Steel 服务器。
确保您已安装 Chrome 可执行文件并位于以下路径之一中:
-
Linux的:
/usr/bin/google-chrome
-
MacOS:
/Applications/Google Chrome.app/Contents/MacOS/Google Chrome
-
Windows (窗口):
C:\Program Files\Google\Chrome\Application\chrome.exe
或C:\Program Files (x86)\Google\Chrome\Application\chrome.exe
有关检查位置的更多详细信息,请查看 api/src/utils/browser.ts
。
用法
Steel 浏览器提供了一个 REST API 来控制由 Puppeteer 提供支持的无头浏览器。在后台,它管理浏览器实例、会话和页面,允许您以编程方式执行复杂的浏览任务。
完整的 REST API 文档可在 Steel 实例上找到,网址为 (例如, )。/documentationhttp://0.0.0.0:3000/documentation
Steel 提供了三种主要方式让您的代理执行浏览器自动化:
快速操作 API
、 和 端点允许您使用正在运行的 Steel 服务器从任何网页中快速提取干净、格式良好的数据。非常适合简单的只读按需作业:/scrape/screenshot/pdf
抓取网页
提取网页的 HTML 内容。
# Example using the Actions API
curl -X POST http://0.0.0.0:3000/v1/scrape \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com",
"waitFor": 1000
}'
截取屏幕截图
截取网页的屏幕截图。
# Example using the Actions API
curl -X POST http://0.0.0.0:3000/v1/screenshot \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com",
"fullPage": true
}' --output screenshot.png
浏览器会话 API
浏览器会话 API 允许您使用自定义选项或扩展(例如,使用自定义代理)重新启动浏览器,还可以重置浏览器状态。非常适合需要精细控制的复杂、有状态的工作流:
# Launch a new browser session
curl -X POST http://0.0.0.0:3000/v1/sessions \
-H "Content-Type: application/json" \
-d '{
"options": {
"proxy": "user:pass@host:port",
// Custom launch options
}
}'
Selenium 集成
**注意:**此集成不支持基于 CDP 的浏览器会话 API 的所有功能。
对于具有现有 Selenium 工作流的团队,Steel 浏览器提供了一个直接替代品,可在保持兼容性的同时添加增强功能:
# Launch a Selenium session
curl -X POST http://0.0.0.0:3000/v1/selenium/launch \
-H "Content-Type: application/json" \
-d '{
"options": {
// Selenium-compatible options
}
}'
Selenium API 与 Selenium 的 WebDriver 协议完全兼容,因此您可以使用任何现有的 Selenium 客户端连接到 Steel 浏览器。
// Example using the Selenium API
const builder = new Builder()
.forBrowser("chrome")
.usingServer(
`http://0.0.0.0:3000/selenium`
);
const driver = await builder.build();
console.log("Navigating to Google");
await driver.get("https://www.google.com");
// The rest of your Selenium code here...