[PHP] Jak sprawdzić czy domena istnieje i do kogo należy?

0x01 graphic

Chcesz stworzyć sprawdzarkę domen, która sprawdzi czy domena istnieje, a jeżeli istnieje poda również informacje o jej właścicielu. Niesamowicie użyteczny skrypt dla firm zajmujących się rejestracją i sprzedażą domen internetowych, ponieważ od razu mogą one sprawdzić czy domena została zarejestrowana.

0x01 graphic

Skrypt sprawdza istnienie adresów WWW tylko w wybranych domenach (m.in. .pl, .com, .net, .biz, .info), ponieważ lista wszystkich domen byłaby bardzo długa. Nic nie stoi na przeszkodzie aby łatwo dodać kolejne kraje i domeny. Oto gotowy kod programu:

<?

$domena = "nask.pl";

$serwery["biz"]="whois.biz";

$serwery["cc"]="whois.enic.cc";

$serwery["com"]="whois.networksolutions.com";

$serwery["info"]="whois.afilias.net";

$serwery["fr"]="whois.nic.fr";

$serwery["pl"]="whois.dns.pl";

$serwery["int"]="whois.iana.org";

$serwery["net"]="whois.networksolutions.com";

$serwery["org"]="whois.networksolutions.com";

$serwery["cz"]="whois.nic.cz";

$kon = substr($domena,strrpos($domena, ".")+1);

$f=fsockopen($serwery[$kon],43,$errno,$errstr,20);

if ($f) {

fputs($f, "$domena\r\n");

while(!feof($f)) {$odp .= fgets($f,1024); }

fclose($f);

} else { $wynik="Nie można nawiązać połączenia...";}

// dla domen .pl

if (eregi("does not exists",$odp)) { $wynik="Domena nie istnieje...";}

// dla domen .biz .info .int

if (eregi("not found",$odp)) { $wynik="Domena nie istnieje...";}

// dla domen .cc .com .net .org

if (eregi("no match for",$odp)) { $wynik="Domena nie istnieje...";}

// dla domen .fr

if (eregi("no entries found",$odp)) { $wynik="Domena nie istnieje...";}

// dla domen .cz

if (eregi("no data found",$odp)) { $wynik="Domena nie istnieje...";}

if ($wynik=="") {

echo "Domena istnieje:<p>";

echo nl2br($odp);

} else { echo $wynik; }

?>

Wynik działania skryptu:

Domena istnieje:

% WHOIS Server NASK

% This server provides information only for PL domains

Domain name:

nask.pl

Holder of the domain:

NAUKOWA I AKADEMICKA SIEC KOMPUTEROWA

UL.WAWOZOWA 18 02-796 WARSZAWA

Registration date:

1995-04-26

Name servers:

eomer.nask.waw.pl 193.59.201.27

nms.cyf-kr.edu.pl 149.156.2.101 149.156.1.3

dns.tpsa.pl 194.204.159.1

zt.piotrkow.tpsa.pl 194.204.158.242

kirdan.warman.nask.pl 195.187.244.8

bilbo.nask.org.pl 195.187.245.51 148.81.16.51

% WHOIS database last updated 2002-10-29 09:00

Aby otrzymać informację o wybranych domenach wystarczy o nie "zapytać" odpowiednie serwery WHOIS. Ich adresy znajdziesz na stronach firm rejestrujących domeny w różnych krajach. W skrypcie umieściłem w tablicy $serwery tylko kilka przykładowych, ponieważ lista wszystkich byłaby bardzo długa (i w większości niepotrzebna, bo nie codzień sprawdzasz domeny w Afganistanie).

Po przypisaniu nazwy dowolnej domeny do zmiennej $domena zaczynamy ją wstępnie "obrabiać". Zmiennej $kon przypisujemy końcówkę (np. "pl"), czyli domenę najwyższego rzędu (TLD, ang. Top-Level-Domain). Następnie łączymy się z serwerem WHOIS dla odpowiedniej domeny. Znając końcówkę domeny łatwo można ustalić serwer, który w tablicy identyfikowany jest właśnie przez domenę najwyższego rzędu.

Zapytaniem dla serwera WHOIS jest nazwa domeny. Serwer zwraca albo lakoniczny komunikat, że domena nie istnieje albo podaje informacje o domenie, serwerach DNS, właścicielach lub inne informacje, zależnie od kraju i typu domeny.

Ponieważ komunikaty o nieistniejących domenach podawane są w dowolny sposób w zależności od serwera WHOIS, trzeba sprawdzić czy dany komunikat wystąpił w odpowiedzi. Jeżeli wystąpił, domena nie istnieje. Jeżeli nie wystąpił - domena istnieje, więc dodatkowo można pokazać odpowiedź z serwera WHOIS z większą ilością informacji o zarejestrowanej domenie.

Rozbudowa o kolejne domeny sprowadza się do znalezienia odpowiednich serwerów WHOIS i obsługi komunikatów o domenach nieistniejących. W ten sposób bardzo łatwo możesz zbudować własny serwis testujący wybrane domeny.

Pamiętaj jednak, że adresy serwerów WHOIS mogą ulec zmianie, w zależności od firmy obsługującej domeny. Niektóre serwery mają również limity zapytań - z jednego IP można zadać im np. 60 pytań na godzinę. Dlatego warto co jakiś czas sprawdzać czy nie nastąpiły zmiany dotyczące serwerów WHOIS.