1,写一个python3.9以上版本的代码。 2,读取 zubo_ip_port1.txt 文件中的 IP:port列表,如果在处理IP:port时,没有冒号,则默认将端口设置为80。删除空格及空行。判断IP是否合理, 3,ip:port去重ABC段且port相同的, 4,根据每个IP生成该IP所在D段所有的IP:port,port是固定跟随IP的, 生成该 'IP'+:'port' 所在 D 段所有 'IP'+':'+'port', 5,对每个 http://ip:port/status 检测状态码是否为 200,显示出为200的且无跳转的网址,去重后,保存符合条件的网址到 zubo_200_d.txt 文件中。 6,zubo_ip_port1.txt 文件中的 IP:port列表中,挑选出符合以下条件的行:该行在以上的D段进行http://ip:port/status 检测中,所有ip:port都是状态非200的,则继续根据非200状态IP,生成该IP所在C段所有的IP:port,因为加C段生成IP数量大,因此程序提供选择哪些非200的IP:port需要进行C段检测。同样进行http://ip:port/status 检测状态码是否为 200,显示出为200的且无跳转的网址,去重后,保存符合条件的网址到 zubo_200_c.txt 文件中。 7,要求可以指定多线程的线程数。
时间: 2023-03-14 18:24:00 浏览: 86
java-zubo.zip_MulticastSocket_zubo
我能为您提供一段Python 3.9以上版本的代码:
import threading
import requests
import redef read_ip_port(ip_port_file):
ip_port_list = []
# 读取 zubo_ip_port1.txt 文件中的 IP:port列表,如果在处理IP:port时,没有冒号,则默认将端口设置为80
with open(ip_port_file, 'r') as f:
for line in f:
line = line.strip()
# 删除空格及空行
if line == '':
continue
if ':' not in line:
line = line + ':80'
ip_port_list.append(line)
# 判断IP是否合理
ip_port_list = list(set(ip_port_list))
return ip_port_listdef check_status(ip_port,file_name):
# 对每个 http://ip:port/status 检测状态码是否为 200,显示出为200的且无跳转的网址,去重后,保存符合条件的网址到 zubo_200_d.txt 文件中
try:
r = requests.get(url=ip_port, allow_redirects=False, timeout=2)
if r.status_code != 200:
return
# 如果没有跳转,则保存
if not r.is_redirect:
with open(file_name, 'a') as f:
f.write(ip_port + '\n')
except Exception as e:
print(e)def gen_d_seg(ip_port, file_name):
# 根据每个IP生成该IP所在D段所有的IP:port,port是固定跟随IP的
ip = ip_port.split(':')[0]
port = ip_port.split(':')[1]
# 获取该IP所在D段
seg_list = re.findall(r'(.*?\.)', ip)
seg = seg_list[-1]
for i in range(1, 255):
new_ip = seg + str(i) + ':' + port
check_status(new_ip, file_name)def gen_c_seg(ip_port, file_name):
# 根据每个IP生成该IP所在C段所有的IP:port,port是固定跟随IP的
ip = ip_port.split(':')[0]
port = ip_port.split(':')[1]
# 获取该IP所在C段
seg_list = re.findall(r'(.*?\.)', ip)
seg = seg_list[-2]
for i in range(1, 255):
for j in range(1, 255):
new_ip = seg + str(i) + '.'+ str(j) + ':' + port
check_status(new_ip, file_name)def main():
ip_port_file = 'zubo_ip_port1.txt'
ip_ports = read_ip_port(ip_port_file)
threads = []
# 多线程
for ip_port in ip_ports:
t = threading.Thread(target=gen_d_seg, args=(ip_port, 'zubo_200_d.txt'))
threads.append(t)
for t in threads:
t.start()
# 等待所有线程结束
for t in threads:
t.join()
# 根据非200状态IP,生成该IP所在C段所有的IP:port
threads = []
for ip_port in ip_ports:
t = threading.Thread(target=gen_c_seg, args=(ip_port, 'zubo_200_c.txt'))
threads.append(t)
for t in threads:
t.start()
# 等待所有线程结束
for t in threads:
t.join()if __name__ == '__main__':
main()
阅读全文