Webhook टेस्टर

सर्वर सहायता API टेस्टिंग

एक अस्थायी endpoint बनाएँ, अपने webhook प्रोवाइडर को उस पर लगाएँ, और रिक्वेस्ट आते हुए देखें — पूरे हेडर, query पैरामीटर, कच्ची और फ़ॉर्मेट की गई बॉडी के साथ। URL 24 घंटे चलता है; हर कैप्चर किया गया अनुरोध आने के दो घंटे बाद हटा दिया जाता है।

गोपनीयता: कैप्चर किए गए अनुरोध Mutqan सर्वर पर दो घंटे रखे जाते हैं और फिर हटा दिए जाते हैं। कैप्चर URL स्वयं बनने के ज़्यादा से ज़्यादा 24 घंटे बाद ख़त्म हो जाता है; SMS डिलीवरी इंस्पेक्टर पेज छोड़ने, रीलोड करने या बंद करने पर अपना URL हटा देता है, और बाकी कैप्चर टूल भी ब्राउज़र के सेशन स्टोरेज रोकने पर ऐसा ही करते हैं। आपके लिए कोई मेलबॉक्स या पता नहीं बनाया जाता। Authorization जैसे क्रेडेंशियल हेडर कभी संग्रहित नहीं होते। व्यक्तिगत डेटा वाला प्रोडक्शन ट्रैफ़िक इस पर न भेजें।
टूल लोड हो रहा है…

वेबहुक क्या है?

वेबहुक वह HTTP रिक्वेस्ट है जो कोई सर्विस आपके रजिस्टर किए URL पर किसी घटना पर भेजती है — भुगतान सेटल हुआ, मैसेज डिलीवर हुआ, बिल्ड पूरा हुआ — ताकि आपका सिस्टम पोलिंग के बजाय घटनाओं पर प्रतिक्रिया दे। इसे टेस्ट करने का मतलब है जो वास्तव में भेजा गया उसे कैप्चर करना (मेथड, हेडर, बॉडी), रिट्राई और क्रम जाँचना, और उस सिग्नेचर को सत्यापित करना जो साबित करता है कि कॉल भेजने वाले से ही आई है।

सुरक्षा नोट: वेबहुक एंडपॉइंट एक सार्वजनिक URL है जिस पर कोई भी पोस्ट कर सकता है। भेजने वाले के सिग्नेचर (आमतौर पर कच्ची बॉडी पर HMAC) को कॉन्स्टेंट-टाइम तुलना से सत्यापित करें, पुराने टाइमस्टैम्प अस्वीकार करें, और पेलोड को अविश्वसनीय इनपुट मानें।

गाइड पढ़ें: API टेस्टिंग क्या है? REST API कैसे टेस्ट करें

Webhook टेस्टर कैसे इस्तेमाल करें

  1. "कैप्चर URL बनाएँ" दबाएँ और URL कॉपी करें।
  2. इसे अपने प्रोवाइडर में webhook destination के रूप में सेट करें (या cURL / नमूना कमांड से रिक्वेस्ट भेजें)।
  3. थोड़ा इंतज़ार करें — डिलीवरी सूची में दिखने लगेंगी; जाँचने के लिए किसी पर क्लिक करें।
  4. अपने सर्वर पर डिलीवरी दोबारा भेजने के लिए cURL कमांड बनाने हेतु Replay टैब इस्तेमाल करें।
  5. काम पूरा होने पर endpoint हटा दें (या उसे अपने आप ख़त्म होने दें)।
