ما هو الـ webhook؟
الـ webhook طلب HTTP ترسله خدمة ما إلى عنوان تسجّله عندما يحدث شيء — تسوية دفعة، أو تسليم رسالة، أو انتهاء بناء — فيتفاعل نظامك مع الأحداث بدلاً من الاستطلاع المتكرر. اختباره يعني التقاط ما يُرسَل فعلياً (الأسلوب والترويسات والجسم)، وفحص إعادة المحاولة والترتيب، والتحقق من التوقيع الذي يثبت أن النداء جاء من المرسِل.
ملاحظة أمنية: نقطة نهاية الـ webhook عنوان عام يمكن لأي شخص الإرسال إليه. تحقق من توقيع المرسِل (عادةً HMAC على الجسم الخام) بمقارنة ثابتة الزمن، وارفض الطوابع الزمنية القديمة، وتعامل مع الحمولة كمدخل غير موثوق.
اقرأ الدليل: ما هو اختبار API؟ وكيف تختبر REST API
كيفية استخدام فاحص Webhook
- أنشئ عنوان URL للالتقاط (أو أعد استخدام عنوان موجود) وأرسل إليه طلب webhook.
- اختر التسليم؛ يُفتح تبويب الترويسات افتراضياً.
- راجع مجموعة التوقيع وتفاصيل الحدث، ثم تحقّق من التوقيع في محلّل التوقيعات.
- انسخ أمر إعادة الإرسال لاختبار المعالج (handler) الخاص بك.
مزايا فاحص Webhook
- عرض متعمّق لكل تسليم ملتقط: ترويسات مصنّفة (التوقيع والمزوّد والمحتوى والعميل والشبكة وأخرى)
- اكتشاف المزوّد ونوع الحدث ومعرّف الحدث ونظام التوقيع
- جسم JSON/نموذج مفكوك الترميز مع عرض شجري والحقول المهمة وتحويلات الطوابع الزمنية
- عرض رسالة HTTP الخام وأمر cURL لإعادة الإرسال مع الاحتفاظ بترويسات التوقيع
- يشترك في نقطة نهاية الالتقاط مع مختبِر Webhook
مثال على فاحص Webhook
تسليم حدث push من GitHub
الإدخال:
X-GitHub-Event: push · X-Hub-Signature-256: sha256=… · X-GitHub-Delivery: 72d3…النتيجة:
Provider: GitHub (high confidence) · Event: push · Signature header: X-Hub-Signature-256 (GitHub scheme)
Signature: X-Hub-Signature-256 · Provider: X-GitHub-Event, X-GitHub-Delivery · Content: Content-Type, Content-Lengthالأسئلة الشائعة حول فاحص Webhook
ما المزوّدون الذين يجري التعرّف عليهم؟
Stripe وGitHub وShopify وSlack وTwilio وPayPal وGitLab وBitbucket وSendGrid وMailgun من ترويساتها أو وكلاء المستخدم أو أشكال حمولاتها؛ ويُعامل كل ما عداها على أنه عام.
كيف تُنظَّم الترويسات؟
تُجمَّع في فئات: التوقيع والمزوّد والمحتوى والعميل والشبكة وأخرى، ويُشرح كل منها بلغة مبسّطة.
هل يمكنني التحقق من التوقيع هنا؟
يعرض الفاحص ترويسة التوقيع ونظامه؛ انسخ الجسم الخام والترويسة إلى محلّل توقيعات Webhook مع سرّك للتحقق منه محلياً.
لماذا تغيب بعض قيم الترويسات؟
لا تُسجَّل ترويسات Cookie وSet-Cookie وجميع ترويسات cf-* أبداً. أما Authorization ومفاتيح API والترويسات الأخرى التي تشبه بيانات الاعتماد (أسماء تتضمن token أو secret أو password أو api-key) فتُعرض بالقيمة [redacted]، فلا يُخزَّن الاعتماد نفسه؛ وتبقى ترويسات التوقيع كما هي. كما يستبعد أمر إعادة الإرسال ترويسات hop-by-hop مثل Host وContent-Length.
المراجع
- RFC 9421: HTTP Message Signaturesطريقة قياسية لتوقيع رسائل HTTP بحيث يتحقق المستلم من مصدرها وسلامتها — أساس توقيعات webhook الحديثة.
- RFC 2104: HMAC: Keyed-Hashing for Message Authenticationبناء HMAC: كيف يُنتج مفتاح سري ودالة تجزئة رمز مصادقة للرسالة.
- OWASP Cheat Sheet Series: REST Securityالقواعد الأمنية لواجهات REST: HTTPS، والتوثيق في كل طلب، والتحقق من المدخلات، واستجابات الخطأ الآمنة، وتحديد المعدل.