dns record reader based on https://github.com/spatie/dns
This package contains a class that can fetch DNS records.
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
You can use various methods to retrieve info of a record.
$records = $dns->getRecords('spatie.be')
$hostNameOfFirstRecord = $records[0]->host();
If you do not have dig installed you will need it.
You can install the package via composer:
composer require spatie/dns
The class can get these record types: A
, AAAA
, CNAME
, NS
, SOA
, MX
, SRV
, TXT
, DNSKEY
, CAA
, NAPTR
.
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
will return an array with objects that implement the Spatie\Dns\Records\Record
interface.
Here's how you can fetch the first A-record of a domain.
$ARecord = $dns->getRecords('spatie.be', 'A')[0];
These methods can be called on all records:
host()
: returns the host (spatie.be
)ttl()
: return the time to live (900
)class()
: returns the class (IN
)type()
: returns the type (A
)
When converting a record to a string you'll get a string with all info separated with tabs.
(string)$ARecord // returns `spatie.be. 900 IN A 138.197.187.74`
Some records have additional methods available. For example, records of type A have an additional ip()
method. To know which extra methods there are, check the docblocks above all record classes in the source code.
You can get records from a specific nameserver.
use Spatie\Dns\Dns;
(new Dns)
->useNameserver('ns1.openminds.be') // use ns1.openminds.be
->getRecords('spatie.be');
We will use dig to fetch DNS info. If it is not installed on your system, we'll call the native dns_get_record()
function.
composer test
The MIT License (MIT). Please see License File for more information.