虽然功能不如dirsearch,御剑等工具相比,但是供学习参考还是不错的。
代码如下:
# 1.输入目标url和线程大小
# 2. 以队列的形式获取要爆破的路径
# 3. 定义路径获取函数get_path()
# 4. 利用多线程进行url目录爆破
# 5. 定义目录爆破函数get_url()
#import urllib3
import requests
import queue
import threading
import sys
import user_agent
# 3.定义路径获取函数get_path()
def get_path(url,file="D://dict/dict.txt"): # 可以自定义字典文件
path_queue = queue.Queue()
f = open(file,"r")
for i in f.readlines():
path = url + i.strip()
#print(path)
path_queue.put(path)
f.close()
return path_queue
# 5. 定义目录爆破函数get_url()
def get_url(path_queue):
while not path_queue.empty():
try:
headers = { # 改变headers头,使该程序更像客户端
"User-Agent": "" + user_agent.generate_user_agent() + ""
}
url = path_queue.get()
response = requests.get(url,headers=headers)
if response.status_code == 200:
print("[%d] = >%s" %(response.status_code,url))
except:
pass
else:
sys.exit()
def main(url,threadNum):
# 2. 以队列的形式获取要爆破的路径
path_queue = get_path(url)
# 4. 利用多线程进行url目录爆破
threads = []
for i in range(threadNum):
t = threading.Thread(target=get_url,args=(path_queue,))
threads.append(t)
t.start()
for t in threads:
t.join()
if __name__=="__main__":
# 1.输入目标url和线程大小
url = input("please input url:")
threadNum = int(input("please input threads:"))
main(url,threadNum)
结果如下: