WebhookToolkit
GitHub

GitHub-Webhook lokal testen

Um einen GitHub-Webhook-Handler zu validieren, musst du keine Commits pushen oder echte PRs öffnen. Generiere ein HMAC-SHA256-signiertes GitHub-Event, bearbeite den Payload (Repo, Branch, Autor) und sende es an deinen lokalen Server. Deine X-Hub-Signature-256-Prüfung wird sofort getestet.

Generiere die Signatur, um die Headers, den Body und den fertig kopierbaren cURL-Befehl zu sehen.

Signatur serverseitig prüfen

handler.js (Node)
import crypto from 'crypto';
const sig = req.headers['x-hub-signature-256'];
const expected = 'sha256=' + crypto
  .createHmac('sha256', process.env.WEBHOOK_SECRET)
  .update(rawBody)
  .digest('hex');
const ok = crypto.timingSafeEqual(Buffer.from(sig), Buffer.from(expected));

Um einen echten GitHub-Webhook auf deiner Maschine zu empfangen, ohne zu deployen, hinterlege die URL deines Relay-Tunnels in den Einstellungen des Repos.

Häufige Fragen

Wie simuliere ich einen GitHub-Push auf meinem lokalen Server?

Wähle das Event push oben, füge das in deinem Repo konfigurierte Webhook-Secret ein, gib die URL deines Handlers an (über das Relay) und sende. Der X-Hub-Signature-256-Header wird in HMAC-SHA256 berechnet, genau wie GitHub es macht.

Was ist der Unterschied zwischen X-Hub-Signature und X-Hub-Signature-256?

X-Hub-Signature nutzt SHA-1 (legacy), X-Hub-Signature-256 nutzt SHA-256 (empfohlen). Der Generator erzeugt beide Header, um alle Fälle abzudecken.

Wie prüfe ich die Signatur serverseitig?

Berechne HMAC-SHA256(rawBody, secret) und vergleiche zeitkonstant mit dem Wert aus dem Header (nach 'sha256='). Siehe das Codebeispiel unten.

Kann ich auch pull_request und issues testen?

Ja, die Events push, pull_request und issues stehen zur Verfügung, jeweils mit korrektem X-GitHub-Event-Header.

GitHub-Webhook lokal testen — signierter Payload X-Hub-Signature-256 · Webhook Toolkit