وقّع طلبات webhook وتحقق من توقيعها
أداة توقيع webhook تنشئ توقيع HMAC لبيانات ترسلها، أو تتحقق من توقيع وارد مع حدث webhook من خدمة خارجية للتأكد أنه لم يُزوَّر أو يُعبث به في الطريق. تعمل مجانًا داخل متصفحك بلا حد استخدام، وهي خطوة أمان أساسية قبل تنفيذ أي إجراء بناءً على حدث webhook وارد.
شغّل الأداة مجانًا
تعمل هذه الأداة داخل متصفحك — مجانًا، ولا تُرسل بياناتك إلى أي خادم
لماذا التوقيع أساسي في أي webhook
أي عنوان webhook مفتوح على الإنترنت معرّض لمحاولة إرسال بيانات مزيّفة تنتحل صفة خدمة موثوقة — كإرسال إشعار دفع وهمي يوهم نظامك بأن طلبًا دُفع فعليًا. التوقيع الرقمي (HMAC) يحل هذه المشكلة: الطرف المُرسِل يوقّع البيانات بمفتاح سري مشترك، وطرف الاستقبال يتحقق من التوقيع قبل الوثوق بالحدث؛ أي تعديل ولو حرف واحد في البيانات يُبطل التوقيع فورًا ويكشف محاولة العبث.
يعمل داخل متصفحك مجانًا
تلصق البيانات والمفتاح السري فتُنشئ الأداة التوقيع أو تتحقق منه بالكامل على جهازك، دون إرسال المفتاح السري لأي خادم خارجي في أي خطوة — وهذا مهم لأن أمان المفتاح هو أساس أمان النظام كله. الاستخدام من هذه الصفحة مجاني تمامًا وبلا حد على عدد المرات، مناسب للاختبار السريع أثناء بناء أو تشخيص تكامل webhook جديد. هذا يعني أنك تستطيع اختبار مفتاح سري حقيقي من نظام إنتاج دون قلق من تسريبه عبر الشبكة أثناء الاختبار، وهو ما لا تضمنه أدوات تعمل على خادم خارجي.
ربطها بخط أتمتة حقيقي
من يحتاج التحقق ضمن مسار آلي فعلي — التحقق من توقيع كل webhook وارد قبل معالجته تلقائيًا — يستدعي الوظيفة نفسها عبر الـAPI بسعر $0.002 لكل حدث. هذا يفيد أنظمة تستقبل عددًا كبيرًا من أحداث webhook يوميًا وتحتاج تحققًا آليًا موثوقًا لكل واحد دون كتابة كود تحقق منفصل بكل لغة برمجة تستخدمها. يكفي إعداد قواعد التحقق مرة واحدة لتُطبَّق تلقائيًا على كل حدث وارد لاحقًا دون تدخل يدوي متكرر.
حالات الاستخدام
تحقق من إشعارات بوابة دفع
متجر إلكتروني يتحقق من توقيع كل إشعار دفع وارد من بوابته قبل تأكيد الطلب، فلا يثق بأي إشعار فشل التحقق من صحة توقيعه.
تشخيص تكامل جديد سريعًا
مطوّر في شركة الخليج الرقمية يختبر توقيع HMAC داخل متصفحه أثناء بناء تكامل webhook جديد، قبل ربطه فعليًا بالنظام الإنتاجي.
حماية إشعارات نظام داخلي
مؤسسة النخيل للمقاولات توقّع الإشعارات المرسلة من نظامها الداخلي لعملائها، فيتحقق كل عميل أن الإشعار فعلًا من المؤسسة لا من طرف منتحل.
الأسئلة الشائعة
هل يُرسَل المفتاح السري إلى خادمكم أثناء الاستخدام من الموقع؟
لا، التوقيع والتحقق يجريان بالكامل داخل متصفحك؛ المفتاح السري لا يغادر جهازك في أي لحظة.
هل الاستخدام من الموقع مجاني بلا حدود؟
نعم، من هذه الصفحة الاستخدام مجاني ودون حد على عدد المرات.
ما تكلفة الاستخدام عبر API؟
$0.002 لكل حدث عند التنفيذ من جهة الخادم ضمن خط تحقق آلي.
أي خوارزميات HMAC مدعومة؟
الخوارزميات الشائعة المستخدمة في توقيع webhooks الحديثة، وتُحدَّد عند الطلب حسب ما تتطلبه الخدمة التي تتكامل معها.
ماذا يحدث إن كان التوقيع غير صحيح؟
تُظهر الأداة نتيجة تحقق واضحة (صحيح أو غير صحيح)؛ أي بيانات فشل توقيعها يُنصح برفضها وعدم معالجتها في نظامك.
هل يستلزم الاستخدام تسجيل حساب؟
لا، لا توجد حسابات حاليًا؛ الأداة داخل المتصفح تعمل دون تسجيل دخول.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/dev/webhook-sign \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"…"}'const res = await fetch("https://api.kit.forhosting.com/dev/webhook-sign", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"input": "…"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/webhook-sign",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"input": "…"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/webhook-sign", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"input":"…"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"input":"…"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/webhook-sign", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"input": "…"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.webhook_sign",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |