Browser Cash技能使用说明
browser-cash
通过 Browser.cash 启动无限制的浏览器会话,用于网络自动化。这些会话能绕过常见的反机器人保护机制(如 Cloudflare、DataDome 等),使其成为网络爬取、测试和自动化任务的理想选择,否则这些任务可能会被屏蔽。
使用时机:任何浏览器自动化任务——网络爬取、表单填写、测试、截图。Browser.cash 会话表现为真实浏览器,并自动处理机器人检测。
设置
API 密钥存储在 clawdbot 配置中的skills.entries.browser-cash.apiKey处。
如果未配置,提示用户:
从https://dash.browser.cash获取您的 API 密钥,并运行:
clawdbot config set skills.entries.browser-cash.apiKey "your_key_here"
读取密钥:
BROWSER_CASH_KEY=$(clawdbot config get skills.entries.browser-cash.apiKey)
首次使用前,检查并在需要时安装 Playwright:
if [ ! -d ~/clawd/node_modules/playwright ]; then
cd ~/clawd && npm install playwright puppeteer-core
fi
API 基础
curl -X POST "https://api.browser.cash/v1/..." \
-H "Authorization: Bearer $BROWSER_CASH_KEY" \
-H "Content-Type: application/json"
创建浏览器会话
基本会话:
curl -X POST "https://api.browser.cash/v1/browser/session" \
-H "Authorization: Bearer $BROWSER_CASH_KEY" \
-H "Content-Type: application/json" \
-d '{}'
响应:
{
"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"
}
包含选项:
curl -X POST "https://api.browser.cash/v1/browser/session" \
-H "Authorization: Bearer $BROWSER_CASH_KEY" \
-H "Content-Type: application/json" \
-d '{
"country": "US",
"windowSize": "1920x1080",
"profile": {
"name": "my-profile",
"persist": true
}
}'
会话选项
| 选项 | 类型 | 描述 |
|---|---|---|
国家/地区 | 字符串 | 2位ISO国家代码(例如:"US"、"DE"、"GB") |
窗口尺寸 | 字符串 | 浏览器尺寸,例如:"1920x1080" |
代理URL | 字符串 | SOCKS5代理URL(可选) |
配置文件.名称 | 字符串 | 用于会话持久化的命名浏览器配置文件 |
配置文件.持久化 | 布尔值 | 会话结束后保存cookies/存储数据 |
将Browser.cash与Clawdbot结合使用
Browser.cash返回一个WebSocket CDP URL (wss://...)。请使用以下方法之一:
选项一:通过exec直接连接CDP(推荐)
重要提示:运行Playwright/Puppeteer脚本前,请确保已安装依赖项:
[ -d ~/clawd/node_modules/playwright ] || (cd ~/clawd && npm install playwright puppeteer-core)
在exec代码块中使用Playwright或Puppeteer直接连接CDP URL:
# 1. Create session
BROWSER_CASH_KEY=$(clawdbot config get skills.entries.browser-cash.apiKey)
SESSION=$(curl -s -X POST "https://api.browser.cash/v1/browser/session" \
-H "Authorization: Bearer $BROWSER_CASH_KEY" \
-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. Use via 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('Title:', await page.title());
await browser.close();
})();
"
# 3. Stop session when done
curl -X DELETE "https://api.browser.cash/v1/browser/session?sessionId=$SESSION_ID" \
-H "Authorization: Bearer $BROWSER_CASH_KEY"
选项二:基于Curl的自动化方案
对于简单任务,可使用curl通过CDP命令与页面交互:
# Navigate and extract content using the CDP URL
# (See CDP protocol docs for available methods)
关于Clawdbot浏览器工具的说明
Clawdbot原生浏览器工具需要HTTP控制服务器URL,而非原始WebSocket CDP。当网关配置补丁方案在Clawdbot浏览器控制服务器代理连接时生效。若需直接使用Browser.cash CDP,请采用上述exec方案。
获取会话状态
curl "https://api.browser.cash/v1/browser/session?sessionId=YOUR_SESSION_ID" \
-H "Authorization: Bearer $BROWSER_CASH_KEY"
状态类型:启动中、活跃、已完成、错误
停止会话
curl -X DELETE "https://api.browser.cash/v1/browser/session?sessionId=YOUR_SESSION_ID" \
-H "Authorization: Bearer $BROWSER_CASH_KEY"
列出会话
curl "https://api.browser.cash/v1/browser/sessions?page=1&pageSize=20" \
-H "Authorization: Bearer $BROWSER_CASH_KEY"
浏览器配置文件
配置文件会跨会话持久保存cookies、localStorage和会话数据——这对于保持登录状态或维持应用状态非常有用。
列出配置文件:
curl "https://api.browser.cash/v1/browser/profiles" \
-H "Authorization: Bearer $BROWSER_CASH_KEY"
删除配置文件:
curl -X DELETE "https://api.browser.cash/v1/browser/profile?profileName=my-profile" \
-H "Authorization: Bearer $BROWSER_CASH_KEY"
通过CDP连接
该cdpUrl是用于Chrome DevTools协议的WebSocket端点。可与任何兼容CDP的库一起使用。
Playwright:
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:
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');
完整工作流示例
# 0. Ensure Playwright is installed
[ -d ~/clawd/node_modules/playwright ] || (cd ~/clawd && npm install playwright puppeteer-core)
# 1. Create session
BROWSER_CASH_KEY=$(clawdbot config get skills.entries.browser-cash.apiKey)
SESSION=$(curl -s -X POST "https://api.browser.cash/v1/browser/session" \
-H "Authorization: Bearer $BROWSER_CASH_KEY" \
-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. Connect with Playwright/Puppeteer using $CDP_URL...
# 3. Stop session when done
curl -X DELETE "https://api.browser.cash/v1/browser/session?sessionId=$SESSION_ID" \
-H "Authorization: Bearer $BROWSER_CASH_KEY"
数据抓取技巧
当从具有懒加载或无限滚动的页面提取数据时:
// Scroll to load all products
async function scrollToBottom(page) {
let previousHeight = 0;
while (true) {
const currentHeight = await page.evaluate(() => document.body.scrollHeight);
if (currentHeight === previousHeight) break;
previousHeight = currentHeight;
await page.evaluate(() => window.scrollTo(0, document.body.scrollHeight));
await page.waitForTimeout(1500); // Wait for content to load
}
}
// Wait for specific elements
await page.waitForSelector('.product-card', { timeout: 10000 });
// Handle "Load More" buttons
const loadMore = await page.$('button.load-more');
if (loadMore) {
await loadMore.click();
await page.waitForTimeout(2000);
}
常见模式:
- 始终滚动以触发懒加载内容
- 等待网络空闲:
await page.waitForLoadState('networkidle') - 使用
page.waitForSelector()在提取元素之前 - 在操作之间添加延迟以避免速率限制
为何选择 Browser.cash 进行自动化
- 无阻碍访问:会话可绕过 Cloudflare、DataDome、PerimeterX 及其他机器人防护
- 真实浏览器指纹:显示为真实的 Chrome 浏览器,而非无头模式
- 原生 CDP 支持:为 Playwright、Puppeteer 或原生 CDP 提供直接的 WebSocket 连接
- 地理位置定位:在特定国家/地区启动会话
- 持久化配置文件:在多个会话间保持登录状态
注意事项
- 长时间无活动后,会话将自动终止
- 完成后务必停止会话,以避免不必要的使用
- 需要保持登录状态时,请使用配置文件
- 仅支持 SOCKS5 代理类型
- Clawdbot 从以下目录运行脚本:
~/clawd/- 请在该目录下安装 npm 依赖项 - 进行全页抓取时,始终滚动页面以触发懒加载内容


微信扫一扫,打赏作者吧~