Zum Inhalt springen

Einen Shop prüfen, bevor du ihn automatisierst

Session öffnen, Consent-Bericht auf einem deutschen Shop laufen lassen, lesen was vor jeder Wahl gesetzt war, Ziele der Formulare kartieren, Screenshot sichern.

Zuletzt aktualisiert:

Wann ein Bericht besser passt als eine Agentenaufgabe

Du könntest einen Agenten bitten, einen Shop zu besuchen und dir zu erzählen, was sein Cookie-Banner treibt. Das ginge, kostete Tokens, dauerte eine Minute und lieferte jedes Mal eine leicht andere Antwort — weil ein Modell die Antwort geschrieben hat. Ein Bericht ist die andere Bauform: ein POST, gerechnet aus derselben Wahrnehmung, auf der der Agent arbeitet, ohne jedes Modell im Aufruf. Er ist deterministisch, er ist billig, und wenn du ihn nächsten Monat noch einmal laufen lässt, bekommst du ein Dokument, das sich gegen das von heute diffen lässt.

Greif zum Bericht, wenn die Frage strukturell ist: Was setzt diese Seite, bevor jemand wählt, wohin schicken ihre Formulare, ist eine Kündigung von hier aus erreichbar, wie sieht sie gerade aus. Greif zu einer Agentenaufgabe, wenn die Frage Urteilskraft oder mehrere Schritte braucht — anmelden, die Rechnung vom letzten Quartal finden, sie herunterladen. Beide teilen sich eine Session, du kannst also beides in einem Browser tun, ohne zwei zu bezahlen.

Diese Anleitung lässt drei der fünf Berichte der Reihe nach gegen einen deutschen Shop laufen. Alles hier braucht einen API-Schlüssel und ein Deployment, das reports in GET /v1/me führt; die Feldreferenz zu jedem Parameter steht auf der Berichtsseite.

Schritt 2: wohin die Elemente führen, dann ein Bild

Der Ziel-Bericht löst jedes Bedienelement in der Seite auf, statt aus dem Markup zu raten, und schickt jedes einzeln durch den Ziel-Wächter.

Voraussetzungen: api-key

import { writeFile } from 'node:fs/promises';
import { Browserberg } from '@browserberg/sdk';

const bb = new Browserberg({
  apiKey: process.env.BROWSERBERG_API_KEY!,
  baseUrl: 'https://browserberg.com',
});

await using session = await bb.sessions.create({ ttlSeconds: 180 });

// Where does every control on this page actually lead?
const map = await session.destinationReport({
  url: 'https://shop.example.com/',
  limit: 200,
});

console.log('page site:', map.anchorSite, '| served over https:', map.secure);
console.log('off-site form posts:', map.summary.offSiteSubmit);
console.log('insecure submits:', map.summary.insecureSubmit);

for (const control of map.controls) {
  if (control.risk) {
    console.log(control.risk, '|', control.name, '->', control.destination.url);
  }
}

// A picture to file beside the numbers. The banner is already gone.
const shot = await session.screenshot({ fullPage: true });
await writeFile('shop.jpg', Buffer.from(shot.base64, 'base64'));

Was die Zahlen heißen, und was nicht

Ein Element mit risk: 'off_site_submit' ist ein Formular dieses Shops, das an eine andere registrierbare Site schicken würde — meist ein Newsletter-Feld, das direkt an eine Marketing-Plattform verdrahtet ist. insecure_submit ist eine https-Seite, die über http abschickt. Beides verweigert der Ziel-Wächter schon unter seiner Standard-Policy, also genau so, wie es käme, wenn ein Agent dieses Element benutzen wollte. Der Bericht ist damit zugleich eine Vorschau darauf, was deine Automatisierung darf und was nicht. off_site_navigation wird standardmäßig nicht blockiert: Die Site zu verlassen ist normal, und eine SSO-Weiterleitung tut es mit Absicht.

Der Screenshot ist der billigste der fünf und als Beleg neben den Zahlen nützlich: Er entsteht, nachdem das Banner geräumt ist, das Bild zeigt also die Seite, die eine Besucherin als zweites sieht, nicht die Wand davor. fullPage nimmt das ganze Dokument auf, gekappt bei 16384 CSS-Pixeln.

Vier der fünf Berichte sind auch MCP-Tools — browser_consent_report, browser_destination_report, browser_cancellation_report und browser_screenshot —, ein Modell in einem MCP-Client kann also danach greifen, ohne dass du irgendetwas davon schreibst. Die Agentensicht ist bewusst kein Tool: Ein Modell hat bereits observe, und eine zweite Darstellung desselben Baums kostete nur Kontext. Alle fünf brauchen Protokoll 1.5, und auf einem Deployment ohne sie sind die Routen gar nicht registriert — ein Aufruf antwortet also not_found, statt auf halbem Weg zu scheitern.

Hinweis · Diese Berichte benoten niemanden

Ein Consent-Bericht ist eine Liste dessen, was der Browser hielt und wen die Seite angesprochen hat. Ein Kündigungs-Bericht ist die Feststellung, dass ein Element mit einer bestimmten Beschriftung gefunden wurde oder eben nicht, wohin es führte und was die Seite dahinter verlangte. Keiner von beiden sagt, ob eine Site rechtmäßig handelt, und nichts auf der Leitung trägt ein Urteil. Wenn du einen Befund veröffentlichst, veröffentliche die Beobachtung und überlass den Schluss der Leserin.

Weiterlesen

  • Berichte-Referenz Jeder Parameter und jedes Antwortfeld aller fünf
  • Consent-Autopilot Wie das Banner erkannt und geräumt wird
  • Agentenaufgaben ausführen Die andere Bauform, für Fragen mit Urteilskraft
  • Sessions-Referenz Laufzeiten, Formen und die Endpunkte drumherum