ما هو الـ webhook؟
الـ webhook طلب HTTP ترسله خدمة ما إلى عنوان تسجّله عندما يحدث شيء — تسوية دفعة، أو تسليم رسالة، أو انتهاء بناء — فيتفاعل نظامك مع الأحداث بدلاً من الاستطلاع المتكرر. اختباره يعني التقاط ما يُرسَل فعلياً (الأسلوب والترويسات والجسم)، وفحص إعادة المحاولة والترتيب، والتحقق من التوقيع الذي يثبت أن النداء جاء من المرسِل.
ملاحظة أمنية: نقطة نهاية الـ webhook عنوان عام يمكن لأي شخص الإرسال إليه. تحقق من توقيع المرسِل (عادةً HMAC على الجسم الخام) بمقارنة ثابتة الزمن، وارفض الطوابع الزمنية القديمة، وتعامل مع الحمولة كمدخل غير موثوق.
اقرأ الدليل: ما هو اختبار API؟ وكيف تختبر REST API
كيفية استخدام فاحص طلبات HTTP
- أنشئ عنوان URL للالتقاط.
- أرسل طلباً من العميل الذي تصحّح أخطاءه (أو افتح عنوان URL في تبويب متصفح).
- اختر الطلب؛ يعرض العرض الخام الرسالة كاملة، وتفصّلها التبويبات الأخرى.
- قارنه بما كان كودك ينوي إرساله.
مزايا فاحص طلبات HTTP
- اطّلع على الطلبات كما استلمها الخادم: الطريقة والمسار والاستعلام والترويسات (تظهر قيم بيانات الاعتماد بالقيمة [redacted]، ولا تُسجَّل Cookie وترويسات cf-*) والجسم وعنوان IP للعميل
- يُفتح عرض رسالة HTTP الخام افتراضياً؛ مع فكّ ترميز أجسام JSON والنماذج عند الطلب
- يعمل مع أي عميل — حزم SDK للجوال والبرامج النصية والوكلاء والمتصفحات وأجهزة إنترنت الأشياء
- افتح عنوان URL في تبويب جديد لترى ما يرسله متصفحك
- نسخ الترويسات أو الحمولة أو أمر cURL يعيد إنتاج الطلب
مثال على فاحص طلبات HTTP
طلب من حزمة SDK للجوال
الإدخال:
App → PUT https://www.mutqansoft.sa/hooks/3f9c…/v1/devices/42?locale=arالنتيجة:
PUT /v1/devices/42?locale=ar HTTP/1.1
user-agent: MyApp/3.2.1 (Android 14)
content-type: application/json
x-app-token: [redacted]
{"pushToken":"…","timezone":"Asia/Riyadh"}الأسئلة الشائعة حول فاحص طلبات HTTP
ما الغرض من هذه الأداة؟
وجّه أي عميل HTTP (حزمة SDK للجوال أو برنامج نصي أو وكيل أو جهاز إنترنت الأشياء) إلى عنوان URL لترى ما يصل إلى الخادم: الطريقة والمسار والاستعلام والترويسات (تظهر قيم بيانات الاعتماد بالقيمة [redacted]، ولا تُسجَّل Cookie وترويسات cf-*) والجسم وعنوان IP — ويعرضه عرض HTTP الخام كرسالة واحدة.
هل يمكنني فتح عنوان URL في متصفح؟
نعم، ينفّذ خيار «فتح في تبويب جديد» طلب GET من متصفحك لترى ما يرسله المتصفح افتراضياً.
هل يُخزَّن أي شيء بشكل دائم؟
تبقى الطلبات الملتقطة فقط حتى تنتهي صلاحية نقطة النهاية (24 ساعة) أو تحذفها، ولا تُشارك مع أي شخص آخر أبداً.
ما طرق HTTP وأحجام الجسم التي يقبلها رابط الالتقاط؟
أي طريقة (GET وPOST وPUT وPATCH وDELETE وHEAD وOPTIONS) على الرابط أو أي مسار فرعي تحته، مع تفعيل CORS لتعمل استدعاءات fetch() من المتصفح. يُحفَظ الجسم حتى 256 KB (وما زاد يُقتطع مع الإشارة إلى ذلك)، وتحتفظ كل نقطة نهاية بآخر 200 طلب بحد أقصى 60 طلباً في الدقيقة، ويتلقى كل استدعاء رد إقرار 200 بصيغة JSON.
المراجع
- RFC 9421: HTTP Message Signaturesطريقة قياسية لتوقيع رسائل HTTP بحيث يتحقق المستلم من مصدرها وسلامتها — أساس توقيعات webhook الحديثة.
- RFC 2104: HMAC: Keyed-Hashing for Message Authenticationبناء HMAC: كيف يُنتج مفتاح سري ودالة تجزئة رمز مصادقة للرسالة.
- OWASP Cheat Sheet Series: REST Securityالقواعد الأمنية لواجهات REST: HTTPS، والتوثيق في كل طلب، والتحقق من المدخلات، واستجابات الخطأ الآمنة، وتحديد المعدل.