shirakun / phpwhois
phpWhois - 用于查询 Whois 服务和解析结果的库。基于 phpwhois.org
Requires
- php: >=5.3.0
Suggests
- lib-openssl: *
This package is auto-updated.
Last update: 2024-09-27 09:21:31 UTC
README
本包包含一个用于 PHP 的 Whois(RFC954)库。它允许 PHP 程序创建 Whois 对象,并使用 Lookup 函数获取 whois 查询的输出。
响应是一个包含至少一个 'rawdata' 元素的数组,其中包含 whois 请求的原始输出。
此外,如果域名属于存在特殊处理程序的注册商,则该特殊处理程序将解析输出并在响应中提供额外的元素。这些额外元素的键在 HANDLERS 文件中描述。
它完全支持 RFC3490、RFC3491、RFC3492 和 RFC3454 中定义的 IDNA(国际化)域名。
它还支持 ip/AS whois 查询,这对于追踪垃圾邮件非常有用。你只需传递点分四元 IP 地址或 AS(自治系统)句柄而不是域名即可。还提供有限的、非递归的 Referral Whois(RFC 1714/2167)支持。
要求
phpWhois 需要 PHP 4.3.0 或更高版本,并具有 OpenSSL 支持,才能正常工作。如果没有 SSL 支持,你将无法查询没有 whois 服务器但具有基于 https 的 whois 的域名。你也可以在较低的 PHP 版本上运行它,但没有超时控制。phpWhois 不支持低于 4.1.0 的 PHP 版本。
安装
通过 composer
稳定版本
php composer.phar require "phpwhois/phpwhois":"~4.0"
最新开发版本
php composer.phar require "phpwhois/phpwhois":"dev-master"
下载包
从 Github 下载最新发布版:https://github.com/phpWhois/phpWhois/releases
基本上,将分布解压缩到服务器文档根以外的位置,并确保目录列在你的 php.ini 文件、服务器配置或 .htaccess 文件中的 include_path 中。如果你想使用网络浏览器测试,只需将 example.php、example.html 和 whois.icon.png 复制到服务器文档根上的任何位置即可。
phpWhois 不是一个 PHP 应用程序,而是一个可以在应用程序中使用的类。无需将安装文件夹对任何人开放,但如果你愿意,你可以在服务器文档根内安装它,它将无问题地工作,也不会有安全风险。
示例用法
(见 example.php
)
include('whois.main.php'); $whois = new Whois(); $query = 'example.com'; $result = $whois->Lookup($query,false); echo "<pre>"; print_r($result); echo "</pre>";
如果你以 UTF8 提供要查询的域名,则必须使用
$result = $whois->Lookup($query);
如果查询字符串不是 UTF8,则必须为 ISO-8859-1,否则 IDNA 支持将无法工作。
你可以查询什么
你可以使用 phpWhois 查询域名、IP 地址和其他信息,例如 AS,以下两个示例都有效
$whois = new Whois(); $result = $whois->Lookup('example.com'); $whois = new Whois(); $result = $whois->Lookup('62.97.102.115'); $whois = new Whois(); $result = $whois->Lookup('AS220');
使用特殊 whois 服务器
一些注册商可以提供对注册的 whois 网关的特殊访问,以便更精细地控制对 whois 服务的滥用。目前已知提供特殊访问的 whois 服务包括
ripe
新的 ripe whois 服务器软件支持一些特殊参数,允许传递真实的客户端 IP 地址。此功能仅适用于已注册网关。如果你已注册,你可以这样在查询 ripe IP 地址时使用此服务
$whois = new Whois(); $whois->UseServer('uk','whois.ripe.net?-V{version},{ip} {query}'); $result = $whois->Lookup('62.97.102.115');
whois.isoc.org.il
该服务器也使用新的ripe whois服务器软件,因此以相同的方式运行。如果您已注册,可以通过这种方式查询.il
域名以使用此服务。
$whois = new Whois(); $whois->UseServer('uk','whois.isoc.org.il?-V{version},{ip} {query}'); $result = $whois->Lookup('example.co.uk');
whois.nic.uk
他们向注册用户(通常是Nominet成员)提供所谓的WHOIS2(见http://www.nominet.org.uk/go/whois2),每小时允许查询的数量更多。如果您已注册,可以通过这种方式查询.uk域名。
$whois = new Whois(); $whois->UseServer('uk','whois.nic.uk:1043?{hname} {ip} {query}'); $result = $whois->Lookup('example.co.uk');
此新功能还允许您通过调用whois->UseServer并传递要用于指定顶级域的tld和服务器以及args来使用与预配置或发现的不同的whois服务器。例如,您可以使用此方法为.au
域名使用另一个whois服务器,该服务器不限制请求数量(但不提供所有者信息)。
$whois = new Whois(); $whois->UseServer('au','whois-check.ausregistry.net.au');
或
$whois = new Whois(); $whois->UseServer('be','whois.tucows.com');
以避免.be
whois服务器施加的限制。
或
$whois = new Whois(); $whois->UseServer('ip','whois.apnic.net');
在特定whois服务器查找IP地址(但会失去由适当处理程序解析结果的能力)。
UseServer可以根据需要多次调用。请注意,如果存在该域的处理程序,它也会被调用,但来自whois服务器的返回数据可能不同于处理程序期望的数据,因此结果可能不同。
更快地获取结果
如果您只想知道域名是否已注册,但不想获取实际的拥有者信息,您可以设置
$whois->deep_whois = false;
这会告诉phpWhois只查询一个whois服务器。对于.com
、.net
和.tv
域名和IP地址,这将防止phpWhois询问超过一个whois服务器,您将只知道该域名是否已注册以及注册商是哪个,但不会是所有者信息。
UTF-8
PHPWhois假定所有whois服务器返回UTF-8编码的输出,如果某些whois服务器不返回UTF-8数据,您可以在whois.servers.php
中的NON_UTF8
数组中包含它。
注意事项
有一个扩展类whois.utils.php
,其中包含一个名为showObject()
的调试函数,如果您调用showObject($result)
,它将输出返回对象的总布局到网页浏览器。
该软件包的最新版本和演示脚本位于https://github.com/phpWhois/phpWhois
贡献
如果您想添加对新TLD的支持、扩展功能或修复错误,请随时在Github的存储库https://github.com/phpWhois/phpWhois上创建新的pull request。
鸣谢
Mark Jeftovic markjr@easydns.com David Saez Padros david@ols.es Ross Golder ross@golder.org
Dmitry Lukashin dmitry@lukashin.ru