emild/dns

检索DNS记录

2.4.21 2021-11-28 19:18 UTC

README

Latest Version on Packagist Tests Code style Total Downloads

此包包含一个可以检索DNS记录的类。

use Spatie\Dns\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

用法

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

use Spatie\Dns\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 将返回一个包含实现 Spatie\Dns\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

使用特定的名称服务器

您可以从特定的名称服务器获取记录。

use Spatie\Dns\Dns;

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

猜测记录

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

use \Spatie\Dns\Support\Factory();

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

使用自定义处理器

Handler 负责检索特定类型的DNS记录。

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

  • Spatie\Dns\Handler\Dig
  • Spatie\Dns\Handler\DnsGetRecord

您可以创建自定义处理器。任何扩展自 Spatie\Dns\Handler\Handler 的类都是有效的处理器。

您可以通过将自定义处理器传递给 Spatie\Dns\Dns 上的 useHandlers 来使用自定义处理器类。

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

内部机制

我们将使用 dig 来检索DNS信息。如果它未安装在您的系统上,我们将调用本机的 dns_get_record() 函数。

测试

composer test

变更日志

请参阅 CHANGELOG 了解最近发生了哪些变化。

贡献

请参阅 CONTRIBUTING 了解详情。

安全

如果您发现任何与安全相关的问题,请通过电子邮件 freek@spatie.be 联系我们,而不是使用问题跟踪器。

明信片软件

您可自由使用此软件包,但如果它进入了您的生产环境,我们非常希望您能从您的家乡寄给我们一张明信片,并提及您正在使用我们哪个软件包。

我们的地址是:Spatie,Kruikstraat 22,2018 安特卫普,比利时。

我们将所有收到的明信片发布在我们的公司网站上

致谢

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件