# الويب هوكس الصادرة

Canonical page: https://phishdestroy.github.io/TgWitness/ar/docs/reference/webhooks/

إرسال الأحداث المحددة النطاق إلى مستقبلات HTTPS مع توقيعات HMAC، وإعادة المحاولة، وحالة التسليم.

**الموضوع الرئيسي الحالي:** استخدم نسخة من المصدر؛ حيث إن النسخة التجريبية المحمولة 0.7.0 تسبق هذه الميزة.

[دليل سير العمل](https://phishdestroy.github.io/TgWitness/docs/archive/) · [ويكي](https://github.com/phishdestroy/TgWitness/blob/main/docs/wiki/Archive-and-Integrations.md)

افتح **«التكاملات» → «webhooks الصادرة»** في مساحة العمل المحددة. أضف مستقبِل HTTPS، واختر أحداث التجميع/الوسائط/التصدير، واختر اختياريًّا الدردشات للملاحظات والتغييرات الجديدة. نص الرسالة معطّل افتراضيًّا. يؤدي تمكين المقتطفات إلى إضافة 1,000 حرف كحد أقصى إلى أحداث تغيير الرسائل؛ ولا يتم إرسال حقول Telegram الأولية و بيانات الاعتماد أبدًا.

انسخ سر HMAC مرة واحدة إلى التكوين المحمي للمستلم. فهو مشفر في خزينة TgWitness ولا يمكن استرداده من لوحة التحكم. قم بإزالة وجهة ما وإعادة إنشائها لتناوبها. **أرسل إلى** قوائم الانتظار **الاختبارية الاصطناعية** اختبارًا بدون محتوى دردشة؛ وقم بتحديث حالة التسليم لمعرفة نتيجته.

يعمل نظام التسليم على توسيع نطاق حلقة الإخطارات الحالية جنبًا إلى جنب مع Apprise. ويستخدم المسار الخارجي لمساحة العمل والقيود الحالية على الوجهات الخاصة. ولا يوجد أي حل بديل مباشر أو إعادة توجيه لاحقة. يجب ألا تحتوي عناوين URL على بيانات اعتماد، أو سلاسل استعلام، أو أجزاء؛ وتتطلب العناوين الخاصة الاشتراك في الشبكة على مستوى الخادم، وليس إعدادًا يمكن لمستخدم اللوحة تجاوزه.

## الحمولة والتوقيع

المخطط: [`tgwitness.webhook/1`](https://github.com/phishdestroy/TgWitness/blob/main/integrations/webhook.schema.json). تحتوي كل حمولة على `event_id` و`timestamp` و`workspace` و`type` و`synthetic`، بالإضافة إلى العدادات. تتضمن الأحداث المستندة إلى السجل تسلسلها وهاشها. يُعد إتمام التصدير الكامل و الاختبارات التركيبية أحداث تسليم، دون وجود مرجع مختلق للسجل الموقّع. تظل إشعارات الحذف في Telegram و`missing_on_recheck` أنواعًا متميزة.

رأس الرسالة `X-TgWitness-Signature` هو `t=UNIX_SECONDS,v1=HEX_HMAC_SHA256`. احسب HMAC على البايتات الدقيقة `timestamp + "." + raw_request_body`، باستخدام السر المعروض كبايتات UTF-8. قارن التوقيعات في وقت ثابت قبل تحليل النص الأساسي أو اتخاذ إجراء بشأنه. ارفض الطوابع الزمنية التي تزيد مدتها عن خمس دقائق عن ساعتك. يتم تحديث الطابع الزمني عند كل محاولة تسليم.

استخدم `event_id` كمفتاح إيدمبوتنسي في التخزين الدائم، مع قيد فريد ذري قبل الآثار الجانبية. التوقيع الصالح وحده لا يمنع إعادة تشغيل طلب حديث. احتفظ بالمعرفات المعالجة لمدة لا تقل عن فترة إعادة المحاولة بأكملها؛ واحتفظ بها لفترة أطول إذا كان بإمكان المستلم إعادة معالجة الأحداث المخزنة.

## محاولات إعادة

يتم وضع عمليات التسليم في قائمة انتظار دائمة قبل طلبات HTTP. وتستخدم هذه العملية دلالة «مرة واحدة على الأقل» : فقد يؤدي فقدان إقرار الاستلام أو إعادة التشغيل إلى تسليم الحدث مرة أخرى بنفس المعرف. هناك ثماني محاولات مع تراجع أسي، تبدأ من 15 ثانية وتصل إلى ساعة واحدة كحد أقصى. يتطلب النجاح استجابة 2xx. المهام المستنفدة تترك خطأً مرئيًا؛ ولا يُضمن التسليم بعد انتهاء المحاولات.

تستوعب قائمة الانتظار 1,000 عملية تسليم. وعندما تمتلئ، يتوقف مسح أحداث السجل مؤقتًا و يستأنف بعد توفر مساحة. إن إتمام عملية تصدير كاملة لا يمكن وضعها في قائمة الانتظار يؤدي إلى ظهور خطأ مرئي في قائمة الانتظار. تتم محاولة إرسال ما يصل إلى خمس رسائل لكل دورة إخطار ، ويتم الاحتفاظ بأحدث 100 سجل محاولة. تؤدي إزالة وجهة إلى إزالة عمليات الإرسال المعلقة الخاصة بها أيضًا.

## مثال على n8n

استيراد [سير العمل النموذجي](https://github.com/phishdestroy/TgWitness/blob/main/integrations/n8n-tgwitness.json). إنه غير نشط ولا يحتوي على أي أسرار أو إجراءات لاحقة. قم بتعيين `TGWITNESS_WEBHOOK_SECRET` في بيئة عامل n8n، واسمح بالوصول إلى تلك البيئة، واسمح بـ `crypto` المدمج لعقدة Code. يستخدم المثال خيار raw-body الخاص بعقدة Webhook، ويتحقق من التوقيع/حداثة الرسالة، ويؤكد الأحداث التي تم التحقق من صحتها. وهذا يتطابق مع [التنفيذ الموثق](https://github.com/n8n-io/n8n/blob/master/packages/nodes-base/nodes/Webhook/Webhook.node.ts) للعقدة.

قبل إضافة عمليات الكتابة أو الإشعارات إلى نظام SIEM، أضف تخزينًا دائمًا متجانسًا مفهرسًا بواسطة `event_id`. قم بتقييد تحرير سير عمل n8n والاحتفاظ بسجلات التنفيذ وفقًا للبيانات التي اخترت إرسالها. لا تضيف TgWitness أي أوامر واردة.
