2009-05-05 14 views
15

क्या किसी दिए गए होस्टनाम से डोमेन नाम ढूंढने का कोई प्रोग्रामिक तरीका है?होस्ट नाम से डोमेन नाम निकालें

दिया -> www.yahoo.co.jp वापसी -> yahoo.co.jp

दृष्टिकोण है कि काम करता है लेकिन बहुत धीमी है है: "।"

पर विभाजन और बाएं से 1 समूह को हटाने, में शामिल होने और जब एक वैध SOA रिकार्ड लौटा दिया जाता है dnspython का उपयोग कर एक SOA रिकार्ड क्वेरी, विचार है कि एक डोमेन

वहाँ एक क्लीनर/तेजी से regexps का उपयोग किए बिना ऐसा करने के लिए रास्ता नहीं है?

+0

कि हमेशा या तो हालांकि कई की वजह से काम नहीं करेगा उप डोमेन: sample.sample2.yahoo.com.jp –

+0

@ मिकी मैकक्वैड: यदि यह एक लूप में किया गया है, तो डोमेन नाम का पता लगाने का यही एकमात्र तरीका है। –

+1

आपका एल्गोरिदम उचित है। लेकिन अपनी शब्दावली को ठीक करें: www.yahoo.co.jp * एक डोमेन नाम है, साथ ही मेजबान का नाम भी है। आप * ज़ोन * की तलाश में हैं। – bortzmeyer

उत्तर

3

आप split के बजाय partition उपयोग कर सकते हैं:

>>> 'www.yahoo.co.jp'.partition('.')[2] 
'yahoo.co.jp' 

यह लेकिन पार्सिंग के साथ मदद मिलेगी स्पष्ट रूप से जांच नहीं करेगा अगर लौटे स्ट्रिंग किसी मान्य डोमेन है।

+1

स्ट्रिंग हमेशा एक वैध डोमेन होगा, लेकिन कुछ भी गारंटी नहीं देता है कि यह एक क्षेत्र होगा। – bortzmeyer

15

कोई छोटी परिभाषा नहीं है कि "डोमेन नाम" किसी विशेष "होस्ट नाम" का अभिभावक है।

पेड़ को पार करने की आपकी वर्तमान विधि जब तक आप SOA रिकॉर्ड नहीं देखते हैं, वास्तव में सबसे सही है।

तकनीकी रूप से, आप जो भी कर रहे हैं वह "ज़ोन कट" ढूंढ रहा है, और अधिकांश मामलों में जो उस बिंदु से मेल खाते हैं जिस पर डोमेन को अपने टीएलडी से प्रतिनिधि दिया गया था।

किसी भी विधि जो DNS के संदर्भ के बिना होस्ट नाम के टेक्स्ट पार्सिंग पर निर्भर करती है, विफलता के लिए बर्बाद हो जाती है।

वैकल्पिक रूप से, http://publicsuffix.org/ से प्रतिनिधिमंडल-केंद्रित डोमेन की केंद्रीय रूप से बनाए गए सूचियों का उपयोग करें, लेकिन सावधान रहें कि ये सूचियां अपूर्ण और/या पुरानी हो सकती हैं।

भी देखें this question जहां इस सब से पहले से अधिक चला गया है ...

+0

क्या आप प्रश्न और उत्तर बता सकते हैं? मुझे यकीन नहीं है कि क्या हो रहा है। – Unknown

+1

ए _zone_ में एसओए रिकॉर्ड होना चाहिए, लेकिन आपके पास ज़ोन के नीचे "लेबल" के कई स्तर हो सकते हैं। यदि आपके पास a.b.c.d.example.com है, तो यह जानने का एकमात्र तरीका है कि वास्तविक क्षेत्र उदाहरण है।कॉम प्रत्येक लेबल को तब तक बंद करना है जब तक आपको एसओए रिकॉर्ड नहीं मिल जाता। – Alnitak

1

आपका एल्गोरिथ्म सही एक है। चूंकि जोन कटौती डोमेन नाम में दिखाई नहीं दे रही है (आप डोमेन कटौती - डॉट्स - लेकिन जोन कटौती नहीं देखते हैं), यह एकमात्र सही है।

एक अनुमानित एल्गोरिदम ज़ोन की एक सूची का उपयोग करना है, जैसे अल्निटक द्वारा वर्णित। याद रखें कि ये स्थिर सूचियां नहीं आधिकारिक, वे बासी हैं, आदि

-2

जबकि अजगर में नहीं हैं, वे कई रजिस्ट्रियों की कमी है, आप बंदरगाह इस कोड को किए जा सकेंगे: http://pastebin.com/raw.php?i=VY3DCNhp

+0

यह कोड सही प्रतीत नहीं होता है, यह गलत और अनियमित स्थिर सूची पर निर्भर करता है (और शब्दावली उलझन में है - टीएलडी का सही ढंग से उपयोग नहीं किया जाता है - और यहां तक ​​कि टिप्पणियां कोड से मेल नहीं खाती हैं - http://blah.co/blah। php = "localhost") – bortzmeyer

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