python 實現的IP 存活掃描指令碼
阿新 • • 發佈:2020-12-12
下載地址
ActiveOrNot
用於處理 oneforall 等子域名掃描工具的結果去重 + 主機存活掃描
引數
-f --file 指定存放ip或子域名的檔案,預設 ip.txt -t --thread 設定執行緒數,預設 50 python3 ActiveOrNot.py -f ip.txt -t 12
具體程式碼 ActiveOrNot.py
from threading import Thread from queue import Queue import requests from time import time import argparse headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/83.0.4103.116 Safari/537.36" } def ping(url,new_ip): url = url.strip() if (not url.startswith('http://')) and (not url.startswith('https://')): url = 'http://' + url try: req = requests.get(url,headers=headers,timeout=2) new_ip.put(url + ' -- ' + str(req.status_code)) print("%s 存活" % url) except: print("%s 不存活" % url) def new_list(file): with open(file,'r') as f: new_ip = [] ip_list = f.readlines() for ip in ip_list: ip = ip.strip().replace('http://','').replace('https://','') if ip: if not (ip in new_ip): new_ip.append(ip) return new_ip def main(file,th): begin_time = time() new_ip = Queue() ip_list = new_list(file) j = 0 length = len(ip_list) while j < length: threads = [] for i in range(th): t = Thread(target=ping,args=(ip_list[j],new_ip)) t.start() threads.append(t) j += 1 if j == length: break for thread in threads: thread.join() with open('NewIP.txt','a+') as nf: while not new_ip.empty(): nf.write(new_ip.get()+'\n') end_time = time() run_time = end_time - begin_time print("總共耗時 %s 秒"% run_time) if __name__ == '__main__': parser = argparse.ArgumentParser(description='url active scan') parser.add_argument("-f","--file",help="指定檔案",default='ip.txt') parser.add_argument("-t","--thread",help="設定執行緒",default=50) args = parser.parse_args() file = args.file th = args.thread main(file,th)
以上就是python 實現的IP 存活掃描指令碼的詳細內容,更多關於python ip存活掃描的資料請關注我們其它相關文章!