cloudflare-browser
作者: cloudflare
Control headless Chrome via Cloudflare Browser Rendering CDP WebSocket. Use for screenshots, page navigation, scraping, and video capture when browser…
npx skills add https://github.com/cloudflare/moltworker --skill cloudflare-browserCloudflare Browser Rendering
Control headless browsers via Cloudflare's Browser Rendering service using CDP (Chrome DevTools Protocol) over WebSocket.
Prerequisites
CDP_SECRETenvironment variable set- Browser profile configured in openclaw.json with
cdpUrlpointing to the worker endpoint:"browser": { "profiles": { "cloudflare": { "cdpUrl": "https://your-worker.workers.dev/cdp?secret=..." } } }
Quick Start
Screenshot
node /path/to/skills/cloudflare-browser/scripts/screenshot.js https://example.com output.png
Multi-page Video
node /path/to/skills/cloudflare-browser/scripts/video.js "https://site1.com,https://site2.com" output.mp4
CDP Connection Pattern
The worker creates a page target automatically on WebSocket connect. Listen for Target.targetCreated event to get the targetId:
const WebSocket = require('ws');
const CDP_SECRET = process.env.CDP_SECRET;
const WS_URL = `wss://your-worker.workers.dev/cdp?secret=${encodeURIComponent(CDP_SECRET)}`;
const ws = new WebSocket(WS_URL);
let targetId = null;
ws.on('message', (data) => {
const msg = JSON.parse(data.toString());
if (msg.method === 'Target.targetCreated' && msg.params?.targetInfo?.type === 'page') {
targetId = msg.params.targetInfo.targetId;
}
});
Key CDP Commands
| Command | Purpose |
|---|---|
| Page.navigate | Navigate to URL |
| Page.captureScreenshot | Capture PNG/JPEG |
| Runtime.evaluate | Execute JavaScript |
| Emulation.setDeviceMetricsOverride | Set viewport size |
Common Patterns
Navigate and Screenshot
await send('Page.navigate', { url: 'https://example.com' });
await new Promise(r => setTimeout(r, 3000)); // Wait for render
const { data } = await send('Page.captureScreenshot', { format: 'png' });
fs.writeFileSync('out.png', Buffer.from(data, 'base64'));
Scroll Page
await send('Runtime.evaluate', { expression: 'window.scrollBy(0, 300)' });
Set Viewport
await send('Emulation.setDeviceMetricsOverride', {
width: 1280,
height: 720,
deviceScaleFactor: 1,
mobile: false
});
Creating Videos
- Capture frames as PNGs during navigation
- Use ffmpeg to stitch:
ffmpeg -framerate 10 -i frame_%04d.png -c:v libx264 -pix_fmt yuv420p output.mp4
Troubleshooting
- No target created: Race condition - wait for Target.targetCreated event with timeout
- Commands timeout: Worker may have cold start delay; increase timeout to 30-60s
- WebSocket hangs: Verify CDP_SECRET matches worker configuration
来自 cloudflare 的更多技能
write-endpoints
cloudflare
使用chanfana构建OpenAPI端点的全面指南——模式定义、请求验证、CRUD操作、D1数据库集成等
official
agents-sdk
cloudflare
在Cloudflare Workers上使用Agents SDK构建AI代理。在创建有状态代理、持久化工作流、实时WebSocket应用、定时任务时加载…
official
building-ai-agent-on-cloudflare
cloudflare
使用Cloudflare的Agents SDK创建具备持久状态、实时通信和工具集成能力的AI代理。
official
building-mcp-server-on-cloudflare
cloudflare
在Cloudflare Workers上创建生产就绪的模型上下文协议服务器,包含工具、认证和部署功能。
official
changelog
cloudflare
为Cloudflare文档站点创建、更新和审查产品更新日志条目。在生成更新日志MDX文件、编辑现有文件时加载。
official
cloudflare
cloudflare
Comprehensive Cloudflare platform skill covering Workers, Pages, storage (KV, D1, R2), AI (Workers AI, Vectorize, Agents SDK), networking (Tunnel, Spectrum),…
official
code-review
cloudflare
审查 Workers 和 Cloudflare 开发者平台代码的类型正确性、API 使用及配置有效性。在审查 TypeScript/JavaScript… 时加载。
official
docs-review
cloudflare
审查文档PR并提供GitHub PR建议。当被要求审查、提出修改建议或对文档内容提供反馈时加载。涵盖MDX、……
official