我如何通过PHP(反向IP)知道IP托管是否是网站

时间:2012-01-04 10:38:12

标签: php dns ip

如何通过PHP(反向IP)知道IP是否托管网站?

例如:

此IP 62.75.138.253主机5个站点www.earthwar.de,video-4u.com ..ect

如果我有和IP我只需知道它是否托管网站

我认为gethostbyaddr在这里没用;

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

  

我如何知道IP是否通过PHP来托管域名?

没有单一的功能:这是一项非常重要的任务。 gethostbyaddr()将为您提供一个域名,该域名已配置为IP的主机名。这就是你能轻易获得的一切。

网上有各种公司收集域名,解析域名并将信息存储在数据库中。可能有付费服务可以让您访问API,但这似乎不是您的想法。

答案 1 :(得分:0)

我是host.io的创建者,它为您显示托管在同一IP地址上的所有域的列表(以及链接到该域的域的列表,等等)。例如,以下是与stackoverflow.com使用相同IP托管的域的列表:https://host.io/stackoverflow.com

您已经发现,获取单个域的IP地址只是解决问题的一小部分。您无法编写任何命令或脚本来执行此操作-您需要将自己的域数据库构建为IP地址。

首先需要获取(或创建)所有可用域名的列表。目前大约有2.5亿。下一步是将所有这些域解析为IP地址。然后,您需要将所有这些域到IP对存储在数据库中,然后可以查询以获取同一IP上所有域的列表。然后,您需要定期执行此操作以确保它保持最新状态。

举一个完整的例子,让我们创建一个具有4个域的文件并将其解析为IP地址:

$ cat domains.txt
facebook.com
fb.com
stackoverflow.com
stackexchange.com

# Let's resolve the domains to IPs with dig - could use nslookup or similar
$ cat domains.txt | xargs -I% bash -c "dig +short % | tail -n1" > ips.txt
31.13.76.68
31.13.76.68
151.101.129.69
151.101.193.69

# Let's combine the domains and IPs using paste
$ paste domains.txt ips.txt > combined.tsv
$ cat combined.tsv
facebook.com    31.13.76.68
fb.com  31.13.76.68
stackoverflow.com   151.101.129.69
stackexchange.com   151.101.129.69

# Let's create a DB table and import the data, and write a query 
# to find any domains in our dataset that are hosted on the same 
# domain as stackoverflow.com

$ psql $DB_URL

=> create table details (domain text, ip text);
=> \copy details from ~/combined.tsv;

=> select domain from details where ip = (select ip from details where domain = 'stackoverflow.com');
      domain
-------------------
 stackoverflow.com
 stackexchange.com
(2 rows)

这就是您可以自己构建的方法,或者可以让其他人来做艰苦的工作,并使用他们的数据。我们就是这样的提供商之一,但也存在其他提供商,例如yougetsignal和domaintools。