arrayaccess / rdap-client
PHP - 注册数据访问协议 (RDAP) 客户端
Requires
- php: >= 8.1
- ext-intl: *
- ext-json: *
Requires (Dev)
- slevomat/coding-standard: ^8.13
- squizlabs/php_codesniffer: ^3.7.2
This package is auto-updated.
Last update: 2024-09-10 02:41:37 UTC
README
PHP (以前通过 http 协议的 Whois) 的 RDAP 客户端
要求
- php
8.1
或更高版本 ext-json
ext-intl
IETF RDAP 参考
- 注册数据访问协议 (RDAP) 对象标记 #RFC8521
- 注册数据访问协议 (RDAP) 的安全服务 #RFC7481
- 注册数据访问协议 (RDAP) 查询格式 #RFC9082
- 注册数据访问协议 (RDAP) 的 JSON 响应 #RFC9083
- 找到权威的注册数据 (RDAP) 服务 #RFC9224
WHOIS 对象的架构库存与分析
- WHOIS 注册对象的库存与分析 #RFC7485
IANA RDAP 数据
Iana 提供关于 rdap 的数据
-
HTTP : https://data.iana.org/rdap/
-
AS 号空间的自引导服务注册 #RFC9224 https://www.iana.org/assignments/rdap-asn/rdap-asn.xhtml
-
域名空间的自引导服务注册 #RFC9224 https://www.iana.org/assignments/rdap-dns/rdap-dns.xhtml
-
IPv4 地址空间的自引导服务注册 #RFC9224 https://www.iana.org/assignments/rdap-ipv4/rdap-ipv4.xhtml
-
IPv6 地址空间的自引导服务注册 #RFC9224 https://www.iana.org/assignments/rdap-ipv6/rdap-ipv6.xhtml
-
提供者对象标签的自引导服务注册 #RFC8521 https://www.iana.org/assignments/rdap-object-tags/rdap-object-tags.xhtml
-
回收的 IPv4 池 #RFC8521 https://www.iana.org/assignments/ipv4-recovered-address-space/ipv4-recovered-address-space.xhtml
预定义回收的 IPv4 地址列表: RecoveredIPv4.php
示例用法
请参阅Client.php以获取更多方法
use ArrayAccess\RdapClient\Client; use ArrayAccess\RdapClient\Interfaces\RdapRequestInterface; use ArrayAccess\RdapClient\Protocols\AsnProtocol; use ArrayAccess\RdapClient\Protocols\DomainProtocol; use ArrayAccess\RdapClient\Protocols\IPv4Protocol; use ArrayAccess\RdapClient\Protocols\IPv6Protocol; use ArrayAccess\RdapClient\Protocols\NsProtocol; $client = new Client(); /** * @var RdapRequestInterface<string, DomainProtocol> $request */ $domainName = 'example.com'; $request = $client->request($domainName); /** * @var RdapRequestInterface<string, IPv4Protocol> $request */ $ipv4 = '192.0.47.59'; // iana.org ipv4 $request = $client->request($ipv4); /** * @var RdapRequestInterface<string, IPv6Protocol> $request */ $ipv6 = '2404:6800:4003:c01::66'; // google.com $request = $client->request($ipv6); /** * @var RdapRequestInterface<string, NsProtocol> $request * Name server guessing by prefix (ns[0-9]*).domain-name.ext or [^\.]+.(ns[0-9]*.[^\.]+\.)(?:.+).domain-name.ext */ $nameserver = 'ns1.google.com'; // google name server $request = $client->request($nameserver); /** * @var RdapRequestInterface<string, AsnProtocol> $request * Autonomous System Number parsed by "^(?ASN?)?(?<as_number>[0-9]+)$" */ $asNumber = 'AS15169'; // Google LLC ASN // or just put the numeric string / integer $request = $client->request($asNumber);
// getting object response $response = $request->getResponse(); // getting json data $jsonResponse = $response->getResponseJson(); // getting definition object $definition = $response->getDefinition(); // if domain > getting related / another whois server request if possible $alternateRequest = $definition->getRelatedRequest(); // json serialize $fallbackToJson = json_encode($definition, JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES);
// direct call with custom request target // makes sure the type of RDAP uri target is equal '/domain/GOOGLE.com' as domain-protocol $newRequest = $request->withRdapSearchURL('https://rdap.markmonitor.com/rdap/domain/GOOGLE.COM'); $response = $newRequest->getResponse();
请参阅Response/Definitions以获取有关代码的更多详细信息
注意:
数据定义的代码包含严格的数据类型。一些无效数据将引发错误。
WHOIS 数据收集
参考:(gist) WHOIS 列表以获取 WHOIS 服务器/ IP 范围/ sTLD 等列表。
注意! gist 包含大量数据。