Whois собственными руками

В рамках рекламы: Фотосессия любовь - модельное агентство портфолио в студии.

Whois - сервис предоставляющий информацию о домене.
Есть 2 основных метода построения данного сервиса, которые мы и рассмотрим в данной статье.
Первый метод заключается в обращении к хосту для получения о нем некоторых сведений. Для этого используются методы php gethostbynamel(), позволяющий получить ip-адрес хоста по его имени, и gethostbyaddr(), обратный предыдущему. Применяя в дальнейшем различные методы можно получить данные о DNS и т.д.
Главным недостатком является привязанность к уже существующему сайту, т.е. все эти функции обращаются к хосту, лежащему на хостинге. Это не позволяет определить полностью, занят ли домен. Дело в том, что многие домены оформляются на их владельцев, но при этом последний не торопится организовывать сайт с этим доменом. Таким образом, этот метод покажет вам, что домен свободен, но вы не сможете его регистрировать на себя, поскольку на самом деле он занят.
Вторым и более надежным методом является обращение скрипта к существующим whois севрерам, которые и содержат регистрационные данные о владельце домена.

// Устанавливаем не ограниченное время выполнения скрипта

set_time_limit(0);

$servers = array(

  array("ac","whois.nic.ac","No match"),

  array("ac.cn","whois.cnnic.net.cn","No entries found"),

  array("ac.jp","whois.nic.ad.jp","No match"),

  array("ac.uk","whois.ja.net","no entries"),

  array("ad.jp","whois.nic.ad.jp","No match"),

  array("adm.br","whois.nic.br","No match"),

  array("adv.br","whois.nic.br","No match"),

  array("aero","whois.information.aero","is available"),

  array("ag","whois.nic.ag","does not exist"),

  array("agr.br","whois.nic.br","No match"),

  array("ah.cn","whois.cnnic.net.cn","No entries found"),

  array("al","whois.ripe.net","No entries found"),

  array("am.br","whois.nic.br","No match"),

  array("arq.br","whois.nic.br","No match"),

  array("at","whois.nic.at","nothing found"),

  array("au","whois.aunic.net","No Data Found"),

  array("art.br","whois.nic.br","No match"),

  array("as","whois.nic.as","Domain Not Found"),

  array("asn.au","whois.aunic.net","No Data Found"),

  array("ato.br","whois.nic.br","No match"),

  array("be","whois.geektools.com","No such domain"),

  array("bg","whois.digsys.bg","does not exist"),

  array("bio.br","whois.nic.br","No match"),

  array("biz","whois.biz","Not found"),

  array("bj.cn","whois.cnnic.net.cn","No entries found"),

  array("bmd.br","whois.nic.br","No match"),

  array("br","whois.registro.br","No match"),

  array("ca","whois.cira.ca","Status: AVAIL"),

  array("cc","whois.nic.cc","No match"),

  array("cd","whois.cd","No match"),

  array("ch","whois.nic.ch","We do not have an entry"),

  array("cim.br","whois.nic.br","No match"),

  array("ck","whois.ck-nic.org.ck","No entries found"),

  array("cl","whois.nic.cl","no existe"),

  array("cn","whois.cnnic.net.cn","No entries found"),

  array("cng.br","whois.nic.br","No match"),

  array("cnt.br","whois.nic.br","No match"),

  array("com","whois.verisign-grs.net","No match"),

  array("com.au","whois.aunic.net","No Data Found"),

  array("com.br","whois.nic.br","No match"),

  array("com.cn","whois.cnnic.net.cn","No entries found"),

  array("com.eg","whois.ripe.net","No entries found"),

  array("com.hk","whois.hknic.net.hk","No Match for"),

  array("com.mx","whois.nic.mx","Nombre del Dominio"),

  array("com.ru","whois.ripn.ru","No entries found"),

  array("com.tw","whois.twnic.net","NO MATCH TIP"),

  array("conf.au","whois.aunic.net","No entries found"),

  array("co.jp","whois.nic.ad.jp","No match"),

  array("co.uk","whois.nic.uk","No match for"),

  array("cq.cn","whois.cnnic.net.cn","No entries found"),

  array("csiro.au","whois.aunic.net","No Data Found"),

  array("cx","whois.nic.cx","No match"),

  array("cz","whois.nic.cz","No data found"),

  array("de","whois.denic.de","No entries found"),

  array("dk","whois.dk-hostmaster.dk","No entries found"),

  array("ecn.br","whois.nic.br","No match"),

  array("ee","whois.eenet.ee","NOT FOUND"),

  array("edu","whois.verisign-grs.net","No match"),

  array("edu.au","whois.aunic.net","No Data Found"),

  array("edu.br","whois.nic.br","No match"),

  array("eg","whois.ripe.net","No entries found"),

  array("es","whois.ripe.net","No entries found"),

  array("esp.br","whois.nic.br","No match"),

  array("etc.br","whois.nic.br","No match"),

  array("eti.br","whois.nic.br","No match"),

  array("eun.eg","whois.ripe.net","No entries found"),

  array("emu.id.au","whois.aunic.net","No Data Found"),

  array("eng.br","whois.nic.br","No match"),

  array("far.br","whois.nic.br","No match"),

  array("fi","whois.ripe.net","No entries found"),

  array("fj","whois.usp.ac.fj",""),

  array("fj.cn","whois.cnnic.net.cn","No entries found"),

  array("fm.br","whois.nic.br","No match"),

  array("fnd.br","whois.nic.br","No match"),

  array("fo","whois.ripe.net","no entries found"),

  array("fot.br","whois.nic.br","No match"),

  array("fst.br","whois.nic.br","No match"),

  array("fr","whois.nic.fr","No entries found"),

  array("g12.br","whois.nic.br","No match"),

  array("gd.cn","whois.cnnic.net.cn","No entries found"),

  array("ge","whois.ripe.net","no entries found"),

  array("ggf.br","whois.nic.br","No match"),

  array("gl","whois.ripe.net","no entries found"),

  array("gr","whois.ripe.net","no entries found"),

  array("gr.jp","whois.nic.ad.jp","No match"),

  array("gs","whois.adamsnames.tc","is not registered"),

  array("gs.cn","whois.cnnic.net.cn","No entries found"),

  array("gov.au","whois.aunic.net","No Data Found"),

  array("gov.br","whois.nic.br","No match"),

  array("gov.cn","whois.cnnic.net.cn","No entries found"),

  array("gov.hk","whois.hknic.net.hk","No Match for"),

  array("gob.mx","whois.nic.mx","Nombre del Dominio"),

  array("gs","whois.adamsnames.tc","is not registered"),

  array("gz.cn","whois.cnnic.net.cn","No entries found"),

  array("gx.cn","whois.cnnic.net.cn","No entries found"),

  array("he.cn","whois.cnnic.net.cn","No entries found"),

  array("ha.cn","whois.cnnic.net.cn","No entries found"),

  array("hb.cn","whois.cnnic.net.cn","No entries found"),

  array("hi.cn","whois.cnnic.net.cn","No entries found"),

  array("hl.cn","whois.cnnic.net.cn","No entries found"),

  array("hn.cn","whois.cnnic.net.cn","No entries found"),

  array("hm","whois.registry.hm","(null)"),

  array("hk","whois.hknic.net.hk","No Match for"),

  array("hk.cn","whois.cnnic.net.cn","No entries found"),

  array("hu","whois.ripe.net","MAXCHARS:500"),

  array("id.au","whois.aunic.net","No Data Found"),

  array("ie","whois.domainregistry.ie","no match"),

  array("ind.br","whois.nic.br","No match"),

  array("imb.br","whois.nic.br","No match"),

  array("inf.br","whois.nic.br","No match"),

  array("info","whois.afilias.info","Not found"),

  array("info.au","whois.aunic.net","No Data Found"),

  array("it","whois.nic.it","No entries found"),

  array("idv.tw","whois.twnic.net","NO MATCH TIP"),

  array("int","whois.iana.org","not found"),

  array("is","whois.isnic.is","No entries found"),

  array("il","whois.isoc.org.il","No data was found"),

  array("jl.cn","whois.cnnic.net.cn","No entries found"),

  array("jor.br","whois.nic.br","No match"),

  array("jp","whois.nic.ad.jp","No match"),

  array("js.cn","whois.cnnic.net.cn","No entries found"),

  array("jx.cn","whois.cnnic.net.cn","No entries found"),

  array("kr","whois.krnic.net","is not registered"),

  array("la","whois.nic.la","NO MATCH"),

  array("lel.br","whois.nic.br","No match"),

  array("li","whois.nic.ch","We do not have an entry"),

  array("lk","whois.nic.lk","No domain registered"),

  array("ln.cn","whois.cnnic.net.cn","No entries found"),

  array("lt","ns.litnet.lt","No matches found"),

  array("lu","whois.dns.lu","No entries found"),

  array("lv","whois.ripe.net","no entries found"),

  array("ltd.uk","whois.nic.uk","No match for"),

  array("mat.br","whois.nic.br","No match"),

  array("mc","whois.ripe.net","No entries found"),

  array("med.br","whois.nic.br","No match"),

  array("mil","whois.nic.mil","No match"),

  array("mil.br","whois.nic.br","No match"),

  array("mn","whois.nic.mn","Domain not found"),

  array("mo.cn","whois.cnnic.net.cn","No entries found"),

  array("ms","whois.adamsnames.tc","is not registered"),

  array("mus.br","whois.nic.br","No match"),

  array("mx","whois.nic.mx","Nombre del Dominio"),

  array("name","whois.nic.name","No match"),

  array("ne.jp","whois.nic.ad.jp","No match"),

  array("net","whois.verisign-grs.net","No match"),

  array("net.au","whois.aunic.net","No Data Found"),

  array("net.br","whois.nic.br","No match"),

  array("net.cn","whois.cnnic.net.cn","No entries found"),

  array("net.eg","whois.ripe.net","No entries found"),

  array("net.hk","whois.hknic.net.hk","No Match for"),

  array("net.lu","whois.dns.lu","No entries found"),

  array("net.mx","whois.nic.mx","Nombre del Dominio"),

  array("net.uk","whois.nic.uk","No match for "),

  array("net.ru","whois.ripn.ru","No entries found"),

  array("net.tw","whois.twnic.net","NO MATCH TIP"),

  array("nl","whois.domain-registry.nl","is not a registered domain"),

  array("nm.cn","whois.cnnic.net.cn","No entries found"),

  array("no","whois.norid.no","no matches"),

  array("nom.br","whois.nic.br","No match"),

  array("not.br","whois.nic.br","No match"),

  array("ntr.br","whois.nic.br","No match"),

  array("nx.cn","whois.cnnic.net.cn","No entries found"),

  array("nz","whois.domainz.net.nz","Not Listed"),

  array("plc.uk","whois.nic.uk","No match for"),

  array("odo.br","whois.nic.br","No match"),

  array("oop.br","whois.nic.br","No match"),

  array("or.jp","whois.nic.ad.jp","No match"),

  array("org","whois.verisign-grs.net","No match"),

  array("org.au","whois.aunic.net","No Data Found"),

  array("org.br","whois.nic.br","No match"),

  array("org.cn","whois.cnnic.net.cn","No entries found"),

  array("org.hk","whois.hknic.net.hk","No Match for"),

  array("org.lu","whois.dns.lu","No entries found"),

  array("org.ru","whois.ripn.ru","No entries found"),

  array("org.tw","whois.twnic.net","NO MATCH TIP"),

  array("org.uk","whois.nic.uk","No match for"),

  array("pl","nazgul.nask.waw.pl","does not exists"),

  array("pp.ru","whois.ripn.ru","No entries found"),

  array("ppg.br","whois.nic.br","No match"),

  array("pro.br","whois.nic.br","No match"),

  array("psi.br","whois.nic.br","No match"),

  array("psc.br","whois.nic.br","No match"),

  array("pt","whois.ripe.net","No entries found"),

  array("qh.cn","whois.cnnic.net.cn","No entries found"),

  array("qsl.br","whois.nic.br","No match"),

  array("rec.br","whois.nic.br","No match"),

  array("ro","whois.rotld.ro","No entries found"),

  array("ru","whois.ripn.ru","No entries found"),

  array("sc.cn","whois.cnnic.net.cn","No entries found"),

  array("sd.cn","whois.cnnic.net.cn","No entries found"),

  array("se","whois.nic-se.se","No data found"),

  array("sg","whois.nic.net.sg","NO entry found"),

  array("sh","whois.nic.sh","No match for"),

  array("sh.cn","whois.cnnic.net.cn","No entries found"),

  array("si","whois.arnes.si","No entries found"),

  array("sk","whois.ripe.net","no entries found"),

  array("slg.br","whois.nic.br","No match"),

  array("sm","whois.ripe.net","no entries found"),

  array("sn.cn","whois.cnnic.net.cn","No entries found"),

  array("srv.br","whois.nic.br","No match"),

  array("st","whois.nic.st","No entries found"),

  array("sx.cn","whois.cnnic.net.cn","No entries found"),

  array("tc","whois.adamsnames.tc","is not registered"),

  array("th","whois.nic.uk","No entries found"),

  array("tj.cn","whois.cnnic.net.cn","No entries found"),

  array("tmp.br","whois.nic.br","No match"),

  array("to","whois.tonic.to","No match"),

  array("tr","whois.ripe.net","Not found in database"),

  array("trd.br","whois.nic.br","No match"),

  array("tur.br","whois.nic.br","No match"),

  array("tv","whois.tv","MAXCHARS:75"),

  array("tv.br","whois.nic.br","No match"),

  array("tw","whois.twnic.net","NO MATCH TIP"),

  array("tw.cn","whois.cnnic.net.cn","No entries found"),

  array("uk","whois.thnic.net","No match for"),

  array("va","whois.ripe.net","No entries found"),

  array("vet.br","whois.nic.br","No match"),

  array("vg","whois.adamsnames.tc","is not registered"),

  array("wattle.id.au","whois.aunic.net","No Data Found"),

  array("ws","whois.worldsite.ws","No match for"),

  array("xj.cn","whois.cnnic.net.cn","No entries found"),

  array("xz.cn","whois.cnnic.net.cn","No entries found"),

  array("yn.cn","whois.cnnic.net.cn","No entries found"),

  array("zlg.br","whois.nic.br","No match"),

  array("zj.cn","whois.cnnic.net.cn","No entries found")

);



