একটি URL থেকে সাবডোমেন পান main


100

প্রথমে একটি ইউআরএল থেকে সাবডোমেন নেওয়া সহজ শোনায়।

http://www.domain.example

প্রথম সময়ের জন্য স্ক্যান করুন তারপরে "http: //" এর পরে যা আসবে তা ফিরিয়ে দিন ...

তাহলে আপনার মনে আছে

http://super.duper.domain.example

উহু. তাহলে আপনি ভাবেন, ঠিক আছে, শেষ সময়টি সন্ধান করুন, একটি শব্দ ফিরে যান এবং এর আগে সবকিছু পান!

তাহলে আপনার মনে আছে

http://super.duper.domain.co.uk

এবং আপনি ফিরে এক বর্গ। সমস্ত টিএলডি-র একটি তালিকা সঞ্চয় করার পাশাপাশি কারও দুর্দান্ত ধারণা আছে?


এই প্রশ্নটি ইতিমধ্যে এখানে জিজ্ঞাসা করা হয়েছে: একটি ইউআরএল এর অংশ প্রাপ্তি সম্পাদনা: অনুরূপ প্রশ্ন এখানে জিজ্ঞাসা করা হয়েছে:)
জেবি।

ক্যাম আপনি কি চান তা পরিষ্কার করুন? দেখে মনে হচ্ছে আপনি কতগুলি ডিএনএস লেবেল উপস্থিত হোন তা বিবেচনা না করেই আপনি ইউআরএল (অর্থাৎ ডোমেইন.কম) এর "অফিসিয়াল" ডোমেন অংশের পরে রয়েছেন?
Alnitak

আমি মনে করি না এটি একই প্রশ্ন - এটি ডোমেন নেমে প্রশাসনিক কাটগুলি সম্পর্কে আরও বেশি বলে মনে হয় যা কেবল স্ট্রিংটি দেখে কাজ করা যায় না
Alnitak

আমি রাজী. আপনার শেষ লক্ষ্য কী তা আরও প্রসারিত করুন।
বাডিজয়

এই উত্তরটি দেখুন: stackoverflow.com/a/39307593/530553
এহসান চাভোশি

উত্তর:


73

সমস্ত টিএলডি-র একটি তালিকা সঞ্চয় করার পাশাপাশি কারও দুর্দান্ত ধারণা আছে?

না, কারণ প্রতিটি টিএলডি সাবডোমেন, দ্বিতীয় স্তরের ডোমেন ইত্যাদি হিসাবে গণনা করে তার মধ্যে পৃথক হয়

মনে রাখবেন যে শীর্ষ স্তরের ডোমেন, দ্বিতীয় স্তরের ডোমেন এবং সাবডোমেন রয়েছে। প্রযুক্তিগতভাবে বলতে গেলে, টিএলডি বাদে সমস্ত কিছুই একটি সাবডোমেন।

ডোমেন.কম.উইকের উদাহরণে, "ডোমেন" একটি সাবডোমেন, "কম" একটি দ্বিতীয় স্তরের ডোমেন এবং "ইউকে" টিএলডি।

সুতরাং প্রশ্নটি প্রথম ব্লাশের চেয়ে জটিল থেকে যায় এবং এটি প্রতিটি টিএলডি কীভাবে পরিচালিত হয় তার উপর নির্ভর করে। আপনার সমস্ত টিএলডি এর একটি ডেটাবেস প্রয়োজন হবে যার মধ্যে তাদের নির্দিষ্ট পার্টিশন অন্তর্ভুক্ত থাকে এবং দ্বিতীয় স্তরের ডোমেন এবং সাবডোমেন হিসাবে কী গণ্য হয়। অনেকগুলি টিএলডি নেই, যদিও, তালিকাটি যুক্তিসঙ্গতভাবে পরিচালনাযোগ্য, তবে সমস্ত তথ্য সংগ্রহ করা তুচ্ছ নয়। ইতিমধ্যে এই জাতীয় তালিকা উপলব্ধ থাকতে পারে।

