2009-02-17 36 views
5

Tôi không có whois được cài đặt trên máy chủ của tôi (dường như nó đang hoạt động nhưng không có tin tức thực sự về nó). Tôi đã tự hỏi nếu có ai biết một cách để mô phỏng các chức năng của nó mặc dù. Tôi nghĩ tôi sẽ đăng một số dữ liệu lên url nhưng tôi không biết cái gì, hoặc ở đâu.Có cách nào để mô phỏng công cụ 'whois' bằng cách sử dụng php không?

Về cơ bản, tôi đang thua lỗ hoàn toàn và sẽ đánh giá cao mọi trợ giúp hoặc thậm chí là điều gì đó mà tôi có thể xem xét.

Trả lời

5

Bạn có thể sử dụng PHP Whois API. Điều này sẽ cho phép bạn truy cập vào tất cả các bản ghi whois. Để sử dụng chức năng đó, có một liên kết ở cuối trang đó đến a class. Hãy chắc chắn rằng bạn bao gồm quá.

+0

Chủ sở hữu trang web đã xóa 'lớp'. –

+0

Cập nhật nó để bao gồm một lớp mới hơn. – Sam152

+0

http://www.nott.org/uploads/whois.class.php.txt là 404 –

1

Here's one I've written một lúc trước bằng cách sử dụng một mẹo đơn giản (không liệt kê tất cả các máy chủ whois). Tôi chuyển đổi nó từ Perl, và nó cũng trong C# và một đối tượng COM quá.

Nó không thực hiện tất cả tra cứu whois vì một số đăng ký tên miền tham lam * &! $ Và muốn bạn thanh toán cho tra cứu hoặc giữ riêng tư. Có chi tiết về nó trên trang.

Cập nhật
Đây là mã để bạn tải xuống. Tôi đã viết nó sử dụng PHP 3.x vì vậy một số massage cho PHP5 thể là cần thiết:

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

sử dụng Ví dụ

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

Máy chủ lưu trữ mà bạn đang liên kết không tồn tại nữa. –

+0

@Majid - sửa liên kết –

2

Bạn có thể cố gắng để chạy nó trên hệ thống của bạn, ví dụ giả sử bạn đang sử dụng Linux và bạn đã cài đặt/usr/bin/lib whois sau đó bạn có thể chạy php sử dụng exec php

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

này sẽ chỉ làm việc nếu php được phép sử dụng chức năng exec trên máy chủ của bạn và đảm bảo xác nhận các đối số được truyền cho lệnh ... có thể kết thúc xấu xí cho máy.

Hoặc bạn có thể thử sử dụng một API

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

Đây là lời khuyên tồi tệ nhất để đưa ra. Không được mở ra chỉ để chạy một lệnh whois đơn giản. Sử dụng các thư viện PHP có sẵn cho các truy vấn whois hoặc chỉ cần mở một cổng TCP trên cổng 43 và đọc RFC3912 –

1

Bạn cũng có thể sử dụng các Net_Whois pear package cho việc này.

Tuyên bố từ chối trách nhiệm: Tôi là người duy trì gói này.

0

Hãy xem RFC3912, nó xác định giao thức whois. Về cơ bản bạn chỉ cần mở một cổng TCP trên cổng 43, gửi yêu cầu của bạn trên một dòng chấm dứt bởi CR + LF và đọc lại một blob văn bản từ máy chủ.

Chuẩn (không may) không xác định định dạng của truy vấn cũng như cách trả lời cũng như cách tìm máy chủ whois thích hợp để truy vấn dựa trên những gì bạn cần làm.

Vui lòng xem trả lời khác của tôi để biết thêm chi tiết: https://unix.stackexchange.com/a/407030/211833

Các vấn đề liên quan