brightlocal/phpwhois

该软件包已被废弃,不再维护。未建议替代软件包。

phpWhois - 查询谁is服务和解析结果的库。基于phpwhois.org

安装: 47 187

依赖者: 0

建议者: 0

安全: 1

星星: 0

观察者: 28

分支: 194

v4.2.5 2014-12-30 17:09 UTC

This package is not auto-updated.

Last update: 2023-03-22 00:39:29 UTC


README

此软件包包含一个PHP的Whois(RFC954)库。它允许PHP程序创建一个Whois对象,并使用lookup函数获取whois查询的输出。

响应是一个包含至少一个元素 'rawdata' 的数组,该元素包含whois请求的原始输出。

此外,如果域名属于存在特殊处理器的注册商,则特殊处理程序将解析输出并在响应中提供额外的元素。这些额外元素的键在HANDLERS.md文件中描述。

它完全支持RFC3490、RFC3491、RFC3492和RFC3454中定义的IDNA(国际化)域名。

它还支持ip/AS whois查询,这对于追踪垃圾邮件非常有用。您只需传递点分四元组IP地址或AS(自治系统)句柄即可,而不是域名。同时提供有限、非递归的Referral Whois(RFC 1714/2167)支持。

要求

phpWhois需要PHP 5.3或更高版本,并具有OpenSSL支持才能正常运行。

如果没有SSL支持,您将无法查询没有whois服务器但有基于https的whois的域名。

安装

通过composer

稳定版本

php composer.phar require "phpwhois/phpwhois":"~4.0"

最新开发版本

php composer.phar require "phpwhois/phpwhois":"dev-master"

示例用法

(见 example.php)

// Load composer framework
if (file_exists(__DIR__ . '/vendor/autoload.php')) {
    require(__DIR__ . '/vendor/autoload.php');
}

use phpWhois\Whois;

$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,即以下两个示例都有效

use phpWhois\Whois;
$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地址时可以使用此服务

use phpWhois\Whois;
$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 域名时使用此服务

use phpWhois\Whois;
$whois = new Whois();
$whois->useServer('uk','whois.isoc.org.il?-V{version},{ip} {query}');
$result = $whois->lookup('example.co.uk');

whois.nic.uk

他们为注册用户提供所谓的 WHOIS2(见 http://www.nominet.org.uk/go/whois2),每小时允许查询的数量更多。如果您已注册,可以通过这种方式查询 .uk 域名时使用此服务

use phpWhois\Whois;
$whois = new Whois();
$whois->useServer('uk','whois.nic.uk:1043?{hname} {ip} {query}');
$result = $whois->lookup('example.co.uk');

这个新特性还允许您通过调用 whois->useServer 并传递要用于命名 tld 的 tld 和服务器以及 args,使用不同于预配置或发现的 whois 服务器。例如,您可以使用此方式为 .au 域名使用另一个不受请求数量限制的 whois 服务器(但提供不了所有者信息)

use phpWhois\Whois;
$whois = new Whois();
$whois->useServer('au','whois-check.ausregistry.net.au');

use phpWhois\Whois;
$whois = new Whois();
$whois->useServer('be','whois.tucows.com');

以避免 .be whois 服务器施加的限制

use phpWhois\Whois;
$whois = new Whois();
$whois->useServer('ip','whois.apnic.net');

在特定 whois 服务器中查找 IP 地址(但会失去由适当的处理程序解析结果的能力)

useServer 可以根据需要多次调用。请注意,如果存在该域的处理程序,它也将被调用,但 whois 服务器返回的数据可能与处理程序预期的数据不同,因此结果可能会有所不同。

加快获取结果

如果您只想知道域名是否已注册,但不需要获取真实所有者信息,可以设置

$whois->deepWhois = false;

这会告诉 phpWhois 只查询一个 whois 服务器。对于 .com.net.tv 域名和 IP 地址,这将防止 phpWhois 向多个 whois 服务器提出请求,您将只知道域名是否已注册以及注册商是谁,但不是所有者信息。

UTF-8

PHPWhois 假定所有 whois 服务器返回的输出都是 UTF-8 编码的,如果某些 whois 服务器不返回 UTF-8 数据,您可以将它包含在 whois.servers.php 中的 NON_UTF8 数组中

获取域名信息的工作流程

  1. 使用域名作为参数调用方法 phpWhois\Whois::lookup()
  2. 如果方法的第二个参数是 true(默认值),phpWhois 将尝试将域名转换为 punycode
  3. 如果域名不在预定义的处理程序列表中(WHOIS_SPECIAL 位于 src/whois.servers.php),则尝试查询 [tld].whois-servers.net。如果它有 IP 地址,则假设它是有效的 whois 服务器
  4. 尝试查询找到的 whois 服务器或使用 unknown() 方法填充响应数组

注意

存在一个扩展类 phpWhois\Utils,其中包含一个调试函数 showObject(),如果您调用 showObject($result),它将输出返回对象的总布局到网页浏览器。

该软件包的最新版本和示例脚本位于 https://github.com/phpWhois/phpWhois

贡献

如果您想添加对新 TLD 的支持、扩展功能或修复错误,请随时在 Github 仓库 https://github.com/phpWhois/phpWhois 中创建一个新的 pull request

鸣谢

Mark Jeftovic [email protected]

David Saez Padros [email protected]

罗斯·戈德 [email protected]

德米特里·卢卡申 [email protected]