下载地址
用于处理 oneforall 等子域名扫描工具的结果去重 + 主机存活扫描
参数
1
2
3
4
|
具体代码 ActiveOrNot.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
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() 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存活扫描的资料请关注服务器之家其它相关文章!
原文链接:https://www.cnblogs.com/wjrblogs/p/13276021.html