反向IP域检查脚本

时间:2016-04-01 22:56:03

标签: php bash perl dns

我想知道是否有办法构建一个自动脚本(无论是perl,bash还是php),找出托管在某个ip上的域名。

我尝试在yougetsignal.com上执行反向IP域检查等操作。

我的一位朋友帮我解决了这个问题,但是在给定服务器地址列表的情况下,它并没有找到托管域名。相反,它只是获取IP地址的主机。

这是我编写的PHP代码

html,
body {
  padding: 0;
  margin: 0;
  position: relative;
  height: 100%
}

.bg {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  z-index: 2;
  background: url('https://pixabay.com/static/uploads/photo/2015/10/01/21/39/background-image-967820_960_720.jpg') no-repeat center center fixed;
  background-size: cover;
}

.main-container {
  position: relative;
  width: 80%;
  background-color: red;
  height: 80%;
  margin: auto;
  z-index: 3;
}

3 个答案:

答案 0 :(得分:5)

这通常不可行。托管虚拟域的网站通常不提供反向DNS,列出它们托管的所有域。反向DNS只指向其服务器名称。

您链接到的网站可能会像搜索引擎一样抓取网络来获取其信息。但它不是对页面中的所有单词进行索引,而是简单地记录它找到的所有名称到地址的映射,然后创建一个反向索引,返回映射到同一地址的所有名称。

答案 1 :(得分:1)

从脚本中无法做到这一点。让我举一个例子来说明。

您的服务器位于12.34.56.78,该服务器托管了以下(唯一)网站。

www.example.com
example.com
www.example.org
bob.example.net 
gertrudeisarealllyniceguy.banana 

大多数网络服务器的运作方式是,它们将为与传入主机标头匹配的网站提供服务。 所以你可以幸运地发现www.example.com的存在,你可以推断example.combob.example.net更有可能被遗漏。

因此,除非您明确要求gertrudeisarealllyniceguy.banana,否则您永远不会知道它存在。因此,唯一可能的方法就是知道该网络服务器上托管的每个网站(除了黑客攻击)都会尝试每一个可能的域名,这需要很长时间(也许eons

当前拥有此信息的网站使用来自网络抓取工具的数据,他们只需查找具有域名和IP地址的表格列。

答案 2 :(得分: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。