You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP域名Whois脚本无法返回联系人信息的技术求助

搞定PHP Whois函数拿不到联系人信息的问题

我懂你遇到的麻烦了——自己写的PHP函数能正常运行,但就是拿不到行政、注册人、技术联系人这些关键信息,可终端敲whois google.com却能拿到全量数据。其实核心问题出在你的PHP函数只做了单次Whois服务器查询,而终端的whois命令会自动帮你做递归查询。

为啥会有这差异?

很多顶级域(比如.com、.net)的根Whois服务器(比如Verisign的服务器)只会返回域名的基础注册信息,然后告诉你得去对应的注册商Whois服务器查详细内容。终端的whois工具会自动识别返回结果里的Registrar WHOIS Server字段,接着自动去查那个服务器;但你的PHP函数只查了第一台服务器,自然拿不到联系人信息。

另外,部分Whois服务器会对脚本类的非交互式请求返回简化数据,这也是一个可能的因素。

改造你的PHP函数,支持递归查询

下面是修改后的函数,它会自动跟进注册商的Whois服务器,直到拿到完整信息:

function QueryWhoisServer($whoisserver, $domain, $depth = 0) {
    // 防止无限递归,限制最大查询深度
    if ($depth > 3) {
        return "Maximum recursion depth reached";
    }
    
    $port = 43;
    $timeout = 10;
    $fp = @fsockopen($whoisserver, $port, $errno, $errstr, $timeout);
    
    if (!$fp) {
        return "连接出错: $errno - $errstr";
    }
    
    // Whois协议要求查询末尾必须加换行,有些服务器可能需要特定前缀,比如"domain "
    fputs($fp, $domain . "\r\n");
    $response = '';
    
    while (!feof($fp)) {
        $response .= fgets($fp);
    }
    fclose($fp);
    
    // 检查是否存在注册商的Whois服务器地址,有的话递归查询
    if (preg_match('/Registrar WHOIS Server: (.*)/i', $response, $matches)) {
        $registrarWhois = trim($matches[1]);
        if (!empty($registrarWhois) && $registrarWhois !== $whoisserver) {
            $response .= "\n--- 注册商Whois数据 ---\n";
            $response .= QueryWhoisServer($registrarWhois, $domain, $depth + 1);
        }
    }
    
    return $response;
}

// 使用示例:查询google.com,先从IANA根服务器开始
$domain = 'google.com';
$result = QueryWhoisServer('whois.iana.org', $domain);
echo nl2br($result);

额外小提示

  • 调整查询格式:如果发现返回结果不对,试试把发送的请求改成"domain " . $domain . "\r\n",有些服务器需要这个前缀。
  • 加个User-Agent:部分服务器会拒绝无标识的脚本请求,你可以在发送查询前加一行fputs($fp, "User-Agent: MyCustomWhois/1.0\r\n");,模拟终端请求。
  • 错误处理优化:可以给函数加重试逻辑,或者处理不同服务器的响应格式差异,毕竟不同注册商的Whois返回格式可能不一样。

这样改完之后,你的PHP函数就能像终端命令一样,拿到包含所有联系人信息的完整Whois数据了。

内容的提问来源于stack exchange,提问作者Anakbhai Gida

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 10:05:43