• Форум посвящен самостоятельной (бесплатной) защите от ддос атак.
    Есть мануалы по настройке сервера от Ddos для сисадминов и готовые инструменты от ддос-атак для вебмастеров.

    Простое, эффективное, точное и проверенное бесплатное решение от мощных ддос-атак: PHP скрипт + Cloudflare, с панелью управления.

Скрипт проверки whois доменов: защита от угона доменов

H

Hunter23

New Member
#1
Делал для себя, поскольку опасаюсь угона доменов. На форумах начитался про такие случаи - не угадаешь что еще придумают хакеры.

На перевод домена к другому регистратору обычно требуется 2-3 дня. В это время статус домена меняется на PENDING TRANSFER. Таким образом, если проверять whois домена каждый день, то можно оперативно пресечь попытку угона домена.

Я сделал скрипт на основе кода, найденного в Интернете, который раз в сутки проверяет whois доменов и при смене статуса любого домена отправляет мне смс (смс отправляю через договор, поэтому код отправки смс не прикладываю). Можно отправлять уведомление на Email или просто ежедневно заходить по ссылке, если не лень :).

Скрипт для проверки whois доменов различных доменных зон:
PHP:
<?php
$GLOBALS['domain'] = array(
      array("ac","whois.nic.ac","No match"),
      array("ac.cn","whois.cnnic.net.cn","no matching record"),
      array("ac.jp","whois.nic.ad.jp","No match"),
      array("ac.uk","whois.ja.net","No such domain"),
      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","Not found"),
      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","whois.amnic.net","No match"),
      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("av.tr","whois.nic.tr","Not found in database"),
      array("az","whois.ripe.net","no entries found"),
      array("ba","whois.ripe.net","No match for"),
      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("biz.tr","whois.nic.tr","Not found in database"),
      array("bj.cn","whois.cnnic.net.cn","No entries found"),
      array("bel.tr","whois.nic.tr","Not found in database"),
      array("bmd.br","whois.nic.br","No match"),
      array("br","whois.registro.br","No match"),
      array("by","whois.ripe.net","no entries found"),
      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.crsnic.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.tr","whois.nic.tr","Not found in database"),
      array("com.ru","whois.ripn.ru","No entries found"),
      array("com.tw","whois.twnic.net","NO MATCH TIP"),
      array("com.ua","whois.ripe.net","No entries found"),
      array("conf.au","whois.aunic.net","No entries found"),
      array("co.at","whois.nic.at","nothing 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("cy","whois.ripe.net","no entries found"),
      array("cz","whois.nic.cz","No data found"),
      array("de","whois.denic.de","not found"),
      array("dr.tr","whois.nic.tr","Not found in database"),
      array("dk","whois.dk-hostmaster.dk","No entries found"),
      array("dz","whois.ripe.net","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","whois.crsnic.net","No match"),
      array("edu.au","whois.aunic.net","No Data Found"),
      array("edu.br","whois.nic.br","No match"),
      array("edu.tr","whois.nic.tr","Not found in database"),
      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("eu","whois.eu","Status:      FREE"),
      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("gb","whois.ripe.net","No match for"),
      array("gb.com","whois.nomination.net","No match for"),
      array("gb.net","whois.nomination.net","No match for"),
      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("gen.tr","whois.nic.tr","Not found in database"),
      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("gov.tr","whois.nic.tr","Not found in database"),
      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("info.tr","whois.nic.tr","Not found in database"),
      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("k12.tr","whois.nic.tr","Not found in database"),
      array("ke","whois.rg.net","No match for"),
      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("ma","whois.ripe.net","No entries found"),
      array("mat.br","whois.nic.br","No match"),
      array("mc","whois.ripe.net","No entries found"),
      array("md","whois.ripe.net","No match for"),
      array("me.uk","whois.nic.uk","No match for"),
      array("med.br","whois.nic.br","No match"),
      array("mil","whois.nic.mil","No match"),
      array("mil.br","whois.nic.br","No match"),
      array("mil.tr","whois.nic.tr","Not found in database"),
      array("mk","whois.ripe.net","No match for"),
      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("mt","whois.ripe.net","No Entries found"),
      array("mus.br","whois.nic.br","No match"),
      array("mx","whois.nic.mx","Nombre del Dominio"),
      array("name","whois.nic.name","No match"),
      array("name.tr","whois.nic.tr","Not found in database"),
      array("ne.jp","whois.nic.ad.jp","No match"),
      array("net","whois.crsnic.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.tr","whois.nic.tr","Not found in database"),
      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("no.com","whois.nomination.net","No match for"),
      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("nu","whois.nic.nu","NO MATCH for"),
      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("or.at","whois.nic.at","nothing found"),
      array("org","whois.pir.org","NOT FOUND"),
      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.tr","whois.nic.tr","Not found in database"),
      array("org.tw","whois.twnic.net","NO MATCH TIP"),
      array("org.uk","whois.nic.uk","No match for"),
      array("pk","whois.pknic.net","is not registered"),
      array("pl","whois.ripe.net","No information about"),
      array("pol.tr","whois.nic.tr","Not found in database"),
      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 match for"),
      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.ripe.net","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("se.com","whois.nomination.net","No match for"),
      array("se.net","whois.nomination.net","No match for"),
      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("su","whois.ripe.net","No entries found"),
      array("sx.cn","whois.cnnic.net.cn","No entries found"),
      array("tc","whois.adamsnames.tc","is not registered"),
      array("tel.tr","whois.nic.tr","Not found in database"),
      array("th","whois.nic.uk","No entries found"),
      array("tj.cn","whois.cnnic.net.cn","No entries found"),
      array("tm","whois.nic.tm","No match for"),
      array("tn","whois.ripe.net","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.nic.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("ua","whois.ripe.net","No entries found"),
      array("uk","whois.thnic.net","No match for"),
      array("uk.com","whois.nomination.net","No match for"),
      array("uk.net","whois.nomination.net","No match for"),
      array("us","whois.nic.us","Not found"),
      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("web.tr","whois.nic.tr","Not found in database"),
      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("yu","whois.ripe.net","No entries found"),
      array("za","whois.frd.ac.za","No match for"),
      array("zlg.br","whois.nic.br","No match"),
      array("zj.cn","whois.cnnic.net.cn","No entries found")
);

// Домены, которые нужно проверять //
$domains = array('domain1.com', 'domain2.com', 'domain3.org');

foreach ($domains as $i=>$v) echo get_whois_echo($v);

function whois($url)
{
    $domain=$GLOBALS['domain'];
    
    $end = substr($url, strpos($url, ".") + 1);
 
    for($i = 0; $i < count($domain); $i++)
    {
             if($domain[$i][0] == $end)
             {
                $whois = $domain[$i][1];
                $no_found = $domain[$i][2];

                break;
             }
    }

    if(empty($whois)) exit("Нет данных по этому домену");

    @$fp = fsockopen($whois, 43) or exit ("Ошибка при обращении к серверу");

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

    $answer = "";

    while(!feof($fp))
    {
       $answer .= "<tr><td>".fgets($fp,128)."</tr></td>";
    }

    fclose($fp);


    $return= preg_replace("/".$no_found."/is", "Домен не найден.", $answer);


    return $return;
}

function get_whois_echo($d)
{
    $resp = whois($d); //'whois.pir.org'
    preg_match("!Whois Server:\s+([\w\.]+)\b!im", $resp, $matches);
    $server = $matches[1];
    preg_match("!Updated Date:\s+([\w\-]+)\b!im", $resp, $matches);
    list($update_date) = explode('T', $matches[1]);

    preg_match("!Status:\s+([\w\.]+)\b!im", $resp, $matches);
    $domain_status = $matches[1];

    if ($matches[1]==false)
    {
        preg_match("!Domain Status:\s+([\w\.]+)\b!im", $resp, $matches);
        $domain_status = $matches[1];
    }

    preg_match("!Expiration Date:\s+([\w\-]+)\b!im", $resp, $matches);
    $expiry = $matches[1];

    if ($matches[1]==false)
    {
        preg_match("!Registry Expiry Date:\s+([\w\-]+)\b!im", $resp, $matches);
   
        list($matches[1])=explode('T',  $matches[1]);
   
        $expiry = $matches[1];
    }

    $exptime = strtotime($expiry);
    $expdays = round(($exptime - time()) / 84600);


    $expiry = date("d/m/Y", $exptime);

    $echo="Domain: $d<br>";
    $echo.="Whois server: $server<br>";
    $echo.="Expires: $expiry<br>";
    $echo.="Days left: $expdays<br>";
    $echo.="Update date: $update_date<br>";
    $echo.="Domain status: $domain_status<br><hr>";

    return $echo;
}
?>
 

Вложения

admin

admin

Администратор
Администрация
#2
У регистратора Reg.ru появился платный сервис по отслеживанию изменений Whois - мониторинг доменов. Для тех, кто не хочет заморачиваться со скриптом.
 
Сверху