দেখে মনে হচ্ছে http://publicsuffix.org/ হ'ল এমন একটি তালিকা searching সমস্ত সাধারণ প্রত্যয় (.কম, .co.uk, ইত্যাদি) অনুসন্ধানের জন্য উপযুক্ত তালিকায়। এটি এখনও বিশ্লেষণ করা সহজ হবে না তবে কমপক্ষে আপনাকে তালিকাটি বজায় রাখতে হবে না।

একটি "সর্বজনীন প্রত্যয়" হ'ল এটির অধীনে ইন্টারনেট ব্যবহারকারীরা সরাসরি নাম নিবন্ধন করতে পারেন। পাবলিক প্রত্যয়গুলির কয়েকটি উদাহরণ হ'ল ".কম", ".co.uk" এবং "pvt.k12.wy.us"। সর্বজনীন প্রত্যয় তালিকা সমস্ত পরিচিত পাবলিক প্রত্যয়গুলির একটি তালিকা।

জনসাধারণের প্রত্যয় তালিকাটি মজিলা ফাউন্ডেশনের একটি উদ্যোগ। এটি যে কোনও সফ্টওয়্যার ব্যবহারের জন্য উপলব্ধ, তবে এটি মূলত ব্রাউজার নির্মাতাদের প্রয়োজন মেটাতে তৈরি করা হয়েছিল। এটি ব্রাউজারগুলিকে অনুমতি দেয়, উদাহরণস্বরূপ:

  • উচ্চ-স্তরের ডোমেন নাম প্রত্যয়ের জন্য সেট করা গোপনীয়তা-ক্ষতির "সুপারকুকি" এড়ান
  • ব্যবহারকারীর ইন্টারফেসে একটি ডোমেন নামের সবচেয়ে গুরুত্বপূর্ণ অংশটি হাইলাইট করুন
  • যথাযথভাবে ইতিহাস অনুসারে ইতিহাস এন্ট্রি সাজান

তালিকার মাধ্যমে আপনি দেখতে পাচ্ছেন যে এটি তুচ্ছ সমস্যা নয়। আমি মনে করি একটি তালিকা এটি সম্পাদন করার একমাত্র সঠিক উপায় ...


মোজিলার কোড রয়েছে যা এই পরিষেবাটি ব্যবহার করে। প্রকল্পটি বন্ধ ছিল কারণ আসল কুকি স্পেকটি টিএলডি'র সাথে কুকিগুলিতে বিশ্বাস স্থাপন করেছে, কিন্তু কখনও কাজ করে নি। "কুকি মনস্টার" বাগটি প্রথম সমস্যা ছিল এবং স্থাপত্যটি কখনও স্থির বা প্রতিস্থাপন করা হয়নি।
বেনচ

এটি সমাধানের জন্য পছন্দসই ভাষা তালিকাভুক্ত নয়, তবে একটি ওপেনসোর্স প্রকল্প রয়েছে যা সি # কোডে এই তালিকাটি ব্যবহার করে: কোড. google.com/p/domainname-parser
ড্যান এস্পারজা

কোনও ডোমেন "পাবলিক প্রত্যয়" হোক না কেন সত্যই এটি কোনও ডিএনএস প্রোটোকলের মাধ্যমে উপলব্ধ করা উচিত, সম্ভবত কোনও ইডিএনএস পতাকা দ্বারা। সেক্ষেত্রে মালিক সেট করতে পারবেন এবং আলাদা তালিকা বজায় রাখার দরকার নেই।
পিটার এনস

@ পিটারনেস ইডিএনএস "পরিবহন সম্পর্কিত" পতাকাগুলির জন্য, এবং সামগ্রী সম্পর্কিত মেটাডেটা ব্যবহার করা যায় না can't আমি সম্মত নই যে এই তথ্যটি ডিএনএসের মধ্যেই সেরাভাবে দেওয়া হবে। আইআরটিআর ভ্যানকুভারের আসন্ন আইইটিএফ এ নিয়ে আলোচনা করার জন্য একটি "বোএফ অধিবেশন" করার পরিকল্পনা নিয়েছে।
Alnitak

