WebhookToolkit
GitHub

Testowanie webhooka GitHub lokalnie

Aby zwalidować handler webhooka GitHub, nie musisz pushować commitów ani otwierać prawdziwych PR. Wygeneruj event GitHub podpisany przez HMAC-SHA256, edytuj payload (repo, branch, autor) i wyślij go do swojego lokalnego serwera. Twoja weryfikacja X-Hub-Signature-256 jest testowana od razu.

Wygeneruj podpis, aby zobaczyć headery, body i gotowe do wklejenia polecenie cURL.

Zweryfikuj podpis po stronie serwera

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

Aby odebrać prawdziwy webhook GitHub na swojej maszynie bez deployu, skonfiguruj URL swojego tunelu Relay w ustawieniach repo.

Najczęstsze pytania

Jak zasymulować push GitHub na moim lokalnym serwerze?

Wybierz event push powyżej, wklej sekret webhooka skonfigurowany w Twoim repo, podaj URL swojego handlera (przez Relay) i wyślij. Header X-Hub-Signature-256 jest obliczany w HMAC-SHA256 tak jak robi to GitHub.

Jaka jest różnica między X-Hub-Signature a X-Hub-Signature-256?

X-Hub-Signature używa SHA-1 (legacy), X-Hub-Signature-256 używa SHA-256 (zalecane). Generator tworzy oba headery, aby pokryć wszystkie przypadki.

Jak zweryfikować podpis po stronie serwera?

Oblicz HMAC-SHA256(rawBody, secret) i porównaj w czasie stałym z wartością z headera (po 'sha256='). Zobacz przykład kodu poniżej.

Czy mogę testować również pull_request i issues?

Tak, eventy push, pull_request i issues są dostępne, z poprawnym headerem X-GitHub-Event dla każdego z nich.

Testowanie webhooka GitHub lokalnie — Podpisany payload X-Hub-Signature-256 · Webhook Toolkit