browser-cash
Spin up unblocked browser sessions via Browser.cash for web automation. These sessions bypass common anti-bot protections (Cloudflare, DataDome, etc.), making them ideal for scraping, testing, and automation tasks that would otherwise get blocked.
When to use: Any browser automation task—scraping, form filling, testing, screenshots. Browser.cash sessions appear as real browsers and handle bot detection automatically.
Setup
API Key is stored in clawdbot config at skills.entries.browser-cash.apiKey.
If not configured, prompt the user:
Get your API key from https://dash.browser.cash and run:
CODEBLOCK0
Reading the key:
CODEBLOCK1
Before first use, check and install Playwright if needed:
CODEBLOCK2
API Basics
CODEBLOCK3
Create a Browser Session
Basic session:
CODEBLOCK4
Response:
CODEBLOCK5
With options:
CODEBLOCK6
Session Options
| Option | Type | Description |
|---|
| INLINECODE1 | string | 2-letter ISO code (e.g., "US", "DE", "GB") |
| INLINECODE2 |
string | Browser dimensions, e.g., "1920x1080" |
|
proxyUrl | string | SOCKS5 proxy URL (optional) |
|
profile.name | string | Named browser profile for session persistence |
|
profile.persist | boolean | Save cookies/storage after session ends |
Using Browser.cash with Clawdbot
Browser.cash returns a WebSocket CDP URL (wss://...). Use one of these approaches:
Option 1: Direct CDP via exec (Recommended)
Important: Before running Playwright/Puppeteer scripts, ensure dependencies are installed:
CODEBLOCK7
Use Playwright or Puppeteer in an exec block to connect directly to the CDP URL:
CODEBLOCK8
Option 2: Curl-based automation
For simple tasks, use curl to interact with pages via CDP commands:
CODEBLOCK9
Note on Clawdbot browser tool
Clawdbot's native browser tool expects HTTP control server URLs, not raw WebSocket CDP. The gateway config.patch approach works when Clawdbot's browser control server proxies the connection. For direct Browser.cash CDP, use the exec approach above.
Get Session Status
CODEBLOCK10
Statuses: starting, active, completed, INLINECODE12
Stop a Session
CODEBLOCK11
List Sessions
CODEBLOCK12
Browser Profiles
Profiles persist cookies, localStorage, and session data across sessions—useful for staying logged in or maintaining state.
List profiles:
CODEBLOCK13
Delete profile:
CODEBLOCK14
Connecting via CDP
The cdpUrl is a WebSocket endpoint for Chrome DevTools Protocol. Use it with any CDP-compatible library.
Playwright:
CODEBLOCK15
Puppeteer:
CODEBLOCK16
Full Workflow Example
CODEBLOCK17
Scraping Tips
When extracting data from pages with lazy-loading or infinite scroll:
CODEBLOCK18
Common patterns:
- - Always scroll to trigger lazy-loaded content
- Wait for network idle: INLINECODE14
- Use
page.waitForSelector() before extracting elements - Add delays between actions to avoid rate limiting
Why Browser.cash for Automation
- - Unblocked: Sessions bypass Cloudflare, DataDome, PerimeterX, and other bot protections
- Real browser fingerprint: Appears as a genuine Chrome browser, not headless
- CDP native: Direct WebSocket connection for Playwright, Puppeteer, or raw CDP
- Geographic targeting: Spin up sessions in specific countries
- Persistent profiles: Maintain login state across sessions
Notes
- - Sessions auto-terminate after extended inactivity
- Always stop sessions when done to avoid unnecessary usage
- Use profiles when you need to maintain logged-in state
- SOCKS5 is the only supported proxy type
- Clawdbot runs scripts from
~/clawd/ - install npm dependencies there - For full page scraping, always scroll to trigger lazy-loaded content
browser-cash
通过Browser.cash启动无封锁浏览器会话,用于网页自动化。这些会话能绕过常见的反机器人保护(Cloudflare、DataDome等),非常适合执行原本会被拦截的爬取、测试和自动化任务。
适用场景: 任何浏览器自动化任务——爬取、表单填写、测试、截图。Browser.cash会话会呈现为真实浏览器,并自动处理机器人检测。
设置
API密钥 存储在clawdbot配置的 skills.entries.browser-cash.apiKey 中。
如果未配置,提示用户:
从 https://dash.browser.cash 获取你的API密钥,然后运行:
bash
clawdbot config set skills.entries.browser-cash.apiKey 你的密钥
读取密钥:
bash
BROWSER
CASHKEY=$(clawdbot config get skills.entries.browser-cash.apiKey)
首次使用前,检查并按需安装Playwright:
bash
if [ ! -d ~/clawd/node_modules/playwright ]; then
cd ~/clawd && npm install playwright puppeteer-core
fi
API基础
bash
curl -X POST https://api.browser.cash/v1/... \
-H Authorization: Bearer $BROWSERCASHKEY \
-H Content-Type: application/json
创建浏览器会话
基础会话:
bash
curl -X POST https://api.browser.cash/v1/browser/session \
-H Authorization: Bearer $BROWSERCASHKEY \
-H Content-Type: application/json \
-d {}
响应:
json
{
sessionId: abc123...,
status: active,
servedBy: node-id,
createdAt: 2025-01-20T01:51:25.000Z,
stoppedAt: null,
cdpUrl: wss://gcp-usc1-1.browser.cash/v1/consumer/abc123.../devtools/browser/uuid
}
带选项:
bash
curl -X POST https://api.browser.cash/v1/browser/session \
-H Authorization: Bearer $BROWSERCASHKEY \
-H Content-Type: application/json \
-d {
country: US,
windowSize: 1920x1080,
profile: {
name: my-profile,
persist: true
}
}
会话选项
| 选项 | 类型 | 描述 |
|---|
| country | string | 2字母ISO代码(例如 US、DE、GB) |
| windowSize |
string | 浏览器尺寸,例如 1920x1080 |
| proxyUrl | string | SOCKS5代理URL(可选) |
| profile.name | string | 用于会话持久化的命名浏览器配置文件 |
| profile.persist | boolean | 会话结束后保存cookie/存储数据 |
将Browser.cash与Clawdbot结合使用
Browser.cash返回一个WebSocket CDP URL(wss://...)。使用以下方法之一:
选项1:通过exec直接使用CDP(推荐)
重要: 在运行Playwright/Puppeteer脚本之前,确保已安装依赖:
bash
[ -d ~/clawd/node_modules/playwright ] || (cd ~/clawd && npm install playwright puppeteer-core)
在exec块中使用Playwright或Puppeteer直接连接到CDP URL:
bash
1. 创建会话
BROWSER
CASHKEY=$(clawdbot config get skills.entries.browser-cash.apiKey)
SESSION=$(curl -s -X POST https://api.browser.cash/v1/browser/session \
-H Authorization: Bearer $BROWSER
CASHKEY \
-H Content-Type: application/json \
-d {country: US, windowSize: 1920x1080})
SESSION_ID=$(echo $SESSION | jq -r .sessionId)
CDP_URL=$(echo $SESSION | jq -r .cdpUrl)
2. 通过Node.js exec使用(Playwright)
node -e
const { chromium } = require(playwright);
(async () => {
const browser = await chromium.connectOverCDP($CDP_URL);
const context = browser.contexts()[0];
const page = context.pages()[0] || await context.newPage();
await page.goto(https://example.com);
console.log(标题:, await page.title());
await browser.close();
})();
3. 完成后停止会话
curl -X DELETE https://api.browser.cash/v1/browser/session?sessionId=$SESSION_ID \
-H Authorization: Bearer $BROWSER
CASHKEY
选项2:基于curl的自动化
对于简单任务,使用curl通过CDP命令与页面交互:
bash
使用CDP URL导航并提取内容
(有关可用方法,请参阅CDP协议文档)
关于Clawdbot浏览器工具的说明
Clawdbot的原生browser工具期望HTTP控制服务器URL,而非原始WebSocket CDP。当Clawdbot的浏览器控制服务器代理连接时,gateway config.patch方法有效。对于直接Browser.cash CDP,请使用上述exec方法。
获取会话状态
bash
curl https://api.browser.cash/v1/browser/session?sessionId=你的会话ID \
-H Authorization: Bearer $BROWSERCASHKEY
状态:starting(启动中)、active(活跃)、completed(已完成)、error(错误)
停止会话
bash
curl -X DELETE https://api.browser.cash/v1/browser/session?sessionId=你的会话ID \
-H Authorization: Bearer $BROWSERCASHKEY
列出会话
bash
curl https://api.browser.cash/v1/browser/sessions?page=1&pageSize=20 \
-H Authorization: Bearer $BROWSERCASHKEY
浏览器配置文件
配置文件可在会话之间持久化cookie、localStorage和会话数据——对于保持登录状态或维持状态非常有用。
列出配置文件:
bash
curl https://api.browser.cash/v1/browser/profiles \
-H Authorization: Bearer $BROWSERCASHKEY
删除配置文件:
bash
curl -X DELETE https://api.browser.cash/v1/browser/profile?profileName=my-profile \
-H Authorization: Bearer $BROWSERCASHKEY
通过CDP连接
cdpUrl是Chrome DevTools协议的WebSocket端点。可与任何兼容CDP的库一起使用。
Playwright:
javascript
const { chromium } = require(playwright);
const browser = await chromium.connectOverCDP(cdpUrl);
const context = browser.contexts()[0];
const page = context.pages()[0] || await context.newPage();
await page.goto(https://example.com);
Puppeteer:
javascript
const puppeteer = require(puppeteer-core);
const browser = await puppeteer.connect({ browserWSEndpoint: cdpUrl });
const pages = await browser.pages();
const page = pages[0] || await browser.newPage();
await page.goto(https://example.com);
完整工作流程示例
bash
0. 确保Playwright已安装
[ -d ~/clawd/node_modules/playwright ] || (cd ~/clawd && npm install playwright puppeteer-core)
1. 创建会话
BROWSER
CASHKEY=$(clawdbot config get skills.entries.browser-cash.apiKey)
SESSION=$(curl -s -X POST https://api.browser.cash/v1/browser/session \
-H Authorization: Bearer $BROWSER
CASHKEY \
-H Content-Type: application/json \
-d {country: US, windowSize: 1920x1080})
SESSION_ID=$(echo $SESSION | jq -r .sessionId)
CDP_URL=$(echo $SESSION | jq -r .cdpUrl)
2. 使用 $CDP_URL 连接Playwright/Puppeteer...
3. 完成后停止会话
curl -X DELETE https://api.browser.cash/v1/browser/session?sessionId=$SESSION_ID \
-H Authorization: Bearer $BROWSER
CASHKEY
##