antedebaas/dns-parser

v1.2.2 2024-08-22 17:35 UTC

This package is auto-updated.

Last update: 2024-09-22 17:54:17 UTC


README

Latest Version on Packagist Tests Code style Total Downloads

此包包含一个可以检索DNS记录的类。它是Spatie\DNS的扩展版本,因为它们想保持版本尽可能小。

use Ante\DnsParser\Dns;

$dns = new Dns();

$dns->getRecords('spatie.be'); // returns all available dns records

$dns->getRecords('spatie.be', 'A'); // returns only A records

您可以使用各种方法检索记录的信息。

$records = $dns->getRecords('spatie.be')

$hostNameOfFirstRecord = $records[0]->host();

支持我们

我们在创建最佳开源包上投入了大量的资源。您可以通过购买我们的付费产品之一来支持我们。

我们非常感谢您从家乡寄给我们一张明信片,说明您正在使用哪个包。您可以在我们的联系页面上找到我们的地址。我们将所有收到的明信片发布在我们的虚拟明信片墙上。

安装

如果您还没有安装dig,则需要安装它。

您可以通过composer安装此包

composer require spatie/dns

用法

该类可以获取以下记录类型:AAAAACNAMENSPTRSOAMXSRVTXTDNSKEYCAANAPTR

use Ante\DnsParser\Dns;

$dns = new Dns();

$dns->getRecords('spatie.be'); // returns all available dns records

$dns->getRecords('spatie.be', 'A'); // returns only A records
$dns->getRecords('spatie.be', ['A', 'CNAME']); // returns both A and CNAME records
$dns->getRecords('spatie.be', DNS_MX); // returns only MX records
$dns->getRecords('spatie.be', DNS_A | DNS_AAAA); // returns both A and AAAA records

getRecords将返回一个对象数组,这些对象实现了Ante\DnsParser\Records\Record接口。

处理DNS记录

以下是如何获取域名第一个A记录的方法。

$ARecord = $dns->getRecords('spatie.be', 'A')[0];

这些方法可以在所有记录上调用

  • host():返回主机(spatie.be
  • ttl():返回生存时间(900
  • class():返回类别(IN
  • type():返回类型(A

当将记录转换为字符串时,您将得到一个所有信息用制表符分隔的字符串。

(string)$ARecord // returns `spatie.be.              900     IN      A       138.197.187.74`

一些记录有额外的可用方法。例如,类型为A的记录有额外的ip()方法。要了解有哪些额外的方法,请检查源代码中所有记录类的docblocks

使用特定的nameserver

您可以从特定的nameserver获取记录。

use Ante\DnsParser\Dns;

(new Dns)
    ->useNameserver('ns1.openminds.be') // use ns1.openminds.be
    ->getRecords('spatie.be');

猜测记录

当您有一个包含dns记录的字符串时,您可以将它转换为Record

use \Ante\DnsParser\Support\Factory();

// returns instance of \Ante\DnsParser\Records\CNAME
(new Factory())->guess('www.spatie.be.       300     IN      CNAME   spatie.be.');

使用自定义处理器

Handler负责获取特定类型的DNS记录。

默认情况下,使用与包一起提供的这些处理器

  • Ante\DnsParser\Handler\Dig
  • Ante\DnsParser\Handler\DnsGetRecord

您可以创建自定义处理器。有效的处理器是任何从Ante\DnsParser\Handler\Handler扩展的类。

自定义处理器类可以通过将其传递到Ante\DnsParser\Dns上的useHandlers来使用。

$results = $this->dns
    ->useHandlers([new YourCustomHandler()])
    ->getRecords('spatie.be');

底层

我们将使用dig来获取DNS信息。如果您的系统上没有安装,我们将调用本地的dns_get_record()函数。

测试

composer test

变更日志

请参阅变更日志以获取有关最近更改的更多信息。

贡献

请参阅贡献指南获取详细信息。

安全

如果您发现了关于安全性的错误,请发送邮件至security@spatie.be

鸣谢

许可协议

MIT 许可协议 (MIT)。请参阅许可文件获取更多信息。