如何在PHP中检查域名称服务器?

如何在PHP中检查域名称服务器?,php,dns,lookup,nameservers,Php,Dns,Lookup,Nameservers,我需要检查名称服务器域正在使用什么,但在PHP中找不到正确的解决方案 我尝试了checkdnsrr()和dns_get_record(),它们都不显示某些正在工作的域的NSWhois也不是解决方案 我的目的是筛选设置了名称服务器的域和没有设置名称服务器的域。有什么解决方法吗?您应该简单地使用dns\u get\u record函数,并且可以选择将dns\u NS作为第二个参数传递 对于您的域zinas.lv使用 var_dump(dns_get_record('zinas.lv', DNS_NS

我需要检查名称服务器域正在使用什么,但在PHP中找不到正确的解决方案

我尝试了
checkdnsrr()
dns_get_record(),它们都不显示某些正在工作的域的NS
Whois
也不是解决方案


我的目的是筛选设置了名称服务器的域和没有设置名称服务器的域。有什么解决方法吗?

您应该简单地使用
dns\u get\u record
函数,并且可以选择将
dns\u NS
作为第二个参数传递

对于您的域
zinas.lv
使用

var_dump(dns_get_record('zinas.lv', DNS_NS));
我得到:

数组(2){[0]=>数组(5){[“主机”]=>字符串(8)“zinas.lv” [“类”]=>string(2)”在“[“ttl”]=>int(1655)[“类型”]=>string(2)中 “NS”[“target”]=>string(10)“ns1.dns.lv”}[1]=>array(5){ [“主机”]=>string(8)“zinas.lv”[“类”]=>string(2)”在“[“ttl”]=> int(1655)[“type”]=>string(2)“NS”[“target”]=>string(10) “ns2.dns.lv”}

因此,您可以使用以下方式简单地显示这两个dns:

$dns = dns_get_record('zinas.lv', DNS_NS);

echo $dns[0]['target'].' '.$dns[1]['target'];

使用此函数以数组形式获取任何域的名称服务器:

function getDns($domain)
{
    $dns = dns_get_record($domain, DNS_NS);
    $nameservers = [];
    foreach ($dns as $current)
        $nameservers[] = $current['target'];
    return $nameservers;
}

dns\u get\u记录($host,dns\u NS)是唯一的方法。如果该函数的返回值中缺少nameserver条目,那么调用运行PHP的服务器正在与之对话的DNS服务器很可能不是最新的。如果您所在的公司拥有自己的DNS服务器,这些服务器可以缓存条目或进行不规则的更新,则可能会出现这种情况。您应该提供
DNS\u get\u record
不工作的示例域ns\u get\u record('zinas.lv');不适用于zinas.lv域如果dns\u get\u记录不适用于您,我建议您使用[link]之类的Web服务谢谢,它现在适用于zinas.lv域。如果它返回:
array(0){}
这意味着域没有设置名称服务器?@user3844395可能是的,但您还应该使用一些其他方法检查它,例如查看
http://dnscheck.pingdom.com
并确保没有指定名称服务器。然而,据我所知,几乎所有的域(甚至更多)都需要设置NS记录,如果它们是活动的——大约有150k个域,我无法手动检查它们,所以我正在寻找自动化的解决方案。我希望它现在能起作用。还有可能检查公共DNS上的域NS记录吗?例如
google 8.8.8.8
OpenDNS
?@user3844395如此简单,首先检查列表,然后手动检查一些具有空$dns的域。您的某些域可能处于非活动状态,因此它们将返回空的
$dns
array@marcin-nobialek我只得到了几个域,
$dns
response是空的,但是whois查找显示有一个名称服务器集。这是什么意思?域被隔离、过期或
dns\u get\u记录
失败?