目录扫描
字典下载地址: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))