2009-02-17 13 views
5

Non ho whois installato sul mio server (apparentemente è in lavorazione ma non ci sono notizie vere su di esso). Mi chiedevo se qualcuno conoscesse comunque un modo per emularne la funzionalità. Ho pensato di postare alcuni dati in un URL ma non so cosa, o dove.C'è un modo per emulare lo strumento 'whois' usando php?

Fondamentalmente sono a una perdita completa e apprezzerei qualsiasi aiuto o anche qualcosa che potessi esaminare.

risposta

5

È possibile utilizzare PHP Whois API. Questo ti permetterà di accedere a tutti i record whois. Per utilizzare questa funzione, nella parte inferiore di questa pagina c'è un collegamento a a class. Assicurati di includere anche quello.

+0

Il proprietario del sito ha rimosso la 'classe'. –

+0

Aggiornato per includere una nuova classe. – Sam152

+0

http://www.nott.org/uploads/whois.class.php.txt è un 404 –

1

Here's one I've written qualche tempo fa utilizzando un trucco semplice (senza elencare tutti i server whois). L'ho convertito da Perl, ed è anche in C# e anche un oggetto COM.

Non esegue tutte le ricerche whois poiché alcuni registar del dominio sono avidi * &! $ E vogliono che paghiate per la ricerca, o mantenetelo privato. Ci sono dettagli a riguardo nella pagina.

Aggiornamento
Ecco il codice per il download. L'ho scritto in PHP 3.x quindi potrebbe essere necessario un po 'di massaggio per PHP5:

class Whois 
{ 
    /* 
    * Optional parameter for the server to be used for the lookup. 
    * If this is not set, an appropriate whois server for the domain name 
    * specified is automagically found by the Whois class. 
    * @type string 
    * @access public 
    */ 
    var $whois_server; 
    /* 
    * The timeout, in seconds, for the lookup. Default is 30. 
    * @type integer 
    * @access public 
    */ 
    var $timeout = 30; 

    /* 
    * Returns a string, with new-lines (\n) converted to non-breaking spaces (<BR>), 
    * with details for the domain specified by $domain. 
    * @access public 
    * @param string $domain the domain to lookup, excluding http:// and www 
    * @return string the results of the whois 
    */ 
    function lookup($domain) 
    { 
     $result = ""; 
     $parts = array(); 
     $host = ""; 

     // .tv don't allow access to their whois 
     if (strstr($domain,".tv")) 
     { 
      $result = "'.tv' domain names require you to have an account to do whois searches."; 
     // New domains fix (half work, half don't) 
     } elseif (strstr($domain,".name") || strstr($domain,".pro") >0){ 
      $result = ".name,.pro require you to have an account to do whois searches."; 
     } else{ 
      if (empty($this->whois_server)) 
      { 
       $parts = explode(".",$domain); 
       $testhost = $parts[sizeof($parts)-1]; 
       $whoisserver = $testhost . ".whois-servers.net"; 
       $this->host  = gethostbyname($whoisserver); 
       $this->host  = gethostbyaddr($this->host); 

       if ($this->host == $testhost) 
       { 
        $this->host = "whois.internic.net"; 
       } 
       flush(); 
      } 
      $whoisSocket = fsockopen($this->host,43, $errno, $errstr, $this->timeout); 

      if ($whoisSocket) 
      { 
       fputs($whoisSocket, $domain."\015\012"); 
       while (!feof($whoisSocket)) 
       { 
        $result .= fgets($whoisSocket,128) . "<br>"; 
       } 
       fclose($whoisSocket); 
      } 
     } 
     return $result; 
    } 
} 

Esempio di utilizzo

$whois = new Whois(); 
echo "<B>compaq.it</B><BR>"; 
echo $whois->lookup("compaq.it"); 
echo "<HR>"; 
+0

L'host a cui ci si collega non esiste più. –

+0

@ Majid - risolto il collegamento –

2

È possibile tentare di eseguire sul proprio sistema, per esempio supponendo che si sta utilizzando Linux e si è/usr/bin/lib whois installato allora è possibile eseguire PHP utilizzando l'exec php

<?php exec("/usr/bin/whois $strDomain",$arrOutPut);?> 

Questo funziona solo se PHP è permesso di utilizzare la funzione exec sul server e assicurati di convalidare gli argomenti passati al comando ... può risultare orribile per la macchina.

In alternativa si può provare a utilizzare un'API

  1. http://www.nott.org/blog/php-whois-script.html
  2. http://www.tevine.com/projects/whois/
+0

Questo è il peggior consiglio da dare. Non sborsare solo per eseguire un semplice comando whois. Utilizzare le librerie PHP disponibili per le query whois o semplicemente aprire un socket TCP sulla porta 43 e leggere RFC3912 –

0

Dai un'occhiata a RFC3912, definisce il protocollo whois. Fondamentalmente è sufficiente aprire un socket TCP sulla porta 43, inviare la richiesta su una riga terminata da CR + LF e rileggere un blob di testo dal server.

Lo standard (purtroppo) non definisce il formato della query, né la risposta, né come trovare il server whois appropriato da interrogare in base a ciò che è necessario fare.

Si prega di dare un'occhiata a questa altra risposta di me per maggiori dettagli: https://unix.stackexchange.com/a/407030/211833

Problemi correlati