gemorroj / phpwhois
此软件包包含一个用于PHP的Whois(RFC954)库。它允许PHP程序创建Whois对象,并通过Lookup函数获取whois查询的输出。
Requires
- php: >=8.0.2
- algo26-matthias/idna-convert: ^3.1||^4.0
- symfony/polyfill-iconv: ^1.28
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.46
- phpunit/phpunit: ^9.6
This package is auto-updated.
Last update: 2024-08-27 12:14:39 UTC
README
此软件包包含一个用于PHP的Whois(RFC954)库。它允许PHP程序创建Whois对象,并通过Lookup函数获取whois查询的输出。
响应是一个数组,至少包含一个名为'rawdata'的元素,其中包含whois请求的原始输出。
此外,如果域名属于具有特殊处理器的注册商,特殊处理器将解析输出并在响应中提供更多元素。这些附加元素的键在HANDLERS文件中描述。
它完全支持根据RFC3490、RFC3491、RFC3492和RFC3454定义的国际化域名。
它还支持ip/AS whois查询,这对于追踪垃圾邮件非常有用。您只需传递点分四元组IP地址或AS(自治系统)句柄,而不是域名。它还提供了对Referral Whois(RFC 1714/2167)的有限、非递归支持。
需求
phpWhois需要PHP 8.0.2或更高版本,并支持OpenSSL才能正常工作。如果没有SSL支持,您将无法查询没有whois服务器但具有基于https的whois的域名。
安装
composer require gemorroj/phpwhois
示例用法
<?php $whois = new Whois(); $result = $whois->Lookup('example.com'); print_r($result);
如果查询字符串不是UTF8或IDNA支持将无法工作。
您可以查询什么
您可以使用phpWhois查询域名、IP地址和其他信息,例如AS,以下两个示例都有效
<?php $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地址时使用此服务
<?php $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域名时使用此服务
<?php $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域名时使用此服务
<?php $whois = new Whois(); $whois->UseServer('uk', 'whois.nic.uk:1043?{hname} {ip} {query}'); $result = $whois->Lookup('example.co.uk');
此新功能还允许您通过调用whois->UseServer并传递要使用的tld、服务器和参数来使用与预配置或发现的不同的whois服务器。例如,您可以使用此方法为.au域名使用另一个不限制请求次数的whois服务器(但不提供所有者信息)
<?php $whois = new Whois(); $whois->UseServer('au', 'whois-check.ausregistry.net.au'); // or $whois = new Whois(); $whois->UseServer('be', 'whois.tucows.com');
以避免.be whois服务器施加的限制
或
<?php $whois = new Whois(); $whois->UseServer('ip', 'whois.apnic.net');
在特定的whois服务器中查找IP地址(但会丢失由适当处理器解析的结果)
UseServer可以根据需要调用多次。请注意,如果有针对该域的处理程序,它也将被调用,但来自whois服务器的数据可能与处理程序预期的数据不同,因此结果可能不同。
更快地获取结果
如果您只想知道一个域名是否已注册,而不关心获取实际所有者信息,您可以设置
<?php $whois->deepWhois = false;
这将告诉phpWhois只查询一个whois服务器。对于.com、.net和.tv域名以及IP地址,这将防止phpWhois询问超过一个whois服务器,您将只知道该域名是否已注册以及哪个是注册商,但不是所有者信息。
UTF-8
PHPWhois将假设所有whois服务器都返回UTF-8编码的输出,如果某些whois服务器不返回UTF-8数据,您可以在Whois.php中的NON_UTF8数组中包含它
注意
该软件包的最新版本和演示脚本位于https://github.com/Gemorroj/phpwhois
致谢
- Mark Jeftovic markjr@easydns.com
- David Saez Padros david@ols.es
- Ross Golder ross@golder.org
- Gemorroj wapinet@mail.ru