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.

Already receiving real deliveries and one is being rejected? Paste the raw body, secret and header into the GitHub signature validator to see exactly why X-Hub-Signature-256 doesn't match.

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