26

অ্যাডাম যেমন বলেছেন, এটি সহজ নয় এবং বর্তমানে কেবলমাত্র ব্যবহারিক উপায় হ'ল তালিকা ব্যবহার করা।

তারপরেও ব্যতিক্রম রয়েছে - উদাহরণস্বরূপ .ukএমন কয়েকটি মুঠো ডোমেন রয়েছে যা অবিলম্বে সেই স্তরে বৈধ যা সেগুলি নেই .co.uk, সুতরাং সেগুলি ব্যতিক্রম হিসাবে যুক্ত করতে হবে।

বর্তমানে মূলধারার ব্রাউজারগুলি এটি কীভাবে করে - এটি নিশ্চিত করা দরকার যে example.co.ukকোনও কুকি সেট করতে পারবেন না .co.ukযার জন্য অন্য কোনও ওয়েবসাইটে পাঠানো হবে .co.uk

সুসংবাদটি হ'ল এখানে ইতিমধ্যে একটি তালিকা http://publicsuffix.org/ এ উপলব্ধ ।

আইএটিএফ- তে এমন কিছু কাজ রয়েছে যা টিএলডিদের তাদের ডোমেন কাঠামোর চেহারা কেমন তা তা ঘোষণা করার জন্য এক ধরণের মানক তৈরি করার জন্য। এটি সামান্য জটিল হলেও এর পছন্দ অনুসারে .uk.com, যা এটি একটি সর্বজনীন প্রত্যয় হিসাবে চালিত হয় তবে এটি .comরেজিস্ট্রি দ্বারা বিক্রি হয় না ।


1
এওউ, আইআইটিএফ তাদের URL গুলি মরা না যাওয়ার চেয়ে ভাল জানার উচিত। খসড়া (শেষ সেপ্টেম্বর 2012 আপডেট করা) এখন এখানে পৌঁছাতে পারব: tools.ietf.org/html/draft-pettersen-subtld-structure
IMSoP

বিষয়টিতে আইইটিএফ ওয়ার্কিং গ্রুপ (ডিবিউউএনডি) বন্ধ করা হয়েছে।
প্যাট্রিক মেভিজেক

নোট করুন যেহেতু আমি এটি লিখেছি .ukডোমেন রেজিস্ট্রি এখন সরাসরি দ্বিতীয় স্তরে রেজিস্ট্রেশনগুলির অনুমতি দেয়। এটি পিএসএল অনুসারে প্রতিফলিত হয়।
আলনিটাক

22

পাবলিকসুফিক্স.অর্গটি করার উপায়টি মনে হয়। পাবলিকসফিক্স ডেটা ফাইল ফাইলের সামগ্রী সহজেই পার্স করার জন্য প্রচুর বাস্তবায়ন রয়েছে:


2
তবে মনে রাখবেন এটি কেবল পার্সিংয়ের বিষয় নয়! পাবলিকসফিক্স.অর্গ.এ এই তালিকাটি একটি বেসরকারী প্রকল্প, যা অসম্পূর্ণ (উদাহরণস্বরূপ eu.org অনুপস্থিত), টিএলডির নীতিগুলি স্বয়ংক্রিয়ভাবে প্রতিফলিত হয় না এবং যে কোনও সময় অবিশ্বাস্য হতে পারে।
বোর্টজমিয়ার

এছাড়াও, রুবি: github.com/weppos/public_suffix_service
ঝগড়াটে

7
পাবলিকসুফিক্স.অর্গ.এর তালিকাটি মোজিলা অন্য যে কোনও কিছু থেকে "বেসরকারী" নয়। মজিলা, অপেরা এবং ক্রোম এটি ব্যবহার করে, এটি অনিচ্ছাকৃত হওয়ার সম্ভাবনা নেই। অসম্পূর্ণ হিসাবে, eu.org এর মতো ডোমেনের যে কোনও অপারেটর চাইলে অন্তর্ভুক্তির জন্য আবেদন করতে পারে এবং তারা এটি করার পরিণতি বুঝতে পারে। আপনি যদি কোনও ডোমেন যুক্ত করতে চান তবে মালিককে আবেদন করুন। হ্যাঁ, এটি টিএলডি নীতিটি স্বয়ংক্রিয়ভাবে প্রতিফলিত হয় না, তবে তার পরে কিছুই হয় না - সেই তথ্যের কোনও প্রোগ্রামিক উত্স নেই।
গ্রাভেস মার্কহ্যাম

