PHP实现域名WHOIS查询功能示例
本文介绍了如何使用PHP语言编写简单的脚本,通过抓取万网和新网的WHOIS查询页面来提取域名信息。文章提供了对应的核心代码函数,展示了基于HTTP请求和正则表达式的数据提取方法。
准备条件
确保PHP环境已启用 allow_url_fopen 配置,以便使用 file_get_contents 函数发起外部HTTP请求。以下代码示例假设目标域名以字符串形式传入参数。
使用万网接口查询
第1步:构建万网WHOIS查询函数
目的是调用万网提供的合法WHOIS查询入口。该函数接收域名作为参数,拼接至万网的查询URL中,并尝试从返回的HTML中提取预标签(<pre>)内的内容。同时,为了清理无关提示,代码中包含了一段针对特定续费说明文字的过滤替换逻辑。
function whois_hichina($domain) {
$url = 'http://whois.hichina.com/cgi-bin/whois?domain=' . $domain;
$content = @file_get_contents($url);
// 正则匹配 pre 标签内容
if (preg_match("|<pre>(.+?)</pre>|is", $content, $whois)) {
$result = $whois[0];
// 过滤掉关于到期日参考及会员区登录的提示文字
$ignore_text = '友情提示:按注册局要求,过期域名可能会处于注册商自动续费期阶段,您在此查询所看到的域名到期日仅供参考<br />请您<a href="http://www.net.cn/has_client/userlogon/user_logon1.asp" target="_blank" class="link_gl">进入会员区</a>查看该域名的实际到期时间,并请及时进行续费,谢谢!';
$result = str_replace($ignore_text, '', $result);
return $result;
}
return false;
}
使用新网接口查询
第2步:构建新网WHOIS查询函数
旨在利用新网的域名查询页面结构。此方法根据新网网站的URL模式构造请求地址,并通过正则表达式匹配特定的表格类名(lyTableInfoWrap)所在的 div 区域来获取数据。相比直接调用标准WHOIS协议,这种方式依赖页面布局的稳定性。
function whois_xinnet($domain) {
$url = 'http://www.xinnet.cn/Modules/agent/serv/pages/domain_whois.jsp?domainNameWhois=' . $domain . '&noCode=noCode';
$content = @file_get_contents($url);
// 正则匹配包含信息的 div 标签
if (preg_match('|<div class="lyTableInfoWrap">(.+?)</div>|is', $content, $whois)) {
return $whois[0];
}
return false;
}
注意事项与排错
- 反爬机制风险:上述代码基于抓取网页内容(Scraping),若目标网站更新页面结构或增加验证码/反爬策略,相关正则可能失效,导致无法提取有效数据。
- 性能对比:在部分测试环境中,新网接口的响应速度可能优于万网,且能覆盖部分万网无法直接查询的域名类型,具体表现取决于服务器出口IP和对方服务器的负载均衡情况。
- 数据安全:在生产环境中,建议对
file_get_contents添加超时设置(Timeout)和错误抑制,避免因网络故障导致进程阻塞。
总结
以上为使用PHP简单实现域名WHOIS查询的详细内容,更多关于PHP网络编程的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













