2009-02-17 5 views
5

Ich habe nicht Whois auf meinem Server installiert (anscheinend ist es in Arbeit, aber keine wirklichen Nachrichten darüber). Ich habe mich gefragt, ob irgendjemand einen Weg kannte, die Funktionalität zu emulieren. Ich dachte, ich würde einige Daten in eine URL posten, aber ich weiß nicht, was oder wo.Gibt es eine Möglichkeit, das Whois-Tool mit PHP zu emulieren?

Grundsätzlich bin ich bei einem vollständigen Verlust, und würde jede Hilfe oder sogar etwas, das ich untersuchen könnte, schätzen.

Antwort

5

Sie können die PHP Whois API verwenden. Dies ermöglicht Ihnen den Zugriff auf alle Whois-Datensätze. Um diese Funktion zu verwenden, gibt es einen Link am Ende dieser Seite zu a class. Stellen Sie sicher, dass Sie auch das hinzufügen.

+0

Der Inhaber der Website der ‚Klasse‘ entfernt hat. –

+0

Es wurde aktualisiert, um eine neuere Klasse zu enthalten. – Sam152

+0

http://www.nott.org/uploads/whois.class.php.txt ist ein 404 –

1

Here's one I've written vor einer Weile mit einem einfachen Trick (ohne Auflistung aller Whois-Server). Ich habe es von Perl konvertiert und es ist auch in C# und einem COM-Objekt.

Es tut nicht alle Whois-Lookups wie einige der Domain-Registrare sind gierig * &! $ Und wollen Sie für die Suche bezahlen, oder halten Sie es privat. Es gibt Details darüber auf der Seite.

Aktualisieren
Hier ist der Code zum Speichern Sie herunterladen. Ich schrieb es PHP 3.x so könnten einige Massieren für PHP5 erforderlich:

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; 
    } 
} 

Anwendungsbeispiel

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

Der Host, zu dem Sie verlinken, existiert nicht mehr. –

+0

@Majid - hat den Link –

2

Sie können versuchen, es auf Ihrem System laufen zu lassen, zum Beispiel vorausgesetzt, Sie Linux verwenden und das Verzeichnis/usr/bin/whois lib installiert haben, dann können Sie PHP mit dem php exec

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

Dies funktioniert nur ausgeführt werden, wenn PHP die exec-Funktion auf Ihrem Server verwenden darf und Stellen Sie sicher, dass die Argumente validiert werden, die an den Befehl übergeben werden ... kann für den Rechner hässlich sein.

Alternativ können Sie versuchen, eine API

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

Dies ist der schlechteste Rat zu geben. Schalte nicht aus, nur um einen einfachen Whois-Befehl auszuführen. Verwenden Sie die für whois-Abfragen verfügbaren PHP-Bibliotheken oder öffnen Sie einfach einen TCP-Socket an Port 43 und lesen Sie RFC3912 –

0

Werfen Sie einen Blick auf RFC3912, definiert das whois Protokoll. Im Grunde müssen Sie lediglich einen TCP-Socket auf Port 43 öffnen, Ihre Anfrage in einer Zeile mit CR + LF senden und einen Textblock vom Server zurücklesen.

Der Standard definiert (leider) weder das Format der Abfrage, noch der Antwort, noch wie der passende Whois-Server zu finden ist, basierend auf dem, was Sie tun müssen.

haben Sie einen Blick auf diese andere Antwort von mir für weitere Informationen: https://unix.stackexchange.com/a/407030/211833

Verwandte Themen