目录扫描

目录扫描

字典下载地址:https://gitee.com/jesson-deng/dict/blob/master/dir.txt

扫描代码如下:

# 1. 用户输 URL和 线程数
# 2. 将目录爆破字典添加到队列中
# 3. 创建线程
# 4. 定义目录爆破函数
import time
import queue
import threading
import urllib3
import sys

def main(URL, THREAD_NUMBER):
    # 2. 获取已添加好字典的队列
    Que = Que_add(URL)

    # 3. 创建线程,并使用多线程处理目录爆破
    threads = []
    for i in range(THREAD_NUMBER):
        t = threading.Thread(target=get_url,args=(Que, ))  #创建一个多线程的对象
        threads.append(t) #将多线程的对象传到数组
        t.start()
    for t in threads:
        t.join() #使用 t.join进行阻塞


# 2. 将目录爆破字典添加到队列中
def Que_add(URL):
    Que = queue.Queue()
    with open("dir.txt","r") as f:
        for i in f:
            path = URL + i.strip()
            Que.put(path)
    return Que


# 4. 定义目录爆破函数
def get_url(Que,):
    while not Que.empty():
        try:
            url = Que.get()
            http = urllib3.PoolManager()
            response = http.request("GET", url)
            if response.status == 200:
                print(response.status, url)
        except:
            pass
    else:
        sys.exit()


if __name__ == '__main__':
    start = time.time()
    URL = input("请输入需要目录爆破的 URL:")
    THREAD_NUMBER = int(input("请输入所需线程数:"))
    main(URL, THREAD_NUMBER)
    end = time.time()
    print("总共耗时:%2f" % (end - start))

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注