cloudflare-browser

Steuern Sie headless Chrome über Cloudflare Browser Rendering CDP WebSocket. Verwenden Sie es für Screenshots, Seitennavigation, Scraping und Videoaufnahmen, wenn der Browser…

npx skills add https://github.com/cloudflare/moltworker --skill cloudflare-browser

Cloudflare Browser Rendering

Control headless browsers via Cloudflare's Browser Rendering service using CDP (Chrome DevTools Protocol) over WebSocket.

Prerequisites

  • CDP_SECRET environment variable set
  • Browser profile configured in openclaw.json with cdpUrl pointing 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

CommandPurpose
Page.navigateNavigate to URL
Page.captureScreenshotCapture PNG/JPEG
Runtime.evaluateExecute JavaScript
Emulation.setDeviceMetricsOverrideSet 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

  1. Capture frames as PNGs during navigation
  2. 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

Mehr Skills von cloudflare

workerd-api-review
cloudflare
Leistungsoptimierung, API-Design & Kompatibilität, Sicherheitslücken und Einhaltung von Standardspezifikationen für das Code-Review von workerd. Deckt tcmalloc-bewusste…
official
workerd-safety-review
cloudflare
Speichersicherheit, Threadsicherheit, Nebenläufigkeit und kritische Erkennungsmuster für die Codeüberprüfung von workerd. Behandelt V8/KJ-Grenzgefahren, Lebenszyklusverwaltung,…
official
module-registry
cloudflare
Laden, wenn mit dem Modul-Register in workerd gearbeitet wird – Lesen, Ändern, Debuggen oder Überprüfen von Modulauflösung, Kompilierung, Evaluierung oder Registrierung…
official
reproduce
cloudflare
Reproduzieren Sie ein cloudflare/agents GitHub-Problem, indem Sie ein minimales Agents/Worker-Projekt erstellen und es in einem temporären Cloudflare-Konto bereitstellen, dann berichten…
official
local-explorer
cloudflare
Wie man Produkte/Ressourcen zum lokalen Explorer oder zur lokalen API hinzufügt. Verwenden Sie dies bei der Implementierung neuer lokaler APIs oder UI-Routen unter…
official
commit-categories
cloudflare
Commit-Kategorisierungsregeln für Changelogs und "What's new"-Zusammenfassungen. MUSS geladen werden, bevor Commits in Changelog- oder Whats-new-Befehlen kategorisiert werden. Bietet…
official
architecture
cloudflare
Verwenden beim ersten Navigieren durch die Codebasis, Hinzufügen einer neuen Client-Methode, Hinzufügen eines neuen Container-Handlers/-Dienstes oder Verstehen, wie eine Anfrage fließt…
official
changesets
cloudflare
Verwenden beim Erstellen eines Changesets, Vorbereiten eines Releases oder Aktualisieren von Versionen. Deckt ab, auf welche Pakete verwiesen werden soll, wie benutzerseitige Changeset-Beschreibungen verfasst werden,…
official