frdl / oid-connect-rdap
OID-Connect RDAP 客户端 (通过 RDAP 的 Whois)
Requires
- php: >= 8.1
- ext-intl: *
- ext-json: *
- metaregistrar/rdap-client: *
Requires (Dev)
- gbxyz/rdap-bootstrap-server: *
- slevomat/coding-standard: ^8.13
- squizlabs/php_codesniffer: ^3.7.2
Provides
README
通过OID-Connect 协议扩展 RDAP 查找。
OID-Connect RDAP 客户端 (通过 RDAP 的 Whois)
RDAP 客户端
PHP 的 RDAP 客户端(以前是通过 http 协议的 Whois)
需求
- 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 包含大量数据。