2010-11-10 12 views
2

Salut, j'ai joué avec ce script Whois que j'ai obtenu sur le net, et j'ai joué avec des variables et des tableaux pour essayer de comprendre pourquoi il ne retournera pas les résultats whois pour Google et Facebook (j'ai testé google, comme cela est évident), puis testé facebook après avoir appris que c'est à propos de Whois spamming, et les gens qui ajoutent des sous-domaines google.com que ce script reprend (la même chose arrive avec facebook) ...Le serveur Whois ne retourne pas les résultats?

mon devoir j'ai réussi à l'obtenir pour renvoyer une liste de tous les résultats (en supprimant la section du script qui ajoute le domaine "=". $ requis à la variable de domaine.)

Ensuite, tous les résultats ont été retournés, et J'ai appris que le script ramassait le serveur Whois de le premier résultat (qui est un google.com.with.added.spam.com) et donc "google.com" ne peut pas être trouvé sur le même serveur whois que "google.com.with.added.spam.com" donc il revient en blanc.

à la fixer, je l'ai tout essayé de renverser le tableau preg_match_all (pour saisir le dernier serveur whois) pour éditer toutes les variables que je peux penser ..

Toute aide serait grandement appréciée.

Merci d'avance !!!

Et maintenant le code:

<?php 

$domain = $_GET['domain']; 

