इस प्रोजेक्ट के बारे में

Domain Check एक आधिकारिक डोमेन उपलब्धता चेकर है जो सीधे रजिस्ट्री RDAP सर्वर से क्वेरी करता है। RDAP को WHOIS के ICANN-जनादेशित उत्तराधिकारी के रूप में प्रस्तुत किया गया है। README दोनों की तुलना करता है: RDAP संरचित JSON के साथ HTTPS का उपयोग करता है, जबकि WHOIS प्लेनटेक्स्ट TCP पोर्ट 43 का उपयोग करता है, जिसमें .dev और .app का समर्थन नहीं है, और यह रजिस्ट्री-विशिष्ट टेक्स्ट लौटाता है जिसे पार्स करना कठिन होता है। प्रोजेक्ट के अनुसार, उनके परीक्षणों में whois ने एक पंजीकृत डोमेन को उपलब्ध बताया, जबकि RDAP सभी टेस्ट केस में सटीक था, और यह सटीकता तुलना पर एक शोध दस्तावेज़ का लिंक प्रदान करता है। इंटरफेस। प्रोजेक्ट इसे क्वेरी करने के तीन तरीके प्रदान करता है। एक वेब UI बिना साइन-अप वाला फॉर्म प्रदान करता है। एक REST API /api/v1/ के अंतर्गत स्थित है और सिंगल-डोमेन चेक, कॉमा-सेपरेटेड tlds पैरामीटर के साथ मल्टी-TLD चेक, 64 KB बॉडी लिमिट के साथ 50 डोमेन तक लेने वाला बल्क POST एंडपॉइंट और एक हेल्थ एंडपॉइंट का समर्थन करता है। API प्रतिक्रियाएं JSON में होती हैं और डोमेन, उपलब्धता, TLD, चेक टाइमस्टैम्प, डेटा स्रोत, कैश स्थिति और अवधि की रिपोर्ट करती हैं; पंजीकृत डोमेन के लिए इसमें रजिस्ट्रार, निर्माण और समाप्ति तिथियां, नेमसर्वर और स्टेटस कोड भी शामिल होते हैं। एक CLI 'check' और 'bulk' सबकमांड, मल्टी-TLD चेकिंग, JSON या CSV आउटपुट, बल्क रन के लिए प्रोग्रेस इंडिकेटर, कॉन्फ़िगर करने योग्य कॉन्करेंसी और प्रलेखित एग्जिट कोड प्रदान करता है: सभी चेक किए गए डोमेन उपलब्ध होने पर 0, कम से कम एक के लिए होने पर 1, और त्रुटि होने पर 2। डोमेन वॉच। enable-watch फ्लैग के साथ सक्षम एक वैकल्पिक सुविधा वॉच किए गए डोमेन को पोल करती है और जब कोई डोमेन पंजीकृत से उपलब्ध में बदलता है, तो एक वेबहुक भेजती है। वॉच रजिस्टर करने पर एक id, वेबहुक URL और एक HMAC सीक्रेट मिलता है; डिलीवरी में एक X-DomainCheck-Signature हेडर शामिल होता है जिसमें sha256-प्रीफिक्स्ड सिग्नेचर होता है जिसे प्राप्तकर्ता सीक्रेट के साथ सत्यापित करते हैं। वॉच सिंगल-फायर होती हैं, 90 दिनों के बाद समाप्त हो जाती हैं, प्रति 24 घंटे प्रति IP 10 तक सीमित होती हैं, और डिफ़ॉल्ट पोलिंग अंतराल 15 मिनट होता है। इसमें SSRF सुरक्षा, प्राइवेट-IP ब्लॉकिंग और DNS रीबाइंडिंग रोकथाम शामिल है। केवल डोमेन और वेबहुक URL संग्रहीत किए जाते हैं। रेट लिमिट प्रति IP लागू की जाती हैं: वेब UI के लिए प्रति मिनट 10 अनुरोध, सिंगल-चेक API के लिए 60 और बल्क के लिए 5, जिसमें सीमा से अधिक अनुरोध 429 और Retry-After हेडर लौटाते हैं। सेल्फ-होस्टिंग और कॉन्फ़िगरेशन। Domain Check बिना किसी रनटाइम डिपेंडेंसी के एक सिंगल Go बाइनरी या एक Docker इमेज है; सोर्स से बिल्ड करने के लिए Go 1.26 या उससे नए संस्करण की आवश्यकता होती है। टेम्पलेट्स और स्टैटिक एसेट्स बाइनरी में एम्बेडेड हैं। सेटिंग्स को फ्लैग, DOMCHECK_ एनवायरनमेंट वेरिएबल्स या YAML कॉन्फ़िगरेशन फ़ाइल के रूप में दिया जा सकता है, जिसमें प्राथमिकता फ्लैग > एनव वेरिएबल्स > कॉन्फ़िगरेशन फ़ाइल > डिफ़ॉल्ट के क्रम में होती है। प्रलेखित पैरामीटर्स में लिसन एड्रेस, LRU कैश आकार और उपलब्ध और पंजीकृत परिणामों के लिए अलग-अलग कैश TTL, IANA RDAP बूटस्ट्रैप रिफ्रेश अंतराल, X-Forwarded-For का trust-proxy हैंडलिंग, CORS ओरिजिन्स, Prometheus मेट्रिक्स एंडपॉइंट, लॉग फॉर्मेट और लेवल, और वॉच डेटाबेस पाथ, पोल अंतराल, अधिकतम TTL और प्रति-IP वॉच लिमिट शामिल हैं। Caddy और nginx के लिए रिवर्स प्रॉक्सी उदाहरण दिए गए हैं। आर्किटेक्चर। कोड को एक कमांड एंट्री पॉइंट और आंतरिक पैकेजों में व्यवस्थित किया गया है: चेक इंजन (RDAP क्लाइंट, WHOIS फॉलबैक, DNS प्री-फ़िल्टर, IANA बूटस्ट्रैप लोडर, LRU कैश, SSRF गार्ड, प्रति-रजिस्ट्री रेट लिमिटिंग), लेयर्ड कॉन्फ़िगरेशन, IDN-टू-punycode और publicsuffix TLD एक्सट्रैक्शन के साथ डोमेन वैलिडेशन, HTTP सर्वर और हैंडलर्स, और CLI। README अनुरोध प्रवाह को वैलिडेशन, कैश लुकअप, स्पष्ट रूप से पंजीकृत नामों को शॉर्ट-सर्किट करने के लिए DNS प्री-फ़िल्टर, प्रति-रजिस्ट्री रेट लिमिटिंग, RDAP क्वेरी, पार्सिंग, कैश स्टोरेज और JSON प्रतिक्रिया के रूप में वर्णित करता है। डिफ़ॉल्ट कैश TTL उपलब्ध परिणामों के लिए 5 मिनट, पंजीकृत परिणामों के लिए 1 घंटा और त्रुटियों के लिए 30 सेकंड सूचीबद्ध हैं। सुरक्षा और रखरखाव। README SSRF सुरक्षा, सुरक्षा हेडर (CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy), एक नॉन-रूट Docker यूजर और बिना किसी एनालिटिक्स, कुकीज़ या डेटा रिटेंशन के जीरो ट्रैकिंग की सूची देता है। डेवलपमेंट में go test, फज़ टेस्टिंग और golangci-lint का उपयोग किया जाता है, और रिपॉजिटरी आक्रामक स्वचालित git गार्बेज कलेक्शन सेटिंग्स का उल्लेख करती है। प्रोजेक्ट MIT लाइसेंस के तहत है और इसे सेल्फ-होस्टेड git इंस्टेंस के रीड-ओनली GitHub मिरर के रूप में वर्णित किया गया है।