ljpc / pure-php-doh-client
通过HTTPS轻松查询DNS记录
1.3.0
2023-10-19 09:51 UTC
Requires
- php: ^8.0
- ext-curl: *
This package is auto-updated.
Last update: 2024-09-19 11:42:20 UTC
README
这个库最终使PHP中无需任何第三方扩展即可轻松查询DNS记录变得容易。
功能
- 自动查询多个DoH服务器(轮询)
- 预填充CloudFlare、Google、Quad9和AdGuard DoH服务器
- 易于扩展服务器
- 易于扩展资源记录
- 无需
dig
,全部为纯PHP - 一切均可序列化为JSON
资源记录
以下资源记录可用
- A
- AAAA
- CAA
- CNAME
- DNAME
- DNSKEY
- DS
- KEY
- LOC
- MX
- NS
- NSEC
- PTR
- RRSIG
- SOA
- SPF
- SRV
- TXT
- URI
- TLSA
安装与加载
LJPc Pure PHP DoH Client可在Packagist上找到(使用语义版本),通过Composer安装此库是推荐方式。
只需运行
composer require ljpc/pure-php-doh-client
或将此行添加到您的composer.json
文件中
"ljpc/pure-php-doh-client": "^1.0"
结构
\LJPc\DoH\DNS::query
始终返回一个包含以下字段的\LJPc\DoH\DNSQueryResult
- 使用的服务器(
->getServer()
)[字符串] - 答案(
->getAnswers()
)[数组,包含\LJPc\DoH\DNSRecord] - 授权记录(
->getAuthorityRecords()
)[数组,包含\LJPc\DoH\DNSRecord] - 附加记录(
->getAdditionalRecords()
)[数组,包含\LJPc\DoH\DNSRecord]
- 使用的服务器(
\LJPc\DoH\DNSRecord
始终包含以下字段- 域名 [字符串]
- ttl [int](根据查询的服务器)
- 类型 [字符串](例如A或MX)
- 额外信息 [数组](例如MX记录中的优先级)
- 值 [字符串]
示例
获取cloudflare.com的A记录
<?php use LJPc\DoH\DNS; use LJPc\DoH\DNSType; require __DIR__ . '/vendor/autoload.php'; $result = DNS::query( 'cloudflare.com', DNSType::A() ); $answers = $result->getAnswers(); foreach ( $answers as $answer ) { echo $answer->value . "\n"; }
获取142.250.185.174的PTR记录
<?php use LJPc\DoH\DNS; use LJPc\DoH\DNSType; require __DIR__ . '/vendor/autoload.php'; $result = DNS::query( '142.250.185.174', DNSType::PTR() ); $answers = $result->getAnswers(); foreach ( $answers as $answer ) { echo $answer->value . "\n"; }
获取gmail.com的MX记录
<?php use LJPc\DoH\DNS; use LJPc\DoH\DNSType; require __DIR__ . '/vendor/autoload.php'; $result = DNS::query( 'gmail.com', DNSType::MX() ); $answers = $result->getAnswers(); foreach ( $answers as $answer ) { echo '(' . $answer->extras['priority'] . ') ' . $answer->value . "\n"; }
使用特定的DoH服务器
<?php use LJPc\DoH\DNS; use LJPc\DoH\DNSType; use LJPc\DoH\Servers\Quad9; require __DIR__ . '/vendor/autoload.php'; $result = DNS::query( 'google.com', DNSType::AAAA(), Quad9::class ); $answers = $result->getAnswers(); echo "Used server: " . $result->getServer() . "\n"; foreach ( $answers as $answer ) { echo $answer->value . "\n"; }
许可证
本软件根据GPL 3.0许可证进行分发,同时附带GPL合作承诺。请阅读LICENSE以了解软件可用性和分发信息。
灵感
此包受到了以下包的启发
- https://github.com/dcid/doh-php-client
- https://github.com/mikepultz/netdns2
- http://www.purplepixie.org/phpdns/
定制软件
对库或其他任何内容感兴趣?请通过info@ljpc.nl或www.ljpc.solutions告诉我们。
捐赠
这个库花费了很多时间。如果我们帮助了您或您的业务,请考虑捐赠。 点击此处进行捐赠。