// For the full list of TLDs/Whois servers see http://www.iana.org/domains/root/db/ and http://www.whois365.com/en/listtld/ 
$whoisservers = array(
    "ac" =>"whois.nic.ac", 
    "ae" =>"whois.nic.ae", 
    "aero"=>"whois.aero", 
    "af" =>"whois.nic.af", 
    "ag" =>"whois.nic.ag", 
    "al" =>"whois.ripe.net", 
    "am" =>"whois.amnic.net", 
    "arpa" =>"whois.iana.org", 
    "as" =>"whois.nic.as", 
    "asia" =>"whois.nic.asia", 
    "at" =>"whois.nic.at", 
    "au" =>"whois.aunic.net", 
    "az" =>"whois.ripe.net", 
    "ba" =>"whois.ripe.net", 
    "be" =>"whois.dns.be", 
    "bg" =>"whois.register.bg", 
    "bi" =>"whois.nic.bi", 
    "biz" =>"whois.biz", 
    "bj" =>"whois.nic.bj", 
    "br" =>"whois.registro.br", 
    "bt" =>"whois.netnames.net", 
    "by" =>"whois.ripe.net", 
    "bz" =>"whois.belizenic.bz", 
    "ca" =>"whois.cira.ca", 
    "cat" =>"whois.cat", 
    "cc" =>"whois.nic.cc", 
    "cd" =>"whois.nic.cd", 
    "ch" =>"whois.nic.ch", 
    "ci" =>"whois.nic.ci", 
    "ck" =>"whois.nic.ck", 
    "cl" =>"whois.nic.cl", 
    "cn" =>"whois.cnnic.net.cn", 
    "com" =>"whois.verisign-grs.com", 
    "coop" =>"whois.nic.coop", 
    "cx" =>"whois.nic.cx", 
    "cy" =>"whois.ripe.net", 
    "cz" =>"whois.nic.cz", 
    "de" =>"whois.denic.de", 
    "dk" =>"whois.dk-hostmaster.dk", 
    "dm" =>"whois.nic.cx", 
    "dz" =>"whois.ripe.net", 
    "edu" =>"whois.educause.edu", 
    "ee" =>"whois.eenet.ee", 
    "eg" =>"whois.ripe.net", 
    "es" =>"whois.ripe.net", 
    "eu" =>"whois.eu", 
    "fi" =>"whois.ficora.fi", 
    "fo" =>"whois.ripe.net", 
    "fr" =>"whois.nic.fr", 
    "gb" =>"whois.ripe.net", 
    "gd" =>"whois.adamsnames.com", 
    "ge" =>"whois.ripe.net", 
    "gg" =>"whois.channelisles.net", 
    "gi" =>"whois2.afilias-grs.net", 
    "gl" =>"whois.ripe.net", 
    "gm" =>"whois.ripe.net", 
    "gov" =>"whois.nic.gov", 
    "gr" =>"whois.ripe.net", 
    "gs" =>"whois.nic.gs", 
    "gw" =>"whois.nic.gw", 
    "gy" =>"whois.registry.gy", 
    "hk" =>"whois.hkirc.hk", 
    "hm" =>"whois.registry.hm", 
    "hn" =>"whois2.afilias-grs.net", 
    "hr" =>"whois.ripe.net", 
    "hu" =>"whois.nic.hu", 
    "ie" =>"whois.domainregistry.ie", 
    "il" =>"whois.isoc.org.il", 
    "in" =>"whois.inregistry.net", 
    "info" =>"whois.afilias.net", 
    "int" =>"whois.iana.org", 
    "io" =>"whois.nic.io", 
    "iq" =>"vrx.net", 
    "ir" =>"whois.nic.ir", 
    "is" =>"whois.isnic.is", 
    "it" =>"whois.nic.it", 
    "je" =>"whois.channelisles.net", 
    "jobs" =>"jobswhois.verisign-grs.com", 
    "jp" =>"whois.jprs.jp", 
    "ke" =>"whois.kenic.or.ke", 
    "kg" =>"www.domain.kg", 
    "ki" =>"whois.nic.ki", 
    "kr" =>"whois.nic.or.kr", 
    "kz" =>"whois.nic.kz", 
    "la" =>"whois.nic.la", 
    "li" =>"whois.nic.li", 
    "lt" =>"whois.domreg.lt", 
    "lu" =>"whois.dns.lu", 
    "lv" =>"whois.nic.lv", 
    "ly" =>"whois.nic.ly", 
    "ma" =>"whois.iam.net.ma", 
    "mc" =>"whois.ripe.net", 
    "md" =>"whois.ripe.net", 
    "me" =>"whois.meregistry.net", 
    "mg" =>"whois.nic.mg", 
    "mil" =>"whois.nic.mil", 
    "mn" =>"whois.nic.mn", 
    "mobi" =>"whois.dotmobiregistry.net", 
    "ms" =>"whois.adamsnames.tc", 
    "mt" =>"whois.ripe.net", 
    "mu" =>"whois.nic.mu", 
    "museum" =>"whois.museum", 
    "mx" =>"whois.nic.mx", 
    "my" =>"whois.mynic.net.my", 
    "na" =>"whois.na-nic.com.na", 
    "name" =>"whois.nic.name", 
    "net" =>"whois.verisign-grs.net", 
    "nf" =>"whois.nic.nf", 
    "nl" =>"whois.domain-registry.nl", 
    "no" =>"whois.norid.no", 
    "nu" =>"whois.nic.nu", 
    "nz" =>"whois.srs.net.nz", 
    "org" =>"whois.pir.org", 
    "pl" =>"whois.dns.pl", 
    "pm" =>"whois.nic.pm", 
    "pr" =>"whois.uprr.pr", 
    "pro" =>"whois.registrypro.pro", 
    "pt" =>"whois.dns.pt", 
    "re" =>"whois.nic.re", 
    "ro" =>"whois.rotld.ro", 
    "ru" =>"whois.ripn.net", 
    "sa" =>"whois.nic.net.sa", 
    "sb" =>"whois.nic.net.sb", 
    "sc" =>"whois2.afilias-grs.net", 
    "se" =>"whois.iis.se", 
    "sg" =>"whois.nic.net.sg", 
    "sh" =>"whois.nic.sh", 
    "si" =>"whois.arnes.si", 
    "sk" =>"whois.ripe.net", 
    "sm" =>"whois.ripe.net", 
    "st" =>"whois.nic.st", 
    "su" =>"whois.ripn.net", 
    "tc" =>"whois.adamsnames.tc", 
    "tel" =>"whois.nic.tel", 
    "tf" =>"whois.nic.tf", 
    "th" =>"whois.thnic.net", 
    "tj" =>"whois.nic.tj", 
    "tk" =>"whois.dot.tk", 
    "tl" =>"whois.nic.tl", 
    "tm" =>"whois.nic.tm", 
    "tn" =>"whois.ripe.net", 
    "to" =>"whois.tonic.to", 
    "tp" =>"whois.nic.tl", 
    "tr" =>"whois.nic.tr", 
    "travel" =>"whois.nic.travel", 
    "tv" => "tvwhois.verisign-grs.com", 
    "tw" =>"whois.twnic.net.tw", 
    "ua" =>"whois.net.ua", 
    "ug" =>"whois.co.ug", 
    "uk" =>"whois.nic.uk", 
    "us" =>"whois.nic.us", 
    "uy" =>"nic.uy", 
    "uz" =>"whois.cctld.uz", 
    "va" =>"whois.ripe.net", 
    "vc" =>"whois2.afilias-grs.net", 
    "ve" =>"whois.nic.ve", 
    "vg" =>"whois.adamsnames.tc", 
    "wf" =>"whois.nic.wf", 
    "ws" =>"whois.website.ws", 
    "yt" =>"whois.nic.yt", 
    "yu" =>"whois.ripe.net"); 

