有时候需要用Python获取某个网站的子域名,在检测一些大站的时候常会用到。以前找某个网站的子域名我用的方法是在网站内和链接处找,偶尔也会用到google。后来听朋友乔三少说bt5下有个获取子域名的小工具,没怎么在意。有一天要获取某个网站的子域名了,就问他要程序名字,结果他一时想不起来了。。。然后他说有个在线查询的网站,把网址发给了我。要查询某个网站的子域名,在“domain”右面的输入框中输入网站的域名,然后点“Query”按钮就可以列出该网站的子域名了。来查询下百度的子域名。百度不愧是大站,有N多子域名,目测至少有几百个。
通过网站就可以查询某个网站有哪些子域名,真是太方便了。能不能更方便一点做个本地查询工具呢?在本地运行一下程序就可以获得某个网站的子域名,结果是提取的是subdomain.php的查询结果。当然,还有安全性的考虑,如果直接去网站查询,如果网站被人挂了马,没打补丁的话就悲剧了。本地查询的话就可以避免这个风险。
考虑用我会点的Python来实现。大体思路是通过Python发送数据包模拟在网站上的查询,获取查询结果页面的源代码,用正则匹配源代码中的子域名,最后输出结果。
可以看到查询的过程就是向subdomain.php以POST方式提交数据,其中百度就是我们查询的域名。
需要以POST方式提交数据,我用的方法是urllib模块中的urlopen()函数,函数原型为:
urlopen(url, data=None, proxies=None)
其中url就是提交数据到哪里的具体地址,data就是以POST