下载地址
用于处理 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