在Linux环境下,通过Python脚本自动检测代理服务器的可用性,可有效提升网络请求的稳定性。以下是一个完整的解决方案,包含代理验证、性能测试及日志记录功能。
一、核心实现代码****
python
| import requests | ||||
|---|---|---|---|---|
| import time | ||||
| from datetime import datetime | ||||
| import logging | ||||
| # 配置日志 | ||||
| logging.basicConfig( | ||||
| filename='proxy_checker.log', | ||||
| level=logging.INFO, | ||||
| format='%(asctime)s - %(levelname)s - %(message)s' | ||||
| ) | ||||
| def check_proxy(proxy_url, test_url="httpbin.org/ip", timeout=5): | ||||
| """ | ||||
| 检测代理可用性 | ||||
| :param proxy_url: 代理地址(格式:http://ip:port 或 http://user:pass@ip:port) | ||||
| :param test_url: 测试目标URL | ||||
| :param timeout: 超时时间(秒) | ||||
| :return: (bool, float, str) 可用性、响应时间、错误信息 | ||||
| """ | ||||
| proxies = {"http": proxy_url, "https": proxy_url} | ||||
| start_time = time.time() | ||||
| try: | ||||
| response = requests.get(test_url, proxies=proxies, timeout=timeout) | ||||
| if response.status_code == 200: | ||||
| elapsed = time.time() - start_time | ||||
| logging.info(f"代理可用: {proxy_url} 响应时间: {elapsed:.2f}秒") | ||||
| return True, elapsed, "Success" | ||||
| except Exception as e: | ||||
| error_msg = str(e) | ||||
| logging.warning(f"代理不可用: {proxy_url} 错误: {error_msg}") | ||||
| return False, None, error_msg | ||||
| if name == "main": | ||||
| # 代理列表(可从文件或数据库动态加载) | ||||
| proxies = [ | ||||
| "http://192.168.1.100:8080", | ||||
| "http://user:pass@192.168.1.101:3128" | ||||
| ] | ||||
| # 批量检测 | ||||
| for proxy in proxies: | ||||
| is_available, latency, error = check_proxy(proxy) | ||||
| print(f"代理: {proxy} | 可用: {is_available} | 延迟: {latency}秒 | 错误: {error}") |
通过此脚本,Linux系统管理员可快速搭建自动化代理检测系统,确保网络请求始终通过最优代理路径,适用于爬虫、数据采集等需要代理切换的场景。