ডাগর / অ্যান্ড্রয়েড: ওখিটপি আপনাকে শীর্ষস্থানীয় দেবে প্রাইভেটডোমাইন
ব্লাডারুনার

9

যেমনটি ইতিমধ্যে অ্যাডাম এবং জন দ্বারা প্রকাশিত publicsuffix.org হল সঠিক উপায়। তবে, যদি কোনও কারণে আপনি এই পদ্ধতির ব্যবহার করতে না পারেন তবে এখানে একটি অনুমানের ভিত্তিতে একটি হিউরিস্টিক যা সমস্ত ডোমেনের 99% কাজ করে:

একটি সম্পত্তি রয়েছে যা সাবডোমেনস এবং টিএলডি থেকে "বাস্তব" ডোমেনগুলি পৃথক করে (সমস্ত নয়, প্রায় সবগুলিই) এবং এটি ডিএনএসের এমএক্স রেকর্ড। আপনি এটির জন্য অনুসন্ধান করে এমন একটি অ্যালগরিদম তৈরি করতে পারেন: হোস্টনেমের অংশগুলি একে একে সরিয়ে ফেলুন এবং কোনও এমএক্স রেকর্ড না পাওয়া পর্যন্ত ডিএনএসকে জিজ্ঞাসা করুন। উদাহরণ:

super.duper.domain.co.uk => no MX record, proceed
duper.domain.co.uk       => no MX record, proceed
domain.co.uk             => MX record found! assume that's the domain

পিএইচপি-তে এখানে একটি উদাহরণ রয়েছে:

function getDomainWithMX($url) {
    //parse hostname from URL 
    //http://www.example.co.uk/index.php => www.example.co.uk
    $urlParts = parse_url($url);
    if ($urlParts === false || empty($urlParts["host"])) 
        throw new InvalidArgumentException("Malformed URL");

    //find first partial name with MX record
    $hostnameParts = explode(".", $urlParts["host"]);
    do {
        $hostname = implode(".", $hostnameParts);
        if (checkdnsrr($hostname, "MX")) return $hostname;
    } while (array_shift($hostnameParts) !== null);

    throw new DomainException("No MX record found");
}

আইইটিএফও এখানে পরামর্শ দিচ্ছে ?
এলি ক্যাসেলম্যান

1
এমনকি পাবলিকসফিক্স.অর্গ.ও বলেছে (ষষ্ঠ অনুচ্ছেদ দেখুন) এটি করার সঠিক উপায়টি ডিএনএসের মাধ্যমে, যেমনটি আপনি নিজের উত্তরে বলেছিলেন!
এলি ক্যাসেলম্যান

1
আপনার সম্পূর্ণভাবে কোনও এমএক্স রেকর্ড ছাড়াই একটি ডোমেন থাকতে পারে Ex এবং যে অ্যালগরিদম ওয়াইল্ডকার্ড রেকর্ড দ্বারা বোকা হবে। এবং বিপরীত দিকে আপনার টিএলডি রয়েছে যার এমএক্স রেকর্ড রয়েছে (পছন্দ করুন .aiবা .axকেবল কয়েকটি নাম রাখুন)।
প্যাট্রিক মেভিজেক

@ পেট্রিক: আমি সম্পূর্ণ সম্মত; যেমন আমি সূচনাতে বলেছিলাম এই অ্যালগরিদমটি বুলেট-প্রুফ নয়, এটি কেবল একটি হিউরিস্টিক যা আশ্চর্যজনকভাবে ভালভাবে কাজ করে।
ফ্রাঙ্কোইস বুর্জোয়া

2

