信息收集ip测活-Python脚本编写

编写一个python脚本,下面为实现的功能点:

文件读取与IP提取:读取指定文件夹下的所有txt文件,提取其中的IP地址。

端口号添加:为每个IP地址添加多个指定的端口号。

测活功能:使用socket库进行连接测试,判断IP:端口号是否存活。

多个验证URL,包含国内和国外常见网站,用于更严格地验证代理IP是否可用,

结果保存:将存活的IP:端口号组合保存到新的txt文件中。

测活过程展示:在测活过程中,实时展示每一条测活的结果。

强制终止:设置一个信号处理机制,允许用户强制终止脚本。

多线程/多进程:使用多线程或多进程技术提高并发处理能力。

结果保存:将存活的IP:端口号组合保存到新的txt文件中。

python 复制代码
文件读取与IP提取
首先,我们需要读取指定文件夹下的所有txt文件,并从中提取IP地址。可以使用Python的os模块来遍历文件夹,re模块来提取IP地址。

import os 
import re 
 
def extract_ips_from_files(folder_path): 
    ip_pattern = re.compile(r'\b(?:\d{1,3}\.){3}\d{1,3}\b')  
    ips = [] 
    for filename in os.listdir(folder_path):  
        if filename.endswith('.txt'):  
            with open(os.path.join(folder_path,  filename), 'r') as file: 
                content = file.read()  
                ips.extend(ip_pattern.findall(content))  
    return ips 

端口号添加
为每个IP地址添加多个指定的端口号。

def add_ports_to_ips(ips, ports): 
    ip_port_pairs = [(ip, port) for ip in ips for port in ports] 
    return ip_port_pairs 

测活功能
使用socket库进行连接测试,判断IP:端口号是否存活。

import socket 
 
def is_ip_port_alive(ip, port): 
    try: 
        with socket.socket(socket.AF_INET,  socket.SOCK_STREAM) as s: 
            s.settimeout(2)  
            s.connect((ip,  port)) 
        return True 
    except (socket.timeout,  ConnectionRefusedError): 
        return False 

多个验证URL
包含国内和国外常见网站,用于更严格地验证代理IP是否可用。

import requests 
 
def validate_proxy_with_url(ip, port, url): 
    proxies = { 
        'http': f'http://{ip}:{port}', 
        'https': f'http://{ip}:{port}' 
    } 
    try: 
        response = requests.get(url,  proxies=proxies, timeout=5) 
        return response.status_code  == 200 
    except requests.RequestException: 
        return False 

结果保存
将存活的IP:端口号组合保存到新的txt文件中。

python
复制
def save_results(results, output_file): 
    with open(output_file, 'w') as file: 
        for ip, port in results: 
            file.write(f'{ip}:{port}\n')  

测活过程展示
在测活过程中,实时展示每一条测活的结果。

def display_live_results(ip, port, is_alive): 
    status = 'Alive' if is_alive else 'Dead' 
    print(f'Testing {ip}:{port} - {status}') 

强制终止
设置一个信号处理机制,允许用户强制终止脚本。

import signal 
import sys 
 
def signal_handler(sig, frame): 
    print('Script terminated by user.') 
    sys.exit(0)  
 
signal.signal(signal.SIGINT,  signal_handler) 

多线程/多进程
使用多线程或多进程技术提高并发处理能力。
from concurrent.futures  import ThreadPoolExecutor 
 
def test_ip_port_pairs(ip_port_pairs, urls): 
    alive_pairs = [] 
    with ThreadPoolExecutor(max_workers=10) as executor: 
        futures = [] 
        for ip, port in ip_port_pairs: 
            futures.append(executor.submit(is_ip_port_alive,  ip, port)) 
         
        for (ip, port), future in zip(ip_port_pairs, futures): 
            is_alive = future.result()  
            display_live_results(ip, port, is_alive) 
            if is_alive: 
                for url in urls: 
                    if validate_proxy_with_url(ip, port, url): 
                        alive_pairs.append((ip,  port)) 
                        break 
    return alive_pairs 

主函数
将以上功能整合到主函数中。

def main(): 
    folder_path = 'path/to/your/folder' 
    output_file = 'alive_proxies.txt'  
    ports = [80, 443, 8080] 
    urls = ['http://www.google.com',  'http://www.baidu.com']  
 
    ips = extract_ips_from_files(folder_path) 
    ip_port_pairs = add_ports_to_ips(ips, ports) 
    alive_pairs = test_ip_port_pairs(ip_port_pairs, urls) 
    save_results(alive_pairs, output_file) 
 
if __name__ == '__main__': 
    main() 
相关推荐
大海绵啤酒肚19 分钟前
Kubernetes | Rocky Linux 8.9 安装部署 kubernetes集群
linux·容器·kubernetes
Gratitute_林腾28 分钟前
neo4j-在Linux中安装neo4j
linux·neo4j
APItesterCris1 小时前
除了 Python,还有哪些语言可以调用淘宝 API?
大数据·开发语言·数据库·python
Ronin-Lotus2 小时前
深度学习篇---计算机视觉任务&模型的剪裁、量化、蒸馏
人工智能·pytorch·python·深度学习·计算机视觉·paddlepaddle·模型剪裁、量化、蒸馏
go54631584652 小时前
如何使用深度学习中的 Transformer 算法进行视频目标检测
开发语言·python
查理零世2 小时前
【算法】动态规划专题④ ——LCS(最长公共子序列)+ LPS(最长回文子序列) python
python·算法·动态规划
游王子3 小时前
Python NumPy(12):NumPy 字节交换、NumPy 副本和视图、NumPy 矩阵库(Matrix)
开发语言·python·numpy
我是苏苏3 小时前
python开发:爬虫示例——GET和POST请求处理
开发语言·爬虫·python
m0_748248654 小时前
GraphRAG如何使用ollama提供的llm model 和Embedding model服务构建本地知识库
python·flask·embedding
洪信智能4 小时前
DeepSeek技术发展研究:驱动因素、社会影响与未来展望
人工智能·python