WebhookToolkit
GitHub

Testare un webhook GitHub in locale

Per validare un handler di webhook GitHub, non serve pushare commit o aprire vere PR. Genera un evento GitHub firmato in HMAC-SHA256, modifica il payload (repo, branch, autore) e invialo al tuo server locale. La tua verifica di X-Hub-Signature-256 viene testata subito.

Genera la firma per vedere gli header, il body e il comando cURL pronto da incollare.

Verificare la firma lato server

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));

Per ricevere un vero webhook GitHub sulla tua macchina senza distribuire, configura l'URL del tuo tunnel Relay nelle impostazioni del repo.

Domande frequenti

Come simulare un push GitHub sul mio server locale?

Scegli l'evento push qui sopra, incolla il secret del webhook configurato nel tuo repo, indica l'URL del tuo handler (tramite Relay) poi invia. L'header X-Hub-Signature-256 viene calcolato in HMAC-SHA256 come fa GitHub.

Qual è la differenza tra X-Hub-Signature e X-Hub-Signature-256?

X-Hub-Signature usa SHA-1 (legacy), X-Hub-Signature-256 usa SHA-256 (consigliato). Il generatore produce entrambi gli header per coprire tutti i casi.

Come verificare la firma lato server?

Calcola HMAC-SHA256(rawBody, secret) e confronta in tempo costante con il valore dell'header (dopo 'sha256='). Vedi l'esempio di codice qui sotto.

Posso testare anche pull_request e issues?

Sì, gli eventi push, pull_request e issues sono disponibili, con un header X-GitHub-Event corretto per ciascuno.

Testare un webhook GitHub in locale — Payload firmato X-Hub-Signature-256 · Webhook Toolkit