2010-02-03 17 views
6

क्या जावा में यह देखने के लिए अपेक्षाकृत सरल तरीका है कि कोई डोमेन उपलब्ध है या नहीं?डोमेन उपलब्धता की जांच करें जावा

मुझे एक विश्वसनीय विधि की आवश्यकता है, इसलिए केवल जांच करनी चाहिए कि कनेक्शन बनाया जा सकता है या नहीं।

उत्तर

4

यहाँ एक अच्छा Whois जावा ग्राहक नहीं है एक गतिशील समस्या। शीर्ष स्तर के डोमेन की सूची अक्सर बदलती है और इसी तरह विभिन्न व्हाइस सर्वर की सूची भी होती है। विचार प्राप्त करने के लिए यह Whois server list देखें।

WhoisApi whoisApi = new WhoisApi("apiKey"); 
System.out.println(whoisApi.isAvailable("example.net") ? "available" : "registered"); 
+0

यह एक जीपीएल लाइसेंस के तहत है ताकि आप इसे हमेशा जो भी चाहते हैं उसे करने के लिए संशोधित कर सकें, वूइस सर्वर को निर्दिष्ट करने के लिए एक Whois.java स्रोत फ़ाइल और एक गुण फ़ाइल है, यह है! – Jon

6

डोमेन उपलब्धता एक जोइस क्लाइंट होने पर निर्भर करता है। यहाँ जावा में एक whois ग्राहक के एक कार्यान्वयन के लिए एक लिंक है:

Java Whois Client

आप परिणामों को पार्स करने की आवश्यकता होगी - क्या whois सर्वर आप उपयोग पर निर्भर करता है और, आप (होगा) अलग-अलग हो सकता है कि स्वरूपों वापस आ गए हैं सबसे अच्छी बात यह है कि एक वाणिज्यिक जोइस/पंजीकरण सेवा जैसे ओपनएसआरएस के लिए भुगतान करना है। उनके पास एक विस्तृत एपीआई है जिसे आप एक पंजीकृत पुनर्विक्रेता के रूप में उपयोग कर सकते हैं। सबसे आसान समाधान है

http://opensrs.com/resources/documentation/opensrs_xmlapi.pdf

HTH,

-aj

-1

डोमेन पर DNS लुकअप प्रदर्शन: यहाँ एपीआई डॉक्स कर रहे हैं। सभी उपलब्ध डोमेनों में कोई DNS रिकॉर्ड नहीं होगा, और अधिकांश रजिस्ट्रार पंजीकरण पर डिफ़ॉल्ट DNS प्रविष्टि असाइन करते हैं।

डब्ल्यूएचओआईएस लुकअप आपके सबसे विश्वसनीय समाधान होंगे, खासतौर पर एक आईएसपी के पीछे जो किसी भी लापता डोमेन नाम के लिए अपने सर्वर (विज्ञापनों से भरा "डोमेन नहीं मिला" पृष्ठ) के साथ धोखा देता है।

// don't include the www   
Whois.main(new String[] {"skytouch.com"}); 
+1

नहीं, DNS का उपयोग करना बहुत बुरा विचार है। कई टीएलडी (उदाहरण के लिए, एफआर) में डोमेन हैं जो पंजीकृत हैं लेकिन प्रकाशित नहीं हैं (" ".COM के लिए डोमेन" रखें। – bortzmeyer

+0

मैं असहमत हूं। कभी-कभी यह एक अच्छा विचार है। यदि आप जानना चाहते हैं कि कोई डोमेन उपलब्ध नहीं है, तो DNS लुकअप करने से यह बहुत जल्दी बताएगा यदि यह उपलब्ध नहीं है। अगर DNS लुकअप विफल रहता है, फिर आप उन मामलों के लिए बहुत धीमे WHOIS लुकअप द्वारा अनुसरण करते हैं जहां डोमेन में कोई DNS रिकॉर्ड नहीं है, लेकिन पंजीकृत है। यदि प्रदर्शन एक मुद्दा है, तो यह जाने का एक अच्छा तरीका है। –

+0

आपका एल्गोरिदम गलत है अगर टीएलडी वाइल्डकार्ड का उपयोग करता है, जो होता है। – bortzmeyer

0

एक डोमेन नाम की उपलब्धता है determing:

https://github.com/ethauvin/Whois

आप कमांड लाइन या इंटरफेस के साथ सीधे से चला सकते हैं:

0

एक अन्य समाधान अपाचे कॉमन्स lib उपयोग करने के लिए है:

मैं अपने Whois API जो आप से है कि जटिलता छुपाता उपयोग करने के लिए एक जावा ग्राहक whois-api-java बनाया है। सरलीकृत उदाहरण:

import org.apache.commons.net.whois.WhoisClient; 

public String getWhois(String domainName){ 

    WhoisClient whois = new WhoisClient(); 

    whois.setConnectTimeout(10000); 
    whois.setDefaultTimeout(10000); 

    whois.connect("whois.verisign-grs.com", 43); 

    String domainWhois = whois.query(domainName); 

    whois.disconnect(); 

    return domainWhois; 
} 

जांचें कि क्या प्रतिक्रिया "कोई मिलान नहीं" है। विस्तार के अनुसार Whois सर्वर, टाइमआउट लंबाई और कोई उपलब्धता प्रतिक्रिया भिन्न नहीं है, तो आप उनके लिए अतिरिक्त संग्रह तैयार करना चाहिए था।

Whois सर्वर सूची पाया जा सकता है:

आप अपने प्रश्नों समवर्ती बनाने की कोशिश करते हैं, तो आप निश्चित रूप से whois प्रतिसाद मिलेगा "आपके पास कॉन्फ़िगर रेट दर सीमा तक पहुंच गया।"या कोड में स्पष्ट अपवाद है ताकि आपको कुछ नींद के बाद प्रश्न दोहराएं।

संबंधित मुद्दे