Playwright mit einer Session verbinden
Richte ein bestehendes Playwright-Skript mit einer Zeile auf eine Browserberg-Session: connectUrl trägt ein kurzlebiges Zugriffstoken, connectOverCDP macht den Rest.
Zuletzt aktualisiert:
Eine Zeile
Eine Session ist ein Endpunkt des Chrome DevTools Protocol. chromium.connectOverCDP(session.connectUrl) ersetzt chromium.launch(), und das Skript, das du schon hast, läuft gegen einen Browser in der EU. Die connectUrl jeder Session-Antwort trägt ein Zugriffstoken, das die Flotte beim WebSocket-Upgrade prüft und das fünf Minuten ab der Antwort lebt, die es geliefert hat; sobald der Socket offen ist, spielt der Ablauf des Tokens keine Rolle mehr. Wer länger gewartet hat, erzeugt mit POST /v1/sessions/:id/connect-token ein neues oder holt die Session einfach erneut.
Verbinden und steuern
import { chromium } from 'playwright-core';
import { Browserberg } from '@browserberg/sdk';
const bb = new Browserberg({
apiKey: process.env.BROWSERBERG_API_KEY!,
baseUrl: 'https://browserberg.com',
});
// connectUrl carries a short-lived access token. Connect within five minutes
// of the call that returned it; sessions.connectToken() re-mints one later.
await using session = await bb.sessions.create({ ttlSeconds: 600 });
const browser = await chromium.connectOverCDP(session.connectUrl);
const [context] = browser.contexts();
const page = context.pages()[0] ?? (await context.newPage());
await page.goto('https://example.com');
console.log('title:', await page.title());
console.log('token expires:', session.connectUrlExpiresAt ? 'set' : 'not set');
await browser.close();
title: Example Domain
token expires: not set
Ein Connect-Token neu erzeugen
BASE="https://browserberg.com"
AUTH="Authorization: Bearer $BROWSERBERG_API_KEY"
SID=$(curl -s -X POST "$BASE/v1/sessions" -H "$AUTH" -H "Content-Type: application/json" -d '{"ttlSeconds": 300}' \
| python3 -c 'import json,sys; print(json.load(sys.stdin)["session"]["id"])')
# A fresh connect URL for a caller that waited longer than the token in the create response lives.
curl -s -X POST "$BASE/v1/sessions/$SID/connect-token" -H "$AUTH" \
| python3 -c 'import json,sys; t=json.load(sys.stdin); print("has token:", "?t=" in t["connectUrl"]); print("expires:", "expiresAt" in t)'
curl -s -X DELETE "$BASE/v1/sessions/$SID" -H "$AUTH" -o /dev/null -w 'released: %{http_code}\n'
has token: True
expires: True
released: 204
Was du wissen solltest
| Name | Typ | Beschreibung |
|---|---|---|
browser.contexts()[0]
|
Tipp | Eine Session hat bereits einen Context und eine Seite. Sie weiterzuverwenden erhält ein wiederhergestelltes Profil; ein frischer Context nicht. |
browser.close()
|
Tipp | Ein Schließen über CDP gibt die Session nicht frei und sichert ihr Profil nicht. Gib über die API frei (`await using` im TypeScript-SDK tut das beim Verlassen des Scopes) und lass den Teardown-Pfad die Sicherung übernehmen. |
Token in der URL
|
Tipp | Behandle `connectUrl` fünf Minuten lang als Berechtigungsnachweis: nicht loggen, nicht an ein Modell geben. Die MCP-Tools entfernen es, bevor es eines erreicht. |