如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
面向 AI 代理与应用的开源浏览器 API。 构建实时 Web 代理和浏览器自动化工具的最佳方式。
快速开始 · 文档 · 网站 · 示例库
Steel.dev 是一个开源浏览器 API,可轻松构建与 Web 交互的 AI 应用和代理。无需从零开始构建自动化基础设施,您可以专注于 AI 应用开发,而复杂的底层工作由 Steel 处理。
在底层,Steel 管理会话、页面和浏览器进程,让您能够以编程方式执行复杂的浏览任务,无需处理繁琐细节:
有关详细的 API 文档和示例,请查看我们的 API 参考,或直接访问 http://0.0.0.0:3000/documentation 浏览 Swagger UI。
[!NOTE] Steel 目前处于公开测试阶段,并且每天都在更新。您的建议、想法和错误报告对我们非常有帮助。欢迎加入 *** 参与讨论或在 GitHub 上提交 issue。我们会阅读所有反馈,回复大部分内容,并感谢您的支持。
如果您热爱开源、AI 和开发工具,我们正在全栈招聘!
开始使用 Steel 的最简单方法是创建 Steel Cloud 账户。或者,您可以将此 Steel 浏览器实例部署到云服务提供商或在本地运行。
如果您想部署到云服务提供商,我们已为您提供支持。
| 部署方式 | 链接 |
|---|
在本地部署/运行 Steel 浏览器实例的最简单方法是运行预构建的 Docker 镜像:
# 拉取并运行 Docker 镜像
docker run -p 3000:3000 -p 9223:9223 ghcr.io/steel-dev/steel-browser
这将在端口 3000 上启动 Steel 浏览器服务器(http://localhost:3000),并在 http://localhost:3000/ui 启动 UI。端口 9223 用于控制台调试器。
现在您可以创建会话、抓取页面、截取屏幕截图等。跳至 使用方法 部分查看快速示例。
或者,您可以使用 docker compose 分别运行 API 和 UI:
docker compose up
对于 Mac Silicon 用户,需要在 Docker compose 命令中传递以下环境变量标志,以在正确的平台上运行镜像:
DOCKER_DEFAULT_PLATFORM=linux/arm64 docker compose up
在本地开发时,您需要运行 docker-compose.dev.yml 文件而非默认的 docker-compose.yml 文件,以便反映您的本地更改。这将从 api 和 ui 目录构建 Docker 镜像,并分别在端口 3000 和 5173 上运行服务器和 UI。
docker compose -f docker-compose.dev.yml up
您还需要使用 --build 确保每次更改后重新构建 Docker 镜像:
docker compose -f docker-compose.dev.yml up --build
如果在自定义主机上运行,请创建 .env 文件(有关变量,请参见 docs/DEVELOPMENT_SETUP.md)或修改 docker-compose.dev.yml 使用的环境变量以使用您的主机。
或者,如果您已安装 Node.js 和 Chrome,可以直接运行服务器和 UI:
npm install
npm run dev
这也会在端口 3000 上启动 Steel 服务器,在端口 5173 上启动 UI。
确保已安装 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
自定义 Chrome 可执行文件
如果您有自定义 Chrome 可执行文件或不同路径,可以设置 CHROME_EXECUTABLE_PATH 环境变量指向您的 Chrome 可执行文件路径:
export CHROME_EXECUTABLE_PATH=/path/to/your/chrome
npm run dev
有关检查路径的更多详细信息,请查看 api/src/utils/browser.ts。
[!NOTE] 如果您正在寻找使用 Steel 的快速示例,请查看 https://github.com/steel-dev/steel-cookbook%E3%80%82
您也可以尝试 REPL 包,运行
cd repl和npm run start
与 Steel 浏览器 API 交互主要有两种方式:
在这些示例中,我们假设您的自定义 Steel API 端点为 http://localhost:3000。
完整的 REST OpenAPI 文档可在 我们的网站 上找到,也可在本地 Steel 实例的 http://localhost:3000/documentation 查看。
使用 SDK
如果您希望使用我们的 Python 和 Node SDK,可以安装 Node 或 Python 的 steel-sdk 包。
这些 SDK 构建在 REST API 之上,提供更便捷的方式与 Steel 浏览器 API 交互。它们是完全类型化的,并且兼容 Steel Cloud 和自托管 Steel 实例(可通过 Node 上的 baseURL 选项和 Python 上的 base_url 选项更改)。
有关安装和使用 SDK 的更多详细信息,请参见 https://github.com/steel-dev/steel-node/blob/main/api.md 和 https://github.com/steel-dev/steel-python/blob/main/api.md%E3%80%82
/sessions 端点允许您使用自定义选项或扩展(例如使用自定义代理)重新启动浏览器,并重置浏览器状态。非常适合需要细粒度控制的复杂、有状态工作流。
创建会话后,您可以使用会话 ID 或根 URL 与浏览器交互。为此,您需要使用 Puppeteer 或 Playwright。以下文档中提供了使用 Puppeteer 和 Playwright 与 Steel 集成的示例:
使用 Node SDK 创建会话
import Steel from 'steel-sdk';
const client = new Steel({
baseURL: "http://localhost:3000", // 自定义 API 基础 URL 覆盖
});
(async () => {
try {
// 使用当前 API 字段创建新浏览器会话
const session = await client.sessions.create({
blockAds: true,
proxyUrl: "user:pass@host:port", // 可选
dimensions: { width: 1280, height: 800 }, // 可选
});
console.log("创建的会话 ID:", session.id);
} catch (error) {
console.error("创建会话时出错:", error);
}
})();
使用 Python SDK 创建会话
import os
from steel import Steel
client = Steel(
base_url="http://localhost:3000", # 自定义 API 基础 URL 覆盖
)
try:
# 使用自定义选项创建新浏览器会话
session = client.sessions.create(
block_ads=True,
proxy_url="user:pass@host:port", # 可选
dimensions={"width": 1280, "height": 800}, # 可选
)
print("创建的会话 ID:", session.id)
except Exception as e:
print("创建会话时出错:", e)
使用 Curl 创建会话
# 启动新浏览器会话
curl -X POST http://localhost:3000/v1/sessions \
-H "Content-Type: application/json" \
-d '{
"proxyUrl": "user:pass@host:port",
"blockAds": true,
"dimensions": { "width": 1280, "height": 800 }
}'
Selenium 会话
[!NOTE] 此集成不支持基于 CDP 的浏览器会话 API 的所有功能。
对于具有现有 Selenium 工作流的团队,Steel 浏览器提供了即插即用的替代方案,在保持兼容性的同时添加增强功能。您只需使用 isSelenium 选项创建 Selenium 会话:
// 使用 Node SDK
const session = await client.sessions.create({ isSelenium: true });
# 使用 Python SDK
session = client.sessions.create(is_selenium=True)
使用 Curl
# 启动 Selenium 会话
curl -X POST http://localhost:3000/v1/sessions \
-H "Content-Type: application/json" \
-d '{
"isSelenium": true
}'
Selenium API 完全兼容 Selenium 的 WebDriver 协议,因此您可以使用任何现有 Selenium 客户端连接到 Steel 浏览器。有关使用 Selenium 与 Steel 的更多详细信息,请参阅 Selenium 文档。
/scrape、/screenshot 和 /pdf 端点允许您使用运行中的 Steel 服务器快速从任何网页提取干净、格式良好的数据。非常适合简单、只读、按需任务:
抓取网页
提取网页的 HTML 内容。
# 使用 Actions API 的示例
curl -X POST http://0.0.0.0:3000/v1/scrape \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com",
"delay": 1000
}'
截取屏幕截图
截取网页的屏幕截图。
# 使用 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
下载 PDF
下载网页的 PDF。
# 使用 Actions API 的示例
curl -X POST http://0.0.0.0:3000/v1/pdf \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com"
}' --output output.pdf
Steel 浏览器是一个开源项目,我们欢迎贡献!
Apache 2.0
由 Steel 团队用心打造 ❤️
来自真实用户的反馈,见证轩辕镜像的优质服务