正在阅读:

Python二级域名信息收集工具

8,627

最近实在是太忙了,没空更新博客,实在不好意思。今天抽空把之前的一些想法实现出来,没啥技术含量,各位小伙伴勿喷哦。

之前本站转过 Python二级域名暴破神器subDomainsBrute ,感觉不错,本站介绍的方法用于简单的二级域名收集,速度比较快,准备率也算高的了。

脚本集成了两个域名收集的接口,一个是360的,一个是links.cn的,下面是使用方法及脚本。

二级域名收集

二级域名收集源码:

#!/usr/bin/env python
# -*- coding: gbk -*-
# -*- coding: utf-8 -*-
# Date: 2015/9/17
# Created by 独自等待
# 博客 http://www.waitalone.cn/
import sys, os
import urllib2

try:
    from lxml import html
except ImportError:
    raise SystemExit('\n[X] lxml模块导入错误,请执行pip install lxml安装!')


class SubMain():
    '''
    渗透测试域名收集
    '''

    def __init__(self, submain):
        self.submain = submain
        self.url_360 = 'http://webscan.360.cn/sub/index/?url=%s' % self.submain
        self.url_link = 'http://i.links.cn/subdomain/'
        self.link_post = 'domain=%s&b2=1&b3=1&b4=1' % self.submain
        self.sublist = []

    def get_360(self):
        scan_data = urllib2.urlopen(self.url_360).read()
        html_data = html.fromstring(scan_data)
        submains = html_data.xpath("//dd/strong/text()")
        return self.sublist.extend(submains)

    def get_links(self):
        link_data = urllib2.Request(self.url_link, data=self.link_post)
        link_res = urllib2.urlopen(link_data).read()
        html_data = html.fromstring(link_res)
        submains = html_data.xpath("//div[@class='domain']/a/text()")
        submains = [i.replace('http://', '') for i in submains]
        return self.sublist.extend(submains)

    def scan_domain(self):
        self.get_360()
        self.get_links()
        return list(set(self.sublist))


if __name__ == '__main__':
    print '+' + '-' * 50 + '+'
    print '\t    Python 二级域名信息收集工具'
    print '\t   Blog:http://www.waitalone.cn/'
    print '\t\t Code BY: 独自等待'
    print '\t\t Time:2015-09-17'
    print '+' + '-' * 50 + '+'
    if len(sys.argv) != 2:
        print '用法: ' + os.path.basename(sys.argv[0]) + ' 主域名地址'
        print '实例: ' + os.path.basename(sys.argv[0]) + ' waitalone.cn'
        sys.exit()
    domain = sys.argv[1]
    print u'报告爷,正在收集域名信息,请稍候!\n'
    submain = SubMain(domain).scan_domain()
    print u'报告爷,共发现域名信息 [ %d ] 条!\n' % len(submain)
    with open(domain + '.txt', 'wb+') as domain_file:
        for item in submain:
            domain_file.write(item + '\n')
            print item

脚本特点:

1、脚本并非采用暴破的形式,所以速度比较快。

2、从360获取的数据一般都是网站管理员自己添加的,所以准备率比较高。

3、links.cn获取的有部分不是很准确,不影响使用。

4、域名结果默认保存在脚本同目录下,例如waitalone.cn.txt中。

5、大家可以拿去任意更改,请保留版权信息哦。

目前有:3条访客评论,博主回复2

  1. python教程
    2016-01-04 23:58

    原来是利用了360和站长帮手

留下脚印,证明你来过。

*

*

流汗坏笑撇嘴大兵流泪发呆抠鼻吓到偷笑得意呲牙亲亲疑问调皮可爱白眼难过愤怒惊讶鼓掌