【问题标题】:Getting domain information from url using PHP/Python使用 PHP/Python 从 url 获取域信息
【发布时间】:2014-04-28 13:38:47
【问题描述】:

如何使用 PHP 或 Python 代码获取有关域名的信息(例如所有者或服务器详细信息)?我想避免使用任何第三方网站。

这可能吗?

【问题讨论】:

  • 仅排除第 3 方网络工具吗? whois db、DNS 根据定义是第三方服务。在不使用第三方库的情况下,对服务器详细信息进行指纹识别是一个很难自行解决的问题。

标签: php python web dns


【解决方案1】:

其实现在之前的答案是错误的,urlparse 改成urllib.parse,所以会是:

import requests
import urllib.parse
import whois
url = 'http://docs.python.org/3/'
requests.head(url).headers['server']
'Apache/2.2.22 (Debian)'
hostname = urllib.parse.urlparse(url).netloc
print (whois.whois(hostname))

【讨论】:

    【解决方案2】:

    您可以基于以下 whois 脚本:http://www.phpeasycode.com/whois/

    Here's an online demo.

    脚本首先检查正确的 whois 服务器,然后在端口 43 上打开一个套接字。这是基于上面演示代码的简化查询函数。

    每个 TLD 都有自己的 whois 服务器。您可以在此处找到完整列表:http://www.iana.org/domains/root/db/http://www.whois365.com/en/listtld/

    <?php
    $whoisserver = "whois.pir.org";
    $domain = "example.org";
    $port = 43;
    $timeout = 10;
    $fp = @fsockopen($whoisserver, $port, $errno, $errstr, $timeout) or die("Socket Error " . $errno . " - " . $errstr);
    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";
            }
        }
    }
    print $res;
    

    【讨论】:

    • Just a link?... 你错过了一个真正回答的机会。 OP 是从 url 到域和服务器详细信息。不费吹灰之力,您就可以展示 PHP 在从 url 解析主机名方面的出色表现,并开始调查服务器详细信息。
    • 谢谢,我不想直接链接到下载以感谢作者。
    • 对不起,我今天在热身。我将编辑问题以包含一些关于脚本如何工作的信息。
    • 回答问题很好。链接很棒。在信用到期时给予信用,甚至更好。我并不是说您应该在答案中写一本书或整个脚本。但是网络上已经到处都是论坛,其中包含已腐烂的简短 First Post 链接。只需一点点额外的努力,您就会拥有一些经得起时间考验的东西。
    【解决方案3】:

    首先让您的生活更轻松:

    pip install python-whois
    pip install requests
    

    然后执行以下操作:

    >>> import requests
    >>> import urlparse
    >>> import whois
    >>> url = 'http://docs.python.org/3/'
    >>> requests.head(url).headers['server']
    'Apache/2.2.22 (Debian)'
    >>> hostname = urlparse.urlparse(url).netloc
    >>> print whois.whois(hostname)
    creation_date: 1995-03-27 05:00:00
    domain_name: PYTHON.ORG
    emails: ['e89d6901ba3e470e8cedc3eaa32a0074-1697561@contact.gandi.net', 'e89d6901ba3e470e8cedc3eaa32a0074-1697561@contact.gandi.net', 'infrastructure-staff@python.org']
    expiration_date: []
    name_servers: ['NS3.P11.DYNECT.NET', 'NS1.P11.DYNECT.NET', 'NS2.P11.DYNECT.NET', 'NS4.P11.DYNECT.NET', '', '', '', '', '', '', '', '', '']
    referral_url: 
    registrar: Gandi SAS (R42-LROR)
    status: clientTransferProhibited
    updated_date: 2013-08-15 00:20:19
    whois_server: 
    >>> 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-01
      • 2011-10-19
      • 1970-01-01
      • 1970-01-01
      • 2011-01-15
      • 2017-05-07
      • 1970-01-01
      相关资源
      最近更新 更多