如何通过PHP知道IP的域名?
我用过这段代码
<?php
$hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']);
echo $hostname;
?>但是它不能正常工作。例如:
gethostbyaddr(62.75.138.253);域名是earthwar.de,但正确答案是德语-proxy.de
请帮帮忙。
发布于 2011-12-30 06:08:01
单个IP地址可以承载潜在的无限数量的域。gethostbyaddr返回的域名将提供该IP的PTR DNS记录中的域名。反向DNS记录(PTR)将IP地址映射到一个或多个域名。
domaintools.com就是这样一家提供与IP地址上的域一样的智能的公司。你可以为他们收获的这样的信息付费。如果域名不在PTR记录中,那么您可以知道IP地址上有哪些域的唯一方法是尝试将域名解析为其IP地址并保留记录。阿菲克,别无他法。
请参阅Reverse DNS Lookup和Domain tools reverse IP lookup
域名反向IP查找工具的数据都是基于它们的挖掘、收集和研究。
发布于 2011-12-30 06:07:42
你的PHP是正确的,earthwar.de是正确的答案。
eugen@lucidhome:~$ nslookup
> set q=ptr
> 62.75.138.253
Server: 192.168.232.1
Address: 192.168.232.1#53
Non-authoritative answer:
253.138.75.62.in-addr.arpa name = earthwar.de.
Authoritative answers can be found from:
> 当然,这并不意味着其他名称(如德语-proxy.de)不指向相同的地址,但没有办法找到所有这些名称。
更新:
eugen@lucidhome:~$ nslookup
> set q=a
> german-proxy.de.
Server: 192.168.232.1
Address: 192.168.232.1#53
Non-authoritative answer:
Name: german-proxy.de
Address: 62.75.138.253
> earthwar.de.
Server: 192.168.232.1
Address: 192.168.232.1#53
Non-authoritative answer:
Name: earthwar.de
Address: 91.143.85.129
> 所以这是一个很好的例子。事实是:你不是无能为力的,伙计!
发布于 2011-12-30 06:07:59
可以有许多名称->IP映射,但只能ONE IP->名称映射。在执行host->ip->host查找时,以完全不同的主机名结束并不少见。您无法确定用户指定的主机名,除非用户使用的协议将该主机名与请求一起传输,例如http 1.1。大多数协议完全脱离IP地址工作,不需要/不关心主机名。
https://stackoverflow.com/questions/8674010
复制相似问题