function LookupDomain($domain){ 
    global $whoisservers; 
    $domain_parts = explode(".", $domain); 
    $tld = strtolower(array_pop($domain_parts)); 
    $whoisserver = $whoisservers[$tld]; 
    if(!$whoisserver) { 
     return "Error: No appropriate Whois server found for $domain domain!"; 
    } 
    $result = QueryWhoisServer($whoisserver, $domain); 
    if(!$result) { 
     return "Error: No results retrieved from $whoisserver server for $domain domain!"; 
    } 
    else { 
     while(strpos($result, "Whois Server:") !== FALSE){ 
      preg_match("/Whois Server: (.*)/", $result, $matches); 
      $secondary = $matches[1]; 
      if($secondary) { 
       $result = QueryWhoisServer($secondary, $domain); 
       $whoisserver = $secondary; 
      } 
     } 
    } 
    return "$domain domain lookup results from $whoisserver server:\n\n" . $result; 
} 

function LookupIP($ip) { 
    $whoisservers = array(
     //"whois.afrinic.net", // Africa - returns timeout error :-(
     "whois.lacnic.net", // Latin America and Caribbean - returns data for ALL locations worldwide :-) 
     "whois.apnic.net", // Asia/Pacific only 
     "whois.arin.net", // North America only 
     "whois.ripe.net" // Europe, Middle East and Central Asia only 
    ); 
    $results = array(); 
    foreach($whoisservers as $whoisserver) { 
     $result = QueryWhoisServer($whoisserver, $ip); 
     if($result && !in_array($result, $results)) { 
      $results[$whoisserver]= $result; 
     } 
    } 
    $res = "RESULTS FOUND: " . count($results); 
    foreach($results as $whoisserver=>$result) { 
     $res .= "\n\n-------------\nLookup results for $ip from $whoisserver server:\n\n$result"; 
    } 
    return $res; 
} 

function ValidateIP($ip) { 
    $ipnums = explode(".", $ip); 
    if(count($ipnums) != 4) { 
     return false; 
    } 
    foreach($ipnums as $ipnum) { 
     if(!is_numeric($ipnum) || ($ipnum > 255)) { 
      return false; 
     } 
    } 
    return $ip; 
} 

function ValidateDomain($domain) { 
    if(!preg_match("/^([-a-z0-9]{2,100})\.([a-z\.]{2,8})$/i", $domain)) { 
     return false; 
    } 
    return $domain; 
} 

function QueryWhoisServer($whoisserver, $domain) { 
    $port = 43; 
    $timeout = 10; 
    $fp = @fsockopen($whoisserver, $port, $errno, $errstr, $timeout) or die("Socket Error " . $errno . " - " . $errstr); 
    if($whoisserver == "whois.verisign-grs.com") $domain = "=".$domain; // whois.verisign-grs.com requires the equals sign ("=") or it returns any result containing the searched string. 
    fputs($fp, $domain . "\r\n"); 
    $out = ""; 
    while(!feof($fp)){ 
     $out .= fgets($fp); 
    } 
    fclose($fp); 

    $res = ""; 
    if((strpos(strtolower($out), "error") === FALSE) && (strpos(strtolower($out), "not allocated") === FALSE)) { 
     $rows = explode("\n", $out); 
     foreach($rows as $row) { 
      $row = trim($row); 
      if(($row != '') && ($row{0} != '#') && ($row{0} != '%')) { 
       $res .= $row."\n"; 
      } 
     } 
    } 
    return $res; 
} 
?> 
<html> 
<head> 
<title>Whois Lookup Script</title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
</head> 

