我想知道是否有办法构建一个自动脚本(无论是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;
}
答案 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.com
。 bob.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。