प्रोवाइडर इस पेज को नहीं, capture URL को कॉल करता है: पेज डिलीवरी के लिए poll करता है, और Replay आपको बस एक cURL कमांड देता है जिसे आप ख़ुद अपने सर्वर पर चलाते हैं।
  • वेबहुक प्रोवाइडर जैसे Stripe
  • कैप्चर सर्विस capture URL + API
  • यह पेज आपका ब्राउज़र
  • आप और आपका सर्वर टर्मिनल, handler
  1. 1 यह पेज से कैप्चर सर्विस तक: कैप्चर URL बनाएँ POST /api/v1/webhooks
  2. 2 कैप्चर सर्विस से यह पेज तक: capture URL और एक निजी token जवाब ब्राउज़र सेशन में याद रहता है, इसलिए रिफ़्रेश पर भी बना रहता है https://www.mutqansoft.sa/hooks/3f9c…
  3. 3 आप और आपका सर्वर से वेबहुक प्रोवाइडर तक: इसे webhook destination के रूप में सेट करें या cURL से ख़ुद रिक्वेस्ट भेजें
  4. 4 वेबहुक प्रोवाइडर से कैप्चर सर्विस तक: कोई event होता है: प्रोवाइडर उसे POST करता है signature समेत हेडर, और JSON बॉडी Stripe-Signature: t=1725184801,v1=…
  5. 5 कैप्चर सर्विस से वेबहुक प्रोवाइडर तक: 200 OK जवाब छोटी JSON बॉडी के साथ, जो ज़्यादातर डिलीवरी जाँचों के लिए काफ़ी है
  6. 6 यह पेज से कैप्चर सर्विस तक: नई डिलीवरी के लिए poll करता है टैब दिखने पर हर 3 सेकंड में, token के साथ GET /api/v1/webhooks/:id/requests
  7. 7 कैप्चर सर्विस से यह पेज तक: नई डिलीवरी सूची में दिखती हैं जवाब method, path, हेडर (credential [redacted] के रूप में), बॉडी, साइज़ और समय
  8. 8 यह पेज से आप और आपका सर्वर तक: Replay टैब cURL कमांड बनाता है प्रोवाइडर के हेडर और signature बने रहते हैं
  9. 9 आप और आपका सर्वर आंतरिक रूप से: आप उसे अपने सर्वर पर चलाते हैं आपका handler जो credential जाँचता है, उसकी असली वैल्यू [redacted] की जगह डालें

Stripe उदाहरण के तौर पर प्रोवाइडर है। capture URL 24 घंटे बाद ख़त्म हो जाता है, या पहले, अगर आप endpoint हटा दें। बाद में replay करने पर timestamp वाले signature (Stripe, Slack) सामान्य 5 मिनट की tolerance जाँच में विफल हो जाते हैं।

Webhook टेस्टर की खूबियाँ

  • एक क्लिक में बना अनोखा capture URL, पेज रिफ़्रेश के बाद भी याद रहता है, 24 घंटे में ख़त्म
  • टैब दिखने पर हर 3 s में लाइव polling; "आती हुई रिक्वेस्ट का इंतज़ार…" वाली ख़ाली स्थिति
  • method, path, समय और साइज़ वाली रिक्वेस्ट सूची; विवरण व्यू में सारांश, समूहबद्ध हेडर, बॉडी (JSON/form/raw/tree), query, कच्चा HTTP और replay
  • प्रोवाइडर पहचान (Stripe, GitHub, Shopify, Slack, Twilio, PayPal, GitLab, Bitbucket…) event टाइप और signature हेडर के साथ
  • अहम फ़ील्ड और timestamp निकालना, payload/हेडर/cURL कॉपी करना, सभी कैप्चर का JSON एक्सपोर्ट
  • टेस्ट रिक्वेस्ट भेजने का बटन, नए टैब में खोलना, कैप्चर मिटाना, expiry की उलटी गिनती के साथ endpoint हटाना

Webhook टेस्टर का उदाहरण

Stripe का event कैप्चर करना

इनपुट:

Stripe → POST https://www.mutqansoft.sa/hooks/3f9c…
Stripe-Signature: t=1725184801,v1=…
{"id":"evt_1PZx…","type":"payment_intent.succeeded",…}

आउटपुट:

