加载字典文件,扫描网站潜在目录

该博客介绍了一个Python脚本,通过多线程和队列技术结合asp网站目录字典,利用随机user-agent进行网络请求,扫描并揭示网站的潜在目录。扫描结果保存到result.html,同时提供–help选项和实时进度显示。
摘要由CSDN通过智能技术生成

1.使用了多线程+队列的方式
2.使用了随机user-agent头来发起网络请求
3.使用了asp网站目录字典,拼接url发起网络请求,探查网站是否存在潜在url
4.使用了Figlet工具转换字符做脚本LOGO,提升美观性
5.使用了optparse模块,做调用脚本的参数,具备了–help帮助说明,可设置默认线程数
6.使用了sys.stdout模块,在cmd命令行内动态展示扫描过程的详情,显示待扫描数、扫描总数、剩余百分比

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# 目录扫描,敏感文件扫描
# 字典很重要是扫描器的基石
# 取出字典内容,和目标网站url进行拼接,发送网络请求进行识别
# 使用Figlet工具转换字符做脚本LOGO      http://www.network-science.de/ascii/
# 使用optparse参数说明模块    https://docs.python.org/2/library/optparse.html
# baidu搜目标网站语法  inurl:admin.asp
# asp网站目录字典txt  asp_dir_dic.txt
# 随机user-agent头 user_agent_list.py

import requests
from queue import Queue
import sys
import threading
import user_agent_list
from optparse import OptionParser


class DirScanMain:
    def __init__(self, options):
        self.url = options.url
        self.ext = options.ext
        self.count = options.count

    # 内部类DirScan
    class DirScan(threading.Thread):
        # 构造参数,创建原始的线程对象,拿到传入的queue队列对象和total队列总数
        def __init__(self, queue, total):
            threading.Thread.__init__(self)
            self.queue = queue
            self.total = total

        # 一个run方法,谁来调用这个方法?
        def run(self):
            # 当队列queue的数量不为空时,就开始干活了
            while not self.queue.empty():
                # 取出队列里的url
                url = self.queue.get()
                # 打印queue队列中的第一个url看看
                # print(url)

                # 让线程对象执行self.msg方法
                threading.Thread(target=self.msg).start()

                try:
                    r = requests.get(url=url, headers=user_agent_list.get_user_agent(), timeout=8, )

                    # 发送网络请求,如果我们拼接的url,访问是存在的,我们就写到result.html文件中,并且调用sys.stdout来cmd命令台输出
                    if r.status_code == 200:
                        # print('[*]' + url)

                        # 调用sys系统模块stdout输出展示信息
                        sys.stdout.write('\r' + '[*]扫描到存在的网址=======>%s\t\n' % (url))

                        # 开始往result.html文件中追加写入信息
                        f = open('result.html', 'a+')

                        # 按照html语言语法,把url地址写入
                        f.write('<a href="' + url + '"" target="_blank">' + url + '</a>')
                        # \r是回车(光标移动到本行的行首),\n是换行(光标所在位置向下移动一行),\r\n是回车换行(光标回到下一行的行首)
                        f.write('\r\n</br>')
                        f.close()

                except Exception as e:
                    print(e)
                    pass

        # 获得扫描了多少个的信息的方法
        def msg(self):
            # self.total是总任务数,self.queue.qsize()是队列里还剩的数
            # print(self.total,self.queue.qsize())

            # 输出百分比,队列里还剩的数/总数
            per = ('{:.0%}'.format(self.queue.qsize() / self.total))

            msg = 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值