যেমন ইতিমধ্যে বলা হয়েছে যে পাবলিক প্রত্যয় তালিকাটি ডোমেনকে সঠিকভাবে পার্স করার একমাত্র উপায়। পিএইচপি জন্য আপনি TLDExtract চেষ্টা করতে পারেন । এখানে নমুনা কোডটি রয়েছে:

$extract = new LayerShifter\TLDExtract\Extract();

$result = $extract->parse('super.duper.domain.co.uk');
$result->getSubdomain(); // will return (string) 'super.duper'
$result->getSubdomains(); // will return (array) ['super', 'duper']
$result->getHostname(); // will return (string) 'domain'
$result->getSuffix(); // will return (string) 'co.uk'

1

পাবলিকসফিক্স.org থেকে প্রাপ্ত তথ্যের উপর ভিত্তি করে ক্লোজারে সবেমাত্র একটি প্রোগ্রাম লিখেছেন:

https://github.com/isaksky/url_dom

উদাহরণ স্বরূপ:

(parse "sub1.sub2.domain.co.uk") 
;=> {:public-suffix "co.uk", :domain "domain.co.uk", :rule-used "*.uk"}

1

সি লাইব্রেরির জন্য (পাইথনে ডেটা টেবিল তৈরি সহ) আমি http://code.google.com/p/domain-registry-provider/ লিখেছি যা দ্রুত এবং স্থান উভয়ই দক্ষ।

লাইব্রেরিতে ডেটা টেবিলগুলির জন্য k 30 কেবি এবং সি কোডের জন্য। 10 কেবি ব্যবহার করা হয়। টেবিলগুলি সংকলন সময়ে নির্মিত হওয়ায় কোনও প্রারম্ভিক ওভারহেড নেই। আরও তথ্যের জন্য http://code.google.com/p/domain-registry-provider/wiki/DesignDoc দেখুন ।

টেবিল জেনারেশন কোডটি (পাইথন) আরও ভালভাবে বুঝতে, এখানে শুরু করুন: http://code.google.com/p/domain-registry-provider/source/browse/trunk/src/registry_tables_generator/registry_tables_generator.py

সিপিআই- র আরও ভালভাবে বুঝতে, দেখুন:


1
আমার কাছে একটি সি / সি ++ গ্রন্থাগার রয়েছে যার নিজস্ব তালিকা রয়েছে যদিও এটি পাবলিকসফিক্স.অর্গ.ও তালিকার বিরুদ্ধেও চেক করা আছে। এটিকে লিবিটল্ড বলা হয় এবং ইউনিক্স এবং এমএস-উইন্ডোজ স্ন্যাপওবসাইটস.আর
অ্যালেক্সিস উইলক

0

এটি ঠিকভাবে কাজ করছে না, তবে আপনি সম্ভবত ডোমেইন টুকরো টুকরো টুকরো করে চেষ্টা করে প্রতিক্রিয়া যাচাই করে ' http: // uk ', তারপরে ' http://co.uk ' এনে একটি কার্যকর উত্তর পেতে পারেন তারপরে, ' http://domain.co.uk '। যখন আপনি একটি অ-ত্রুটিযুক্ত প্রতিক্রিয়া পাবেন আপনি ডোমেন পেয়েছেন এবং বাকিটি সাবডোমেন।

কখনও কখনও আপনি এটি চেষ্টা করতে হবে :)

সম্পাদনা:

টম লেস মন্তব্যগুলিতে উল্লেখ করেছেন, কিছু ডেমাইন কেবলমাত্র www সাবডোমেনে সেট আপ করা হয় যা উপরের পরীক্ষায় আমাদের একটি ভুল উত্তর দেয়। ভাল যুক্তি! হতে পারে সর্বোত্তম পন্থা হ'ল প্রতিটি অংশকে ' http: // www ' এর পাশাপাশি 'http: //' দিয়ে পরীক্ষা করা এবং ডোমেন নামের সেই অংশটির জন্য হিট হিসাবে গণনা করা? আমরা এখনও কিছু 'বিকল্প' ব্যবস্থা যেমন 'ওয়েব.ডোমেন.কম.কম' মিস করছি, তবে আমি কিছুক্ষণের জন্য সেগুলির মধ্যে একটিও প্রবেশ করিনি :)


