繁体   English   中英

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

[英]How i can know if the IP host a sites or not by PHP (Reverse IP)

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

例如 :

该IP 62.75.138.253拥有5个站点www.earthwar.de,video-4u.com ..ect

如果我拥有IP,我只需要知道它是否托管一个网站

我认为gethostbyaddr在这里没有用

有人可以帮忙吗?

我如何通过PHP知道IP托管一个域?

没有一个单一的功能:这是一项不平凡的任务。 gethostbyaddr()将为您提供一个域名,该域名被配置为IP的主机名。 这就是您可以轻松获得的所有信息。

网上有多家公司收集域名,解析域名并将信息存储在数据库中。 可能有一些付费服务可以为您提供对API的访问权限,但这似乎并不是您想要的。

我是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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM