fernleafsystems / phpwhois
Requires
- php: >=7.4
This package is auto-updated.
Last update: 2024-09-29 06:02:55 UTC
README
从 sparc/phpWhois.org 分支而来
原始仓库: https://github.com/sparc/phpWhois.org
phpWhois - 使用PHP进行whois查询的基本类
此包包含一个Whois(RFC954)库,允许PHP程序创建Whois对象,并通过Lookup函数获取whois查询的输出。
响应是一个包含至少一个名为'rawdata'的元素的数组,包含来自whois请求的原始输出。
此外,如果域名属于存在特殊处理器的注册商,特殊处理器将解析输出并在响应中提供额外的元素。这些额外元素的键在HANDLERS文件中有描述。
它完全支持根据RFC3490、RFC3491、RFC3492和RFC3454定义的IDNA(国际化)域名。
它还支持ip/AS whois查询,这对于追踪SPAM非常有用。您只需要传递点分四位的IP地址或AS(自治系统)处理程序,而不是域名。还提供有限的、非递归的Referral Whois(RFC 1714/2167)支持。
要求
phpWhois需要PHP 4.3.0或更高版本,并具有OpenSSL支持才能正常运行。如果没有SSL支持,您将无法查询没有whois服务器但具有基于https的whois的域名。您也可以在较低的PHP版本上运行它,但没有超时控制。phpWhois不适用于低于4.1.0的PHP版本。
安装
基本上,在服务器文档根之外某处解压缩分发,并确保目录在php.ini文件、服务器配置或.haccess文件中的'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>';
如果您以UTF-8提供要查询的域名,则必须使用
$result = $whois->Lookup($query);
如果查询字符串不是UTF-8,则它必须在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和服务器以及参数来使用与预配置或发现的不同的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),它将输出返回对象的总体布局到网络浏览器。
该软件包的最新版本和演示脚本位于http://phpwhois.sourceforge.net/
在devshed.com上还有一篇介绍此软件包的文章,网址为http://www.devshed.com/Server_Side/PHP/whois/
支持/补丁
https://github.com/sparc/phpWhois.org
致谢
- Mark Jeftovic markjr@easydns.com
- David Saez Padros david@ols.es
- Ross Golder ross@golder.org