ljpc/pure-php-doh-client

通过HTTPS轻松查询DNS记录

1.3.0 2023-10-19 09:51 UTC

This package is auto-updated.

Last update: 2024-09-19 11:42:20 UTC


README

这个库最终使PHP中无需任何第三方扩展即可轻松查询DNS记录变得容易。

Buy Me A Coffee

功能

  • 自动查询多个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以了解软件可用性和分发信息。

灵感

此包受到了以下包的启发

定制软件

对库或其他任何内容感兴趣?请通过info@ljpc.nlwww.ljpc.solutions告诉我们。

捐赠

这个库花费了很多时间。如果我们帮助了您或您的业务,请考虑捐赠。 点击此处进行捐赠。