web安全之自己寫一個(gè)掃描器
自己來(lái)寫一個(gè)簡(jiǎn)單的目錄掃描器,了解掃描器的運(yùn)轉(zhuǎn)機(jī)制和原理,因?yàn)閜ython寫腳本比較容易所以用python寫一個(gè)網(wǎng)站目錄掃描器。
第一步:我們需要導(dǎo)入所需要的庫(kù)
?
1 import threading 2 import argparse 3 import requests 4 import linecache
?
第二步:定義一些循環(huán)變量和字典,方便多進(jìn)程使用
number_c=0 dir = open("dicc.txt", "r", encoding="UTF-8") len = len(dir.readlines()) print("二十個(gè)線程--開(kāi)始運(yùn)行......")
第三步:編寫class,導(dǎo)入網(wǎng)頁(yè)url和線程的
1 class dirscan: 2 def __init__(self,url): 3 self.url = url
第四步:請(qǐng)求,返回狀態(tài)嗎為200的打印出來(lái)
1 def run(self): 2 global number_c 3 global len 4 while number_c<len: 5 number_c += 1 6 i = linecache.getline(r'dicc.txt',number_c) 7 self.lurl = self.url+i 8 html_result = requests.get(self.lurl) 9 if (html_result.status_code == 200): 10 print("存在",self.lurl)
第五步:使用命令行獲取網(wǎng)站url,并開(kāi)始多線程掃描
1 if __name__ == '__main__': 2 parser = argparse.ArgumentParser() 3 parser.add_argument('url') # add_argument()指定程序可以接受的命令行選項(xiàng) 4 args = parser.parse_args() # parse_args()從指定的選項(xiàng)中返回一些數(shù)據(jù) 5 vehicles = [] 6 for num in range(20): # 設(shè)置線程 7 scan = dirscan(args.url) 8 vehicle = threading.Thread(target=scan.run,) # 新建線程 9 vehicles.append(vehicle) 10 for vehicle in vehicles: 11 vehicle.start() # 分別啟動(dòng)線程 12 for vehicle in vehicles: 13 vehicle.join() # 分別檢查結(jié)束線程 14 print("運(yùn)行結(jié)束")
?
成品展示
?
?
?
第一次寫掃描器,技術(shù)很菜,還請(qǐng)師傅們多多指教
?
本文摘自 :https://www.cnblogs.com/