वेबहुक क्या है?
वेबहुक वह HTTP रिक्वेस्ट है जो कोई सर्विस आपके रजिस्टर किए URL पर किसी घटना पर भेजती है — भुगतान सेटल हुआ, मैसेज डिलीवर हुआ, बिल्ड पूरा हुआ — ताकि आपका सिस्टम पोलिंग के बजाय घटनाओं पर प्रतिक्रिया दे। इसे टेस्ट करने का मतलब है जो वास्तव में भेजा गया उसे कैप्चर करना (मेथड, हेडर, बॉडी), रिट्राई और क्रम जाँचना, और उस सिग्नेचर को सत्यापित करना जो साबित करता है कि कॉल भेजने वाले से ही आई है।
सुरक्षा नोट: वेबहुक एंडपॉइंट एक सार्वजनिक URL है जिस पर कोई भी पोस्ट कर सकता है। भेजने वाले के सिग्नेचर (आमतौर पर कच्ची बॉडी पर HMAC) को कॉन्स्टेंट-टाइम तुलना से सत्यापित करें, पुराने टाइमस्टैम्प अस्वीकार करें, और पेलोड को अविश्वसनीय इनपुट मानें।
गाइड पढ़ें: API टेस्टिंग क्या है? REST API कैसे टेस्ट करें
SMS डिलीवरी इंस्पेक्टर कैसे इस्तेमाल करें
- «कैप्चर URL बनाएँ» दबाएँ और मिला हुआ पता कॉपी करें।
- अपने प्रोवाइडर कंसोल में, उस URL को अपने नंबर के इनबाउंड-मैसेज वेबहुक के रूप में सेट करें।
- अपने ही नंबर पर एक टेक्स्ट संदेश भेजें।
- डिलीवरी यहाँ दिखेगी — बॉडी, हेडर और सिग्नेचर जाँचने के लिए उसे खोलें।
- अपने हैंडलर को जो मिला उससे तुलना करें और देखें कि दोनों कहाँ अलग होते हैं।
- आप आपका अपना नंबर
- आपका SMS प्रोवाइडर जैसे Twilio
- कैप्चर सर्विस कैप्चर URL
- यह पेज
- 1 यह पेज से कैप्चर सर्विस तक: कैप्चर URL बनाएँ
- 2 कैप्चर सर्विस से यह पेज तक: कॉपी करने के लिए कैप्चर URL जवाब
https://www.mutqansoft.sa/hooks/AbC123xYz - 3 आप से आपका SMS प्रोवाइडर तक: इसे अपने नंबर के इनबाउंड-मैसेज वेबहुक के रूप में सेट करें Twilio पर: «A message comes in»
- 4 आप से आपका SMS प्रोवाइडर तक: अपने ही नंबर पर टेक्स्ट भेजें
- 5 आपका SMS प्रोवाइडर से कैप्चर सर्विस तक: इनबाउंड संदेश POST करता है फ़ॉर्म-एन्कोडेड, JSON नहीं,
X-Twilio-Signatureके साथFrom=%2B966500000000&Body=test&MessageSid=SM… - 6 यह पेज से कैप्चर सर्विस तक: नई डिलीवरी देखता है
- 7 कैप्चर सर्विस से यह पेज तक: डिलीवरी यहाँ दिखती है जवाब बॉडी, हेडर और सिग्नेचर — अपने हैंडलर को जो मिला उससे तुलना के लिए
परिणाम: कोई नंबर आवंटित नहीं होता और आपकी ओर से कोई संदेश प्राप्त नहीं किया जाता।
कैप्चर की गई हर डिलीवरी आने के दो घंटे बाद हटा दी जाती है; कैप्चर URL 24 घंटे चलता रहता है।
SMS डिलीवरी इंस्पेक्टर की खूबियाँ
- कैप्चर URL जिसे आप सीधे अपने प्रोवाइडर के इनबाउंड-मैसेज वेबहुक फ़ील्ड में पेस्ट कर सकते हैं
- पूरा रिक्वेस्ट व्यू: पार्स किया बॉडी, हेडर (credential हेडर [redacted] के रूप में दिखते हैं, signature हेडर बने रहते हैं), क्वेरी स्ट्रिंग, मेथड और सटीक बाइट आकार
- फ़ॉर्म-एन्कोडेड और JSON दोनों पेलोड पार्स होते हैं, इसलिए Twilio-शैली और JSON-शैली दोनों साफ़ पढ़े जाते हैं
- सिग्नेचर हेडर सामने लाए जाते हैं और स्कीम पहचानी जाती है, ताकि पता चले आपके कोड को क्या सत्यापित करना है
- उसी डिलीवरी के लिए दोबारा चलाने योग्य curl कमांड, अपनी एंडपॉइंट पर फिर से चलाने हेतु
- कोई नंबर आवंटित नहीं होता और आपकी ओर से कोई संदेश प्राप्त नहीं किया जाता — यह आपके अपने प्रोवाइडर का कॉलबैक जाँचता है
SMS डिलीवरी इंस्पेक्टर का उदाहरण
पता लगाना कि इनबाउंड SMS हैंडलर तक क्यों नहीं पहुँचा
इनपुट:
प्रोवाइडर वेबहुक → https://www.mutqansoft.sa/hooks/AbC123xYz
अपने नंबर पर एक SMS भेजेंआउटपुट:
POST / application/x-www-form-urlencoded 412 बाइट
X-Twilio-Signature: q1VZ…
बॉडी: From=%2B966500000000&Body=test&MessageSid=SM…
→ फ़ॉर्म-एन्कोडेड, JSON नहीं — JSON की अपेक्षा करने वाला हैंडलर इसे खाली पार्स करेगाSMS डिलीवरी इंस्पेक्टर के बारे में अक्सर पूछे जाने वाले सवाल
क्या इससे मुझे कोई फ़ोन नंबर मिलता है?
नहीं, और यह जानबूझकर है। यह उस नंबर के लिए आपके अपने प्रोवाइडर द्वारा भेजा गया वेबहुक जाँचता है जिसे आप पहले से नियंत्रित करते हैं। यह कोई नंबर आवंटित नहीं करता और किसी और की ओर से कोई संदेश प्राप्त नहीं करता।
मैं अपने प्रोवाइडर को इस पर कैसे भेजूँ?
यहाँ एक कैप्चर URL बनाएँ, फिर उसे अपने प्रोवाइडर कंसोल में अपने नंबर के इनबाउंड-मैसेज वेबहुक फ़ील्ड में पेस्ट करें — Twilio पर «A message comes in», Vonage पर इनबाउंड SMS कॉलबैक, और अन्य जगह उसके समकक्ष। खुद को एक टेक्स्ट भेजें और डिलीवरी यहाँ दिखेगी।
यह कौन-से प्रोवाइडर समझता है?
पेलोड और हेडर किसी भी भेजने वाले के लिए दिखाए जाते हैं। सामान्य प्रोवाइडरों, जिनमें Twilio शामिल है, के सिग्नेचर स्कीम पहचाने जाते हैं, और रॉ हेडर हमेशा दिखाया जाता है ताकि ज़रूरत पड़ने पर आप स्वयं सत्यापित कर सकें।
मेरा संदेश मेरी अपनी एंडपॉइंट तक क्यों नहीं पहुँचा?
सामान्य कारण यहाँ दिखते हैं: आपके हैंडलर से non-2xx उत्तर, ऐसा सिग्नेचर जिसे आपका कोड अस्वीकार करता है, फ़ॉर्म-एन्कोडेड बॉडी को JSON मानकर पार्स करना, या ऐसा URL जिस तक प्रोवाइडर पहुँच नहीं सकता। कैप्चर URL पर जो आता है उसकी तुलना अपने हैंडलर को मिले से करें।
कैप्चर की गई रिक्वेस्ट कितने समय रखी जाती हैं?
दो घंटे। कैप्चर URL स्वयं 24 घंटे चलता रहता है ताकि प्रोवाइडर पर सेट किया गया वेबहुक काम करता रहे, पर उसके द्वारा कैप्चर की गई हर डिलीवरी — इनबाउंड SMS में जिसमें फ़ोन नंबर और अक्सर एक वेरिफ़िकेशन कोड होता है — आने के दो घंटे बाद हटा दी जाती है। व्यक्तिगत डेटा वाला प्रोडक्शन ट्रैफ़िक इस पर न भेजें।
तकनीकी नोट्स
इस टूल में जानबूझकर कोई प्रोवाइडर इंटीग्रेशन नहीं है। यह कोई फ़ोन नंबर आवंटित नहीं करता, कोई प्रोवाइडर क्रेडेंशियल नहीं रखता और किसी के लिए कोई संदेश प्राप्त नहीं करता: यह उस HTTP कॉलबैक को कैप्चर करता है जो आपका अपना प्रोवाइडर उस नंबर के लिए करता है जिसे आप पहले से नियंत्रित करते हैं। इससे यह गुमनाम रूप से संदेश पाने का साधन नहीं, बल्कि आपकी इंटीग्रेशन डीबग करने का टूल बना रहता है।
कैप्चर किया गया अनुरोध आने के दो घंटे बाद हटा दिया जाता है, और प्रति URL सीमित संख्या रखी जाती है। URL उनसे ज़्यादा चलता है — 24 घंटे, ताकि प्रोवाइडर पर सेट किया वेबहुक काम करता रहे — पर पेलोड नहीं, क्योंकि इनबाउंड SMS बॉडी में फ़ोन नंबर और अक्सर एक चालू वेरिफ़िकेशन कोड होता है। चूँकि कैप्चर URL पर भेजी गई हर चीज़ उसे रखने वाले के लिए पठनीय है, व्यक्तिगत डेटा वाला प्रोडक्शन ट्रैफ़िक उस पर नहीं भेजना चाहिए।
संदर्भ
- RFC 9421: HTTP Message SignaturesHTTP मैसेज पर हस्ताक्षर करने का मानक तरीका ताकि रिसीवर उनके स्रोत और अखंडता की जाँच कर सके — आधुनिक वेबहुक सिग्नेचर का आधार।
- RFC 2104: HMAC: Keyed-Hashing for Message AuthenticationHMAC संरचना: एक सीक्रेट की और हैश फ़ंक्शन मिलकर मैसेज ऑथेंटिकेशन कोड कैसे बनाते हैं।
- OWASP Cheat Sheet Series: REST SecurityREST API के सुरक्षा नियम: HTTPS, हर रिक्वेस्ट पर ऑथेंटिकेशन, इनपुट वैलिडेशन, सुरक्षित एरर रिस्पॉन्स, रेट लिमिटिंग।
- RFC 5322: Internet Message Formatई-मेल मैसेज और पते (local-part@domain) का सिंटैक्स जिसके विरुद्ध वैलिडेटर परखे जाते हैं।