<body> 
<form action="<?=$_SERVER['PHP_SELF'];?>"> 
<p><b><label for="domain">Domain/IP Address:</label></b> <input type="text" name="domain" id="domain" value="<?=$domain;?>"> <input type="submit" value="Lookup"></p> 
</form> 
<? 
if($domain) { 
    $domain = trim($domain); 
    if(substr(strtolower($domain), 0, 7) == "http://") $domain = substr($domain, 7); 
    if(substr(strtolower($domain), 0, 4) == "www.") $domain = substr($domain, 4); 
    if(ValidateIP($domain)) { 
     $result = LookupIP($domain); 
    } 
    elseif(ValidateDomain($domain)) { 
     $result = LookupDomain($domain); 
    } 
    else die("Invalid Input!"); 
    echo "<pre>\n" . $result . "\n</pre>\n"; 
} 
?> 
</body> 
</html> 

Répondre

1

changer le serveur .com à "whois.crsnic.net" et il devrait fonctionner

3

Lorsque vous essayez d'envoyer le domaine (Par exemple: google .com) à votre script à partir du formulaire, au lieu de l'envoyer en tant que 'google.com' ajoutez le mot 'domaine' ie (domaine google.com). Cela permet au serveur whois de trouver ce domaine (par exemple, google.com) et pas tout autre domaine contenant le mot google. Donc, dans la fonction "LookupDomain ($ domain)" assurez-vous que la valeur de $ domain doit être 'domain google.com' pour que le résultat soit correct.

1

Ce script ne fonctionne pas encore. afin que vous puissiez essayer le code suivant

<?php function whois_query($domain) 
{ 

// fix the domain name: 
$domain = strtolower(trim($domain)); 
$domain = preg_replace('/^http:\/\//i', '', $domain); 
$domain = preg_replace('/^www\./i', '', $domain); 
$domain = explode('/', $domain); 
$domain = trim($domain[0]); 

// split the TLD from domain name 
$_domain = explode('.', $domain); 
$lst = count($_domain)-1; 
$ext = $_domain[$lst]; 

// the list of whois servers 
// most taken from www.iana.org/domains/root/db/ 
$servers = array(
    "biz" => "whois.neulevel.biz", 
    "com" => "whois.internic.net", 
    "us" => "whois.nic.us", 
    "coop" => "whois.nic.coop", 
    "info" => "whois.nic.info", 
    "name" => "whois.nic.name", 
    "net" => "whois.internic.net", 
    "gov" => "whois.nic.gov", 
    "edu" => "whois.internic.net", 
    "mil" => "rs.internic.net", 
    "int" => "whois.iana.org", 
    "ac" => "whois.nic.ac", 
    "ae" => "whois.uaenic.ae", 
    "at" => "whois.ripe.net", 
    "au" => "whois.aunic.net", 
    "be" => "whois.dns.be", 
    "bg" => "whois.ripe.net", 
    "br" => "whois.registro.br", 
    "bz" => "whois.belizenic.bz", 
    "ca" => "whois.cira.ca", 
    "cc" => "whois.nic.cc", 
    "ch" => "whois.nic.ch", 
    "cl" => "whois.nic.cl", 
    "cn" => "whois.cnnic.net.cn", 
    "cz" => "whois.nic.cz", 
    "de" => "whois.nic.de", 
    "fr" => "whois.nic.fr", 
    "hu" => "whois.nic.hu", 
    "ie" => "whois.domainregistry.ie", 
    "il" => "whois.isoc.org.il", 
    "in" => "whois.ncst.ernet.in", 
    "ir" => "whois.nic.ir", 
    "mc" => "whois.ripe.net", 
    "to" => "whois.tonic.to", 
    "tv" => "whois.tv", 
    "ru" => "whois.ripn.net", 
    "org" => "whois.pir.org", 
    "aero" => "whois.information.aero", 
    "nl" => "whois.domain-registry.nl", 
    "uk" => "whois.nic.uk", 
    "us" => "whois.nic.us", 
    "travel" => "whois.nic.travel", 
    "gov" => "whois.dotgov.gov", 
    "it" => "whois.nic.it" 
); 

if (!isset($servers[$ext])) { 
    die('Error: No matching whois server found!'); 
} 

$nic_server = $servers[$ext]; 

$output = ''; 

// connect to whois server: 
if ($conn = fsockopen($nic_server, 43)) { 
    fwrite($conn, $domain."\r\n"); 
    while (!feof($conn)) { 
    $output .= fgets($conn, 128); 
    } 
    fclose($conn); 
} else { 
    die('Error: Could not connect to ' . $nic_server . '!'); 
} 
return $output; 
} 
echo '<pre>'.whois_query('google.com').'</pre>'; 
?>