Www.x.com না থাকলেও পোর্ট 80 এ এক্স ডটকম কোনও ওয়েব সার্ভারের দিকে নির্দেশ করে এমন কোনও গ্যারান্টি নেই। www এই ক্ষেত্রে একটি বৈধ সাবডোমেন। সম্ভবত একটি স্বয়ংক্রিয় whois এখানে সহায়তা করবে।
টম লেস

ভাল যুক্তি! একটি হুইস এটি পরিষ্কার করে দেবে, যদিও কোন হুইস সার্ভারগুলি কোনটির জন্য টিএলডি / ২ য় স্তরের অর্থ প্রান্তের ক্ষেত্রে একই সমস্যাটি সমাধান করার জন্য ব্যবহার করবে তার একটি তালিকা বজায় রাখা উচিত।
jTresidder

আপনি ধরে নিচ্ছেন যে প্রতিটি ডোমেইনে একটি এইচটিটিপি সার্ভার চলে
ফ্র্যাঙ্কোইস বুর্জোয়া

.DKযেমন http://dk/কাজ করে তেমন কিছু এবং অন্যদের জন্যও কাজ করবে না । এই ধরণের হিউরিস্টিক্সগুলি যাবার উপায় নয় ...
প্যাট্রিক মেভিজেক

0

ইউআরআইবিল্ডার ব্যবহার করুন তারপরে ইউআরআইবিউইল্ডার হস্ট বৈশিষ্ট্যটি এটিকে একটি অ্যারেতে বিভক্ত করুন "" আপনার এখন ডোমেন বিভাজন সহ একটি অ্যারে রয়েছে।


0
echo tld('http://www.example.co.uk/test?123'); // co.uk

/**
 * http://publicsuffix.org/
 * http://www.alandix.com/blog/code/public-suffix/
 * http://tobyinkster.co.uk/blog/2007/07/19/php-domain-class/
 */
function tld($url_or_domain = null)
{
    $domain = $url_or_domain ?: $_SERVER['HTTP_HOST'];
    preg_match('/^[a-z]+:\/\//i', $domain) and 
        $domain = parse_url($domain, PHP_URL_HOST);
    $domain = mb_strtolower($domain, 'UTF-8');
    if (strpos($domain, '.') === false) return null;

    $url = 'http://mxr.mozilla.org/mozilla-central/source/netwerk/dns/effective_tld_names.dat?raw=1';

    if (($rules = file($url)) !== false)
    {
        $rules = array_filter(array_map('trim', $rules));
        array_walk($rules, function($v, $k) use(&$rules) { 
            if (strpos($v, '//') !== false) unset($rules[$k]);
        });

        $segments = '';
        foreach (array_reverse(explode('.', $domain)) as $s)
        {
            $wildcard = rtrim('*.'.$segments, '.');
            $segments = rtrim($s.'.'.$segments, '.');

            if (in_array('!'.$segments, $rules))
            {
                $tld = substr($wildcard, 2);
                break;
            }
            elseif (in_array($wildcard, $rules) or 
                    in_array($segments, $rules))
            {
                $tld = $segments;
            }
        }

        if (isset($tld)) return $tld;
    }

    return false;
}


0

আপনি এই lib tld.js: জাভাস্ক্রিপ্ট এপিআই ব্যবহার করতে পারেন জটিল ডোমেন নাম, সাবডোমেন এবং ইউআরআইয়ের বিরুদ্ধে কাজ করতে।

tldjs.getDomain('mail.google.co.uk');
// -> 'google.co.uk'

আপনি যদি ব্রাউজারে রুট ডোমেন পান। আপনি এই lib অ্যাঙ্গাসফু / ব্রাউজার-রুট-ডোমেন ব্যবহার করতে পারেন ।

