你可以通过以下三种方式实现“免费且开源”的 Whois 查询:
方案一:使用 RDAP 协议(最推荐,官方,返回 JSON)
点击查看全文
这是 Whois 的下一代继任者,由 ICANN 推广。优点:
原生返回 JSON:不需要复杂的正则去解析文本。
官方免费:直接向注册局(如 Verisign, CNNIC)查询。
标准化:基于 HTTP/HTTPS,不再需要开启 43 端口。
PHP 实现代码:
RDAP 的逻辑是:先问 IANA 这个域名归谁管,然后重定向到具体的注册局拿到 JSON 数据。
<?php
function getDomainRdap($domain) {
// 1. 获取顶级域名 (如 com, cn)
$parts = explode('.', $domain);
$tld = end($parts);
// 2. IANA 的引导服务器地址
// 实际生产中建议缓存这个 bootstrap 列表,不要每次都请求 IANA
$bootstrapUrl = 'https://rdap.org/domain/' . $domain;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $bootstrapUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // 关键:RDAP 会重定向到具体注册局
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 PHP RDAP Client');
// 忽略 SSL 错误 (部分老旧注册局证书可能有问题)
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode == 200) {
return json_decode($response, true);
} else {
return ['error' => '查询失败或域名不存在', 'code' => $httpCode];
}
}
// 使用
$info = getDomainRdap('baidu.com');
// 打印注册商信息
echo "注册商: " . ($info['entities'][0]['vcardArray'][1][1][3] ?? '未知') . "\n";
// 打印状态
echo "状态: " . ($info['status'][0] ?? '未知');
?> 方案二:使用 PHP 开源库(本地直连 Port 43)
这是传统的 Whois 方式。你的服务器直接连接全球各地的 Whois 服务器(端口 43)。优点:完全免费,自己就是 API。缺点:返回的是纯文本,需要解析;如果你查得太快,你的服务器 IP 会被注册局暂时封禁。
你可以使用 GitHub 上最流行的 PHP 库:php-whois
安装:
composer require io-developer/php-whois
代码:
<?php
require 'vendor/autoload.php';
use Iodev\Whois\Factory;
// 创建实例
$whois = Factory::get()->createWhois();
// 查询
$info = $whois->loadDomainInfo("baidu.com");
if ($info) {
echo "创建日期: " . date("Y-m-d", $info->creationDate) . "\n";
echo "过期日期: " . date("Y-m-d", $info->expirationDate) . "\n";
echo "注册商: " . $info->registrar . "\n";
} else {
echo "域名可用或查询失败";
}
?> 方案三:第三方提供的免费层级 API(省心,但有额度)
如果你不想自己处理代码逻辑,可以使用第三方服务。虽然不是“开源”的,但只要额度够用也算是免费。
1. Ip2Whois (免费 500 次/月)
特点:数据非常结构化,支持 JSON。
网址:https://www.ip2whois.com/developers
2. WhoisXML API (免费 500 次/月)
特点:业界最老牌,数据最全。
网址:https://whois.whoisxmlapi.com/
总结建议
如果你是自己写工具:强烈建议使用 方案一 (RDAP)。这是未来的标准,完全免费且返回 JSON,不需要依赖第三方库,也不容易被封 IP(因为是 HTTP 请求)。
如果你需要查非主流后缀:部分冷门后缀不支持 RDAP,这时使用 方案二 (php-whois) 作为补充。
注意隐私保护:无论你用哪个 API,由于 GDPR 法规,现在所有合规的 Whois 查询都看不到域名所有者的邮箱、电话和姓名(除非是企业认证域名)。这一点是全球统一的,并非 API 的问题。
网友回复
有没有免费让ai自动帮你接管操作电脑的mcp服务?
mcp为啥用Streamable HTTP 替代 HTTP + SSE?
scratchjr有没有开源的前端html网页版本源代码?
多模态大模型能否根据ui交互视频来来模仿写出前端交互动画效果ui代码?
如何用阿里云oss+函数计算fc+事件总线EventBridge+消息队列+数据库+redis缓存打造一个高并发弹性系统?
阿里云函数计算 FC如何在海外节点搭建一个代理网络?
ai studio中gemini build的代码如何发布到github pages等免费网页托管上 ?
如何在cursor、qoder、trae中使用Claude Skills功能?
有没有不用u盘就能重装系统的开源工具?
python如何固定摄像头实时计算停车场停车位剩余数量?


