PDA

Pogčedajte punu verziju : PHP Whois Class


webarto
26. 06. 2011., 19:23
Kao što ime kaže, provjereno radi com,net,org,info... Može se napraviti i parser da kupi datume isteka domene i status itd...

class Whois{

public function check($url){
$data = $this->curl("http://www.50webs.com/api-domains/json-whois-check.php?domain=$url");
$data = $this->match('\("(.*?)"\);', $data);
$data = str_replace(array("\\n"), array("\n"), $data);
$data = stripslashes($data);
return $data;
}

private function match($regex, $string){
preg_match("#$regex#is", $string, $matches);
return $matches[1];
}

private function curl($url){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_ENCODING, "gzip");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($curl);
curl_close($curl);
return $data;
}

}

$whois = new Whois;
echo $whois->check("devprotalk.com");


...
Registrant:
UTP CODE doo
Nehruova 51a
lokal 135
Belgrade, Serbia 11000
Serbia

Registered through: WebsiteSpot.com
Domain Name: DEVPROTALK.COM
Created on: 17-May-05
Expires on: 17-May-12
Last Updated on: 12-May-11

Administrative Contact:
Pilipovic, Goran bluesman@utp-code.com
UTP CODE doo
Nehruova 51a
lokal 135
Belgrade, Serbia 11000
Serbia
113189195 Fax -- 113189195

Technical Contact:
Pilipovic, Goran bluesman@utp-code.com
UTP CODE doo
Nehruova 51a
lokal 135
Belgrade, Serbia 11000
Serbia
113189195 Fax -- 113189195

Domain servers in listed order:
NS1.UTPC2.COM
NS2.UTPC2.COM
...

sinisabobic
26. 06. 2011., 19:37
posto su serveri na kojima se tera PHP u najvecem procentu Linux ili nesto *nix-oliko, zar nije lakse dobiti kompletan whois preko shell komande whois (bar za podrzane .com .net .org .info ...)
1. taj server koji vraca json takodje mora da uradi whois pa da to vrati
2. na ovaj nacin zavisis od tog sajta 50webs.com koji ako promeni putanju ili ukine tu skriptu tvoj kod nece raditi

webarto
26. 06. 2011., 20:09
U suštini jeste... njihovi serveri brzo to rade prema tome ja se o njih "grebem", ostavim im godišnje 1000$ valjda imam pravo :D... evo i za Internic mada je presporo i nekada i više od 10s...

class Internic{

private $exts = array("aero","arpa","asia","biz","cat","com","coop","edu","info","int","jobs","mobi","museum","name","net","org","pro","travel");

public function check($url){

$ext = explode(".", $url);
$ext = end($ext);

if(in_array($ext, $this->exts)){
$data = $this->curl("http://reports.internic.net/cgi/whois?whois_nic=$url&type=domain");
$return = $this->match("<pre>(.*?)</pre>", $data);
}else{
$return = false;
}

return $return;

}

private function match($regex, $string){
preg_match("#$regex#is", $string, $matches);
return $matches[1];
}

private function curl($url){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_ENCODING, "gzip");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($curl);
curl_close($curl);
return $data;
}

}

$whois = new Internic;
echo $whois->check("devprotalk.com");

mangia
26. 06. 2011., 20:30
.... zar nije lakse dobiti kompletan whois preko shell komande whois (bar za podrzane .com .net .org .info ...)


Na većini servera je izvršavanje komandi zabranjeno (mislim na shared hosting naloge).

dinke
26. 06. 2011., 21:28
Ja imam sjajnu whois klasu za sve moguce i nemoguce extenzije, ali nazalost ne mogu da je sharujem ovde posto je pravljena za potrebe mog klijenta :)

Elem, par hintova:

- Koristi classic whois interface, dakle socketi i konekcija na port 43 a ne web based.

dragan-dinics-macbook-pro-2:~ dinke$ telnet whois.crsnic.net 43
Trying 199.7.55.74...
Connected to whois.crsnic.net.
Escape character is '^]'.
dinke.net

Whois Server Version 2.0

Domain names in the .com and .net domains can now be registered
with many different competing registrars. Go to http://www.internic.net
for detailed information.

Domain Name: DINKE.NET
Registrar: GODADDY.COM, INC.
Whois Server: whois.godaddy.com
Referral URL: http://registrar.godaddy.com
Name Server: NS1.WEBFACTION.COM
Name Server: NS2.WEBFACTION.COM
Name Server: NS3.WEBFACTION.COM
Name Server: NS4.WEBFACTION.COM
Status: clientDeleteProhibited
Status: clientRenewProhibited
Status: clientTransferProhibited
Status: clientUpdateProhibited
Updated Date: 21-nov-2010
Creation Date: 17-jan-2003
Expiration Date: 17-jan-2013


i naravno parsujes output :)

Adrese whois servera mozes naci na iana.org sajtu, npr za .com/.net je whois.crsnic.net. Kod requestova bukvalno saljes domen<cr> (kao u gornjem primeru).

webarto
26. 06. 2011., 21:36
Ti i sinisabobic ste sigurno u Domains departmentu :D

Znam na šta misliš, tako nekako bi i trebalo :)
http://pokit.etf.ba/get/900c2033f9861d1c36c919d6ace838e8.png

dinke
26. 06. 2011., 21:44
Ti i sinisabobic ste sigurno u Domains departmentu :D
Sinisa nije, ja jesam i to vise od 5 godina :)