var KEY = '__rT_dM__' + (+new Date());
var R = new RegExp('(^|;)\\s*' + KEY + '=1');
var Y1970 = (new Date(0)).toUTCString();

module.exports = function getRootDomain() {
  var domain = document.domain || location.hostname;
  var list = domain.split('.');
  var len = list.length;
  var temp = '';
  var temp2 = '';

  while (len--) {
    temp = list.slice(len).join('.');
    temp2 = KEY + '=1;domain=.' + temp;

    // try to set cookie
    document.cookie = temp2;

    if (R.test(document.cookie)) {
      // clear
      document.cookie = temp2 + ';expires=' + Y1970;
      return temp;
    }
  }
};

কুকি ব্যবহার করা মুশকিল।


0

আপনি যদি ইউআরএলগুলির একটি স্বেচ্ছাসেবী তালিকা থেকে সাব-ডোমেন এবং / অথবা ডোমেনগুলি বের করার সন্ধান করছেন তবে এই অজগর স্ক্রিপ্টটি সহায়ক হতে পারে। সতর্ক থাকুন, এটি নিখুঁত নয়। এটি সাধারণভাবে সমাধান করার জন্য এটি একটি জটিল সমস্যা এবং আপনি যদি আশা করছেন এমন ডোমেনগুলির একটি শ্বেত তালিকা থাকে তবে এটি খুব সহায়ক।

  1. Publicsuffix.org থেকে শীর্ষ স্তরের ডোমেন পান
আমদানি করার অনুরোধ

url = 'https://publicsuffix.org/list/public_suffix_list.dat'
পৃষ্ঠা = অনুরোধ.জেট (ইউআরএল)

ডোমেনগুলি = []
পেজ.টেক্সট.স্প্লিটলাইনগুলিতে লাইনের জন্য ():
    if line.startswith ('//'):
        অবিরত
    অন্য:
        ডোমেন = লাইন.স্ট্রিপ ()
        যদি ডোমেন:
            domains.append (ডোমেন)

ডোমেনস = [d [2:] যদি d.startswith ('*।') অন্যথায় D এর জন্য ডি]
মুদ্রণ ('পাওয়া {} ডোমেনস'. ফর্ম্যাট (লেন (ডোমেন)))
  1. পুনর্নির্মাণ করুন
আমদানি পুনরায়

_রেজেক্স = ''
ডোমেনে ডোমেনের জন্য:
    _regex + = আর '{} |'। ফর্ম্যাট (ডোমেন.রেপ্লেস ('।', '\।'))

সাবডোমেন_রেজেক্স = আর '/(’^^/৪*/২^^\. ^^^^/.]\\\.({})/.{}$]'
ডোমেন_রেজেক্স = আর '([[^ /।]] + \। ({})) /.*$'। ফর্ম্যাট (_রেজেক্স)
  1. ইউআরএলগুলির তালিকায় রেজেক্স ব্যবহার করুন
FILE_NAME = '' # সিএসভি ফাইলের নাম এখানে রাখুন
URL_COLNAME = '' # টি ইউআরএল কলামের নাম এখানে রাখুন

পিডি হিসাবে পান্ডস আমদানি করুন

df = pd.read_csv (FILE_NAME)
ইউআরএলস = ডিএফ [ইউআরএল_কোলেম]

df ['sub_domain_extected'] = urls.str.extract (প্যাট = সাবডোমেন_রেজেক্স, প্রসারিত = সত্য) [0]
ডিএফ ['ডোমেন_সেক্সট্রাক্ট'] = urls.str.extract (প্যাট = ডোমেন_রেজেক্স, প্রসারিত = সত্য) [0]

df.to_csv ('নিষ্ক্রিয়_ডোমেনস সিএসভি', সূচক = মিথ্যা)

-1

HTTP: // এর সাথে পৃথক করতে সাধারণ প্রত্যয়গুলির তালিকা (.co.uk, .com, এবং cetera) এবং তারপরে আপনার কাছে " http: // সাব এর পরিবর্তে কেবলমাত্র" sub.domain "কাজ করতে হবে । ডোমেন.সফিক্স ", বা কমপক্ষে এটিই আমি সম্ভবত করব।

