steel-browser by steel-dev/cli
npx skills add https://github.com/steel-dev/cli --skill steel-browserSteel 为智能体提供云浏览器会话和快速 API 工具(scrape、screenshot、pdf)。
| 目标 | 工具 |
|---|---|
| 从基本静态页面提取文本/HTML | steel scrape <url> |
| 一次性截图或生成 PDF | steel screenshot <url> / steel pdf <url> |
| 多步骤交互、登录、表单、JS 密集型页面 | steel browser start + 交互循环 |
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
| 反机器人 / CAPTCHA 网站 | steel browser start --stealth |
当你只需要页面内容时,从 steel scrape 开始。当页面需要交互或 JavaScript 渲染时,再升级到 steel browser。
--session-timeout 3600000)wait、get 或另一个快照steel browser start --session my-task --session-timeout 3600000
steel browser open https://example.com --session my-task
steel browser snapshot -i --session my-task
steel browser fill @e3 "search term" --session my-task
steel browser click @e7 --session my-task
steel browser wait --load networkidle --session my-task
steel browser snapshot -i --session my-task
steel browser stop --session my-task
规则:切勿在没有新快照的情况下使用 @eN 引用。引用在导航或 DOM 更改后会失效。
来自 snapshot -i 的元素引用比 CSS 选择器更可靠——应始终优先使用它们。对于大型 DOM,使用 snapshot -i -c,或使用 -d 3 来限制深度。
在工作流程的每个命令中始终使用相同的 --session <name>。--session 标志接受你选择的名称字符串,而不是 JSON 输出中的 UUID。
steel browser start --session <name> --session-timeout 3600000
steel browser start --session <name> --stealth
steel browser start --session <name> --proxy <url>
steel browser sessions
steel browser live --session <name>
steel browser stop --session <name>
steel browser stop --all
steel browser open <url> --session <name>
steel browser snapshot # 完整的无障碍功能树
steel browser snapshot -i # 交互元素 + 引用
steel browser snapshot -c # 紧凑输出
steel browser snapshot -i -c -d 3 # 组合标志
steel browser get url --session <name>
steel browser get title --session <name>
steel browser get text @e1 --session <name>
steel browser back --session <name>
steel browser forward --session <name>
steel browser reload --session <name>
steel browser click @e1 --session <name>
steel browser dblclick @e1 --session <name>
steel browser fill @e2 "value" --session <name>
steel browser type @e2 "value" --delay 50 --session <name>
steel browser press Enter --session <name>
steel browser press Control+a --session <name>
steel browser hover @e1 --session <name>
steel browser click @e1 --session <name> # 对于复选框,优先使用 click
steel browser select @e1 "option" --session <name>
steel browser scroll down 500 --session <name>
steel browser scrollintoview @e1 --session <name>
steel browser drag @e1 @e2 --session <name>
steel browser tab new --session <name>
steel browser tab switch 2 --session <name>
steel browser tab list --session <name>
steel browser tab close --session <name>
steel browser wait --load networkidle --session <name>
steel browser wait --selector ".loaded" --state visible --session <name>
steel browser wait -t "Success" --session <name>
steel browser wait -u "/dashboard" --session <name>
steel browser get text @e1 --session <name>
steel browser get html @e1 --session <name>
steel browser get value @e1 --session <name>
steel browser get attr @e1 href --session <name>
steel browser get count ".item" --session <name>
steel browser content --session <name>
steel browser eval "document.querySelectorAll('a').length" --session <name>
steel browser find ".item" --session <name>
steel browser screenshot -o ./page.png --session <name>
steel browser screenshot --full --session <name>
steel browser screenshot --selector "#chart" --session <name>
顶层的 steel screenshot <url> 和 steel pdf <url> 是无状态的一次性 API 调用——它们不接受 --session、--stealth 或 -o 标志。对于会话内的捕获,请使用 steel browser screenshot。
steel browser cookies --session <name> # 列出所有 cookie
steel browser cookies set <name> <value> --session <name> # 设置一个 cookie
steel browser cookies set <name> <value> --domain .example.com # 指定域名
steel browser cookies clear --session <name> # 清除所有 cookie
steel browser storage local --session <name> # 获取所有 localStorage
steel browser storage local <key> --session <name> # 获取一个键
steel browser storage local set <key> <value> --session <name> # 设置一个值
steel browser storage local clear --session <name> # 清除 localStorage
steel browser storage session --session <name> # sessionStorage(相同 API)
steel browser set viewport 1920 1080 --session <name>
steel browser set geo 37.7749 -122.4194 --session <name>
steel browser set offline on --session <name>
steel browser set useragent "Custom UA" --session <name>
注意:steel browser set headers 在 steel 0.3.2 中会导致 panic(clap 错误)。对于头部注入,请使用 eval。
steel browser start --session <name> --stealth
steel browser captcha status --wait --session <name>
steel browser captcha solve --session <name>
当没有直接命令存在时,使用 steel browser eval "<js>" --session <name>。常见用途:网络拦截(fetch 猴子补丁)、超出 cookies 命令的 cookie 操作、DOM 状态注入、复杂的表单控件(React 日期选择器、自动完成输入)。
关于详细的 eval 模式(拖放后备方案、网络拦截、文件上传注入),请参阅 references/steel-browser-commands.md。
不要尝试这些命令。它们会失败并浪费操作次数。
| 不存在 | 替代方案 |
|---|---|
steel browser record / video | 无录制功能;使用 steel browser live 获取查看器 URL |
steel browser triple-click | press Control+a 或使用 .select() 的 eval |
steel browser network / route | 使用 fetch 猴子补丁的 eval |
steel browser console / errors | 使用控制台拦截器的 eval |
steel browser frame | 使用 iframe contentDocument 的 eval |
steel browser tabs (复数) | steel browser tab list (单数 tab) |
steel browser execute / run | steel browser eval |
steel browser is-visible | steel browser is |
steel browser set device | 分别使用 set viewport + set useragent |
steel browser resize | steel browser set viewport W H |
steel browser geolocation | steel browser set geo LAT LON |
steel browser pdf | 顶层 steel pdf <url>(无需浏览器会话) |
steel browser sessions
steel browser live --session <name>
| 症状 | 解决方法 |
|---|---|
Missing browser auth | 运行 steel login 或设置 STEEL_API_KEY |
No running session "<name>" | 检查拼写;运行 steel browser stop --all 然后用相同名称重启 |
| 命令间会话未复用 | 在每个命令上使用完全相同的 --session <name> |
| CAPTCHA 阻止 | steel browser captcha status --wait;使用 --stealth 重启 |
| 会话过时 / 状态卡住 | steel browser stop --all 然后使用新的命名会话 |
steel: command not found | `curl -LsSf https://setup.steel.dev |
完整操作手册:references/troubleshooting.md。
每周安装量
1.6K
代码仓库
GitHub 星标数
16
首次出现
2026年2月27日
安全审计
安装于
opencode1.0K
codex906
gemini-cli866
claude-code827
github-copilot819
cursor804
Steel gives agents cloud browser sessions and fast API tools (scrape, screenshot, pdf).
| Goal | Tool |
|---|---|
| Extract text/HTML from a mostly-static page | steel scrape <url> |
| One-shot screenshot or PDF | steel screenshot <url> / steel pdf <url> |
| Multi-step interaction, login, forms, JS-heavy pages | steel browser start + interaction loop |
| Anti-bot / CAPTCHA sites | steel browser start --stealth |
Start with steel scrape when you only need page content. Escalate to steel browser when the page requires interaction or JavaScript rendering.
--session-timeout 3600000 for tasks over 5 min)wait, get, or another snapshotsteel browser start --session my-task --session-timeout 3600000
steel browser open https://example.com --session my-task
steel browser snapshot -i --session my-task
steel browser fill @e3 "search term" --session my-task
steel browser click @e7 --session my-task
steel browser wait --load networkidle --session my-task
steel browser snapshot -i --session my-task
steel browser stop --session my-task
RULE: Never use an@eN ref without a fresh snapshot. Refs expire after navigation or DOM changes.
Element refs from snapshot -i are more reliable than CSS selectors — always prefer them. Use snapshot -i -c for large DOMs, or -d 3 to limit depth.
Always use the same --session <name> on every command in a workflow. The --session flag takes the name string you chose, not the UUID from JSON output.
steel browser start --session <name> --session-timeout 3600000
steel browser start --session <name> --stealth
steel browser start --session <name> --proxy <url>
steel browser sessions
steel browser live --session <name>
steel browser stop --session <name>
steel browser stop --all
steel browser open <url> --session <name>
steel browser snapshot # full accessibility tree
steel browser snapshot -i # interactive elements + refs
steel browser snapshot -c # compact output
steel browser snapshot -i -c -d 3 # combine flags
steel browser get url --session <name>
steel browser get title --session <name>
steel browser get text @e1 --session <name>
steel browser back --session <name>
steel browser forward --session <name>
steel browser reload --session <name>
steel browser click @e1 --session <name>
steel browser dblclick @e1 --session <name>
steel browser fill @e2 "value" --session <name>
steel browser type @e2 "value" --delay 50 --session <name>
steel browser press Enter --session <name>
steel browser press Control+a --session <name>
steel browser hover @e1 --session <name>
steel browser click @e1 --session <name> # prefer click for checkboxes
steel browser select @e1 "option" --session <name>
steel browser scroll down 500 --session <name>
steel browser scrollintoview @e1 --session <name>
steel browser drag @e1 @e2 --session <name>
steel browser tab new --session <name>
steel browser tab switch 2 --session <name>
steel browser tab list --session <name>
steel browser tab close --session <name>
steel browser wait --load networkidle --session <name>
steel browser wait --selector ".loaded" --state visible --session <name>
steel browser wait -t "Success" --session <name>
steel browser wait -u "/dashboard" --session <name>
steel browser get text @e1 --session <name>
steel browser get html @e1 --session <name>
steel browser get value @e1 --session <name>
steel browser get attr @e1 href --session <name>
steel browser get count ".item" --session <name>
steel browser content --session <name>
steel browser eval "document.querySelectorAll('a').length" --session <name>
steel browser find ".item" --session <name>
steel browser screenshot -o ./page.png --session <name>
steel browser screenshot --full --session <name>
steel browser screenshot --selector "#chart" --session <name>
Top-level steel screenshot <url> and steel pdf <url> are stateless one-shot API calls — they do not take --session, --stealth, or -o flags. Use steel browser screenshot for in-session captures.
steel browser cookies --session <name> # list all cookies
steel browser cookies set <name> <value> --session <name> # set a cookie
steel browser cookies set <name> <value> --domain .example.com # with domain
steel browser cookies clear --session <name> # clear all cookies
steel browser storage local --session <name> # get all localStorage
steel browser storage local <key> --session <name> # get one key
steel browser storage local set <key> <value> --session <name> # set a value
steel browser storage local clear --session <name> # clear localStorage
steel browser storage session --session <name> # sessionStorage (same API)
steel browser set viewport 1920 1080 --session <name>
steel browser set geo 37.7749 -122.4194 --session <name>
steel browser set offline on --session <name>
steel browser set useragent "Custom UA" --session <name>
Note: steel browser set headers panics in steel 0.3.2 (clap bug). Use eval for header injection.
steel browser start --session <name> --stealth
steel browser captcha status --wait --session <name>
steel browser captcha solve --session <name>
Use steel browser eval "<js>" --session <name> when no direct command exists. Common uses: network interception (fetch monkey-patch), cookie manipulation beyond the cookies command, DOM state injection, complex form widgets (React date pickers, autocomplete inputs).
For detailed eval patterns (drag fallback, network interception, file upload injection), see references/steel-browser-commands.md.
Do not attempt these. They will fail and waste turns.
| Does NOT exist | Use instead |
|---|---|
steel browser record / video | No recording; use steel browser live for viewer URL |
steel browser triple-click | press Control+a or eval with .select() |
steel browser network / route |
steel browser sessions
steel browser live --session <name>
| Symptom | Fix |
|---|---|
Missing browser auth | steel login or set STEEL_API_KEY |
No running session "<name>" | Check spelling; run steel browser stop --all then restart with same name |
| Session not reused between commands | Use exact same --session <name> on every command |
| CAPTCHA blocking | steel browser captcha status --wait; restart with |
Full playbook: references/troubleshooting.md.
Weekly Installs
1.6K
Repository
GitHub Stars
16
First Seen
Feb 27, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykWarn
Installed on
opencode1.0K
codex906
gemini-cli866
claude-code827
github-copilot819
cursor804
React 组合模式指南:Vercel 组件架构最佳实践,提升代码可维护性
102,200 周安装
eval with fetch monkey-patch |
steel browser console / errors | eval with console interceptor |
steel browser frame | eval with iframe contentDocument |
steel browser tabs (plural) | steel browser tab list (singular tab) |
steel browser execute / run | steel browser eval |
steel browser is-visible | steel browser is |
steel browser set device | set viewport + set useragent separately |
steel browser resize | steel browser set viewport W H |
steel browser geolocation | steel browser set geo LAT LON |
steel browser pdf | Top-level steel pdf <url> (no browser session needed) |
--stealth| Stale session / stuck state | steel browser stop --all then fresh named session |
steel: command not found | `curl -LsSf https://setup.steel.dev |