jsmitty12 / phpwhois
Requires
- php: >=7.2
- algo26-matthias/idna-convert: ^3.0
Requires (Dev)
- dms/phpunit-arraysubset-asserts: ~0.1
- phpunit/phpunit: ^8.0 || ^9.0
Suggests
- lib-openssl: *
- dev-master
- v6.0.2
- v6.0.1
- v6.0.0
- 5.6.x-dev
- v5.6.5
- v5.6.4
- 5.6.3
- v5.6.2
- v5.6.1
- v5.6.0
- v5.5.0
- v5.4.1
- v5.4.0
- v5.3.0
- v5.2.0
- v5.1.0
- v5.0.2
- v5.0.1
- v5.0
- v4.2.5
- 4.2.4
- 4.2.3
- dev-feature/php8
- dev-feature-5.6/more_handler_tests
- dev-configure_php_codesniffer
- dev-feature/restore_successful_build
- dev-feature/set_up_scrutinizer
- dev-4-stable
- dev-dev
This package is auto-updated.
Last update: 2023-04-12 13:40:22 UTC
README
简介
此包包含一个用于 PHP 的 Whois (RFC954) 库。它允许 PHP 程序使用 lookup
函数创建 Whois 对象,并获取 whois 查询的输出。
响应是一个数组,至少包含一个名为 'rawdata' 的元素,其中包含 whois 请求的原始输出。
此外,如果域名属于存在特殊处理器的注册商,则特殊处理器将解析输出,并在响应中提供额外的元素。这些额外元素的键在 HANDLERS.md 文件中描述。
它完全支持按照 RFC3490、RFC3491、RFC3492 和 RFC3454 定义的 IDNA(国际化)域名。
它还支持 ip/AS whois 查询,这对于跟踪垃圾邮件非常有用。您只需传递点分四元的 IP 地址或 AS(自治系统)处理程序即可,而不是域名。它还提供了有限的、非递归的 Referral Whois(RFC 1714/2167)支持。
要求
phpWhois 需要 PHP 7.0 或更高版本,并且具有 OpenSSL 支持才能正常工作。
如果没有 SSL 支持,您将无法查询没有 whois 服务器但基于 https 的 whois 的域名。
安装
通过 composer
稳定版本
php composer.phar require "jsmitty12/phpwhois":"^5.0"
最新开发版本
php composer.phar require "jsmitty12/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和服务器以及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
数组中包含它。
获取域名信息的工作流程
- 使用域名作为参数调用方法
phpWhois\Whois::lookup()
- 如果方法的第二个参数是
true
(默认值),则phpWhois将尝试将域名转换为punycode - 如果域名未列入预定义的处理程序列表(
WHOIS_SPECIAL
在src/whois.servers.php
中),则尝试查询[tld].whois-servers.net
。如果它有IP地址,则假定它是有效的whois服务器 - 尝试查询找到的whois服务器或使用
unknown()
方法填充响应数组
备注
有一个扩展类名为phpWhois\Utils
,其中包含一个名为showObject()
的调试函数,如果您调用showObject($result)
,它将输出返回对象的总体布局到网页浏览器。
软件包的最新版本和演示脚本位于https://github.com/jsmitty12/phpwhois
贡献
如果您想添加对新的顶级域(TLD)的支持,扩展功能或修复一个错误,请随意在GitHub的仓库中创建一个新的拉取请求,仓库地址为:https://github.com/jsmitty12/phpwhois
鸣谢
Mark Jeftovic [email protected]
David Saez Padros [email protected]
Ross Golder [email protected]
Dmitry Lukashin [email protected]