সবচেয়ে বড় সমস্যা হ'ল সম্ভাব্য প্রত্যয়গুলির তালিকা। অনেক কিছুই আছে, সব পরে।


-3

পাবলিকসফিক্স.আর.অর্গের তালিকাটি একবার দেখে নিলে মনে হয় যে আপনি চূড়ান্ত তিনটি বিভাগ ("বিভাগ" এখানে দুটি বিন্দুর মধ্যবর্তী একটি বিভাগ) যেখানে ডোমেনগুলি থেকে চূড়ান্ত বিভাগটি দুটি অক্ষর দীর্ঘ, সরিয়ে যুক্তিসঙ্গত অনুমান করতে পারেন, এটি একটি দেশীয় কোড এবং আরও উপ-বিভাজন করা হবে এই ধারণায় on যদি চূড়ান্ত বিভাগটি "আমাদের" হয় এবং দ্বিতীয় থেকে শেষ বিভাগটিও দুটি অক্ষর হয় তবে শেষ চারটি বিভাগটি সরান। অন্যান্য সমস্ত ক্ষেত্রে, চূড়ান্ত দুটি বিভাগগুলি সরান। উদাহরণ:

"উদাহরণস্বরূপ" দুটি অক্ষর নয়, তাই "www" রেখে "ডোমেন.সাম্পল" সরান

"উদাহরণস্বরূপ" দুটি অক্ষর নয়, তাই "সুপার.ডুপার" রেখে "ডোমেন.সাম্পল" সরান

"ইউকে" দুটি অক্ষর (তবে "আমাদের" নয়), তাই "সুপার.ডুপার" রেখে "ডোমেইন.কম" সরান remove

"আমাদের" দুটি অক্ষর এবং "আমাদের", প্লাস "wy" এছাড়াও দুটি অক্ষর, সুতরাং "pvt.k12.wy.us" সরান, "foo" রেখে।

মনে রাখবেন, যদিও আমি এখনও পর্যন্ত প্রতিক্রিয়াগুলিতে দেখেছি এমন সমস্ত উদাহরণের জন্য এটি কাজ করে তবে এটি কেবল একটি যুক্তিসঙ্গত অনুমান হিসাবেই রয়ে গেছে। এটি সম্পূর্ণরূপে সঠিক নয়, যদিও আমি সন্দেহ করি যে এটি আপনার প্রায় যতটা কাছাকাছি রেফারেন্সের জন্য ব্যবহারের জন্য কোনও আসল তালিকা তৈরি / না পেয়েই পাবে সম্ভবত।


3
প্রচুর ব্যর্থ মামলা রয়েছে। এটি চেষ্টা এবং ব্যবহার করতে ব্যবহৃত অ্যালগরিদম ব্রাউজারগুলির ধরণের। এটি করবেন না, পিএসএল ব্যবহার করুন - এটি কাজ করে এবং আপনাকে সহায়তা করার জন্য গ্রন্থাগার রয়েছে।
গ্রাভেস মারকহাম

কোনও কিছুই জিটিএলডিগুলিকে "বিভাগযুক্ত" হতে নিষেধ করে না, .NAMEউদাহরণস্বরূপ শুরুতে এটি ছিল যখন আপনি কেবল firstname.lastname.nameডোমেন নাম কিনতে পারতেন । এবং বিপরীত দিকে, এখন .USএটিও সমতল, যাতে আপনি x.y.z.whatever.usকেবল whatever.usরেজিস্ট্রি কিনে তা করতে পারেন এবং তারপরে আপনার অ্যালগরিদম এতে ব্যর্থ হবে।
প্যাট্রিক মেভিজেক

1
এছাড়াও ("বিভাগ" অর্থ এখানে দুটি বিন্দুর মধ্যে একটি বিভাগ) : এটি ডিএনএস বিশ্বে একটি লেবেল বলা হয়, নতুন নাম আবিষ্কার করার দরকার নেই।
প্যাট্রিক মেভিজেক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.