POST /  12:00:01.120  1.4 KB
Provider: Stripe (high confidence) · Event: payment_intent.succeeded · Signature header: Stripe-Signature
Important fields: $.data.object.amount 19900 (199.00 if minor units) · $.data.object.created 1725184790 → 2024-09-01T10:39:50Z

Webhook टेस्टर के बारे में अक्सर पूछे जाने वाले सवाल

मेरा URL कितनी देर चलता है?

capture endpoint 24 घंटे बाद अपने आप ख़त्म हो जाते हैं। URL आपके ब्राउज़र सेशन में याद रहता है, इसलिए रिफ़्रेश करने पर भी बना रहता है; पहले हटाना हो तो "Delete endpoint" इस्तेमाल करें।

रिक्वेस्ट कितनी जल्दी दिखती हैं?

टैब दिखाई देने पर पेज हर 3 सेकंड में poll करता है और छिपने पर रुक जाता है, इसलिए डिलीवरी बिना बेवजह रिक्वेस्ट ख़र्च किए लगभग तुरंत दिख जाती हैं।

क्या-क्या कैप्चर होता है?

method, path, query string, हेडर, कच्ची बॉडी (JSON और form बॉडी डिकोड करके भी दिखाई जाती हैं), साइज़, क्लाइंट IP और मिलने का सटीक समय। Cookie और cf-* हेडर रिकॉर्ड नहीं होते, और Authorization जैसे credential हेडर [redacted] के रूप में स्टोर होते हैं। 256 KB से बड़ी बॉडी काटकर चिह्नित की जाती है, और 4 MB से बड़ी बॉडी 413 के साथ अस्वीकार कर दी जाती है।

क्या मैं कोई डिलीवरी अपने सर्वर पर दोबारा भेज सकता हूँ?

हाँ — Replay टैब आपके डाले हुए URL के लिए cURL कमांड बनाता है और प्रोवाइडर के हेडर तथा signature बनाए रखता है, ताकि आपका verification कोड टेस्ट हो सके; कमांड आपको ख़ुद चलानी होती है। credential हेडर [redacted] के रूप में स्टोर हुए थे, इसलिए अगर आपका handler उन्हें जाँचता है तो असली वैल्यू वापस डालें; और timestamp वाले signature (Stripe, Slack) बाद में replay करने पर सामान्य 5 मिनट की tolerance जाँच में विफल हो जाते हैं।

क्या endpoint प्रोवाइडर को जवाब देता है?

यह छोटी JSON बॉडी के साथ 200 OK लौटाता है, जो ज़्यादातर प्रोवाइडर की डिलीवरी जाँच के लिए काफ़ी है।

तकनीकी नोट्स

ब्राउज़र POST /api/v1/webhooks से endpoint बनाता है, id/token को sessionStorage में रखता है और X-Webhook-Token हेडर के साथ GET /api/v1/webhooks/:id/requests?after=<last timestamp> poll करता है। error होने पर polling धीमी हो जाती है और टैब छिपने पर रुक जाती है।

संदर्भ

  • RFC 9421: HTTP Message SignaturesIETF · 2024HTTP मैसेज पर हस्ताक्षर करने का मानक तरीका ताकि रिसीवर उनके स्रोत और अखंडता की जाँच कर सके — आधुनिक वेबहुक सिग्नेचर का आधार।
  • RFC 2104: HMAC: Keyed-Hashing for Message AuthenticationIETF · 1997HMAC संरचना: एक सीक्रेट की और हैश फ़ंक्शन मिलकर मैसेज ऑथेंटिकेशन कोड कैसे बनाते हैं।
  • OWASP Cheat Sheet Series: REST SecurityOWASP FoundationREST API के सुरक्षा नियम: HTTPS, हर रिक्वेस्ट पर ऑथेंटिकेशन, इनपुट वैलिडेशन, सुरक्षित एरर रिस्पॉन्स, रेट लिमिटिंग।