// Доменное имя

$domain = "mysql.com";

// Извлекаем домен первого уровня

$first_dom = substr($domain, strpos($domain, ".") + 1);

// Получаем имя whois-сервера, который отвечает за

// домен $first_dom

for($i = 0; $i < count($servers); $i++)

{

  if($servers[$i][0] == $first_dom)

  {

    // Запоминаем имя сервера

    $whois = $servers[$i][1];

    // и фразу, означающую, что домен отсутствует

    $not_found_string = $servers[$i][2];

    // Покидаем цикл

    break;

  }

}



// Проверяем определён ли whois-сервер который несёт

// ответственность за данный доменный уровень

if(empty($whois))

	exit("К сожалению не найден соответствующий Whois-сервер");

// Обращаемся к whois-серверу и получаем информацию

// о доменном имени

$fp = fsockopen($whois, 43);

fputs($fp, "$domain\r\n");

$str = "";

while(!feof($fp))

{

  $str .= fgets($fp,128);

}

fclose($fp);

// если в ответе имеется фраза-отказ, домен не

// зарегистрирован, если такой фразы нет -

// следовательно домен зарегистрирован

if(!preg_match("/".$not_found_string."/is", $str))

{

  echo "Домен уже зарегистрирован";

}

else

{

  echo "Домен не зарегистрирован";

}

Выше изложенный скрипт можно значительно ускорить, используя ассоциативные амссивы.
Следует отметить, что основным недостатком данного метода является привязанность к whois-серверам. Это означает, что время выполнения данного скрипта зависит не только от вашего кода, но и от скорости самого запрашиваемого сервера. Также при очень частом обращении к серверам ваш ip-адрес могут попросту заблокировать, а значит этот метод не пригоден для автоматического поиска свободного домена. Но он имеет основной положительный и надежный результат: он предоставляет всю информацию о занятом домене!

Мы разрешаем размещение материалов, приведенных в этой статье, на других ресурсах с условием размещения ссылки на источник и оригинальности авторских строк.
Автор: klerick    ваш оператор интернета
Информационное сообщение: 14 недель беременности по утрам сильно рвет

Контакты

email: dvsign@bk.ru
icq:    438-761-655


Все для вашего сайта

Иконки разные        Иконки файлы и папки        Скрипты java         Скрипты php         Шаблоны
             Анимированные смайлы

Информационное сообщение: заказать дизайн дома стоимость



Сертификаты и статистика

     

Информационное сообщение: