From 366a84fa89bca0edbd76f09e174e5ac47fbf9f28 Mon Sep 17 00:00:00 2001 From: MasonLiu <2857911564@qq.com> Date: Mon, 15 Jun 2026 00:49:26 +0800 Subject: [PATCH] beta 1.0 --- README.md | 267 ++++ config.yaml | 17 + core/__init__.py | 16 + core/data_source.py | 219 +++ core/health_checker.py | 192 +++ core/models.py | 98 ++ core/proxy_manager.py | 266 ++++ core/simple_proxy_forwarder.py | 385 +++++ diagnose.py | 124 ++ gui/__init__.py | 4 + gui/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 245 bytes gui/__pycache__/main_window.cpython-312.pyc | Bin 0 -> 36291 bytes gui/main_window.py | 587 ++++++++ local.json | 34 + logs/whereami.log | 307 ++++ main.py | 65 + old/old_design.png | Bin 0 -> 426686 bytes old/page.html | 739 ++++++++++ old/start.sh | 46 + old/开发文档.md | 248 ++++ proxy.json | 1442 +++++++++++++++++++ requirements.txt | 31 + scratch.py | 172 +++ start.bat | 44 + 24 files changed, 5303 insertions(+) create mode 100644 README.md create mode 100644 config.yaml create mode 100644 core/__init__.py create mode 100644 core/data_source.py create mode 100644 core/health_checker.py create mode 100644 core/models.py create mode 100644 core/proxy_manager.py create mode 100644 core/simple_proxy_forwarder.py create mode 100644 diagnose.py create mode 100644 gui/__init__.py create mode 100644 gui/__pycache__/__init__.cpython-312.pyc create mode 100644 gui/__pycache__/main_window.cpython-312.pyc create mode 100644 gui/main_window.py create mode 100644 local.json create mode 100644 logs/whereami.log create mode 100644 main.py create mode 100644 old/old_design.png create mode 100644 old/page.html create mode 100644 old/start.sh create mode 100644 old/开发文档.md create mode 100644 proxy.json create mode 100644 requirements.txt create mode 100644 scratch.py create mode 100644 start.bat diff --git a/README.md b/README.md new file mode 100644 index 0000000..bff3cd1 --- /dev/null +++ b/README.md @@ -0,0 +1,267 @@ +# WhereAmI - 多协议轮转代理工具 + +## 项目简介 + +WhereAmI 是一个基于 Python 和 PyQt6 的现代化多协议轮转代理工具,能够将各种外部代理(HTTP/HTTPS/SOCKS4/SOCKS5)通过本地 SOCKS5 转发服务部署到 `127.0.0.1:8745`,配合 Proxifier 等工具使用。 + +## 核心特性 + +### 🚀 三步工作流程 +1. **验证代理**:并发测试所有代理的连通性,对 SOCKS5 代理进行握手验证 +2. **获取代理**:从验证通过的代理列表中选择可用代理作为上游代理 +3. **转发到 8745 端口**:启动 SOCKS5 服务器监听 8745 端口,双向转发数据 + +### 🎯 主要功能 +- ✅ **多协议支持**:HTTP、HTTPS、SOCKS4、SOCKS5 +- ✅ **自动获取代理**:从指定网页抓取代理列表 +- ✅ **本地文件支持**:从 JSON 文件加载代理配置 +- ✅ **健康检测**:TCP 延迟测试 + Google 连通性测试 +- ✅ **代理轮转**:手动切换 / 自动定时切换 +- ✅ **实时状态监控**:GUI 界面显示代理状态、延迟、统计信息 +- ✅ **日志记录**:详细的运行日志,支持文件和控制台输出 + +## 技术栈 + +- **开发语言**: Python 3.9+ +- **GUI 框架**: PyQt6 +- **网络请求**: requests, aiohttp +- **HTML 解析**: BeautifulSoup4, lxml +- **配置文件**: PyYAML +- **SOCKS 支持**: PySocks +- **日志系统**: loguru +- **加密**: cryptography + +## 安装步骤 + +### 1. 克隆项目 +```bash +git clone +cd WhereAmI +``` + +### 2. 安装依赖 +```bash +pip install -r requirements.txt +``` + +### 3. 运行程序 +```bash +python main.py +``` + +## 使用说明 + +### 快速开始 + +1. **启动程序** + ```bash + python main.py + ``` + +2. **配置代理源** + - 点击 "⚙️ 配置" 按钮 + - 设置自动获取 URL(默认已配置为泰国代理网站) + - 或启用本地文件模式 + +3. **获取代理** + - 点击 "🌐 获取免费代理" 按钮 + - 程序会自动从网页抓取并检测代理 + +4. **启动服务** + - 点击 "▶ 开始服务" 按钮 + - 服务将在 `127.0.0.1:8745` 启动 SOCKS5 代理 + +5. **配置 Proxifier** + - 打开 Proxifier + - 添加代理服务器:`127.0.0.1:8745`,类型选择 SOCKS5 + - 设置代理规则,将需要代理的应用添加到规则中 + +6. **切换代理** + - 手动切换:点击 "🔄 切换下一个" 按钮 + - 自动切换:在配置中设置为 auto 模式 + +### 配置说明 + +配置文件 `config.yaml` 包含以下主要配置项: + +```yaml +# 代理源配置 +proxy_sources: + auto_fetch: + enabled: true # 是否启用自动获取 + url: "http://cn.freevpnnode.com/free-proxy-for-thailand/" # 抓取URL + refresh_interval: 10 # 刷新间隔(分钟) + local_file: + enabled: true # 是否启用本地文件 + path: "local.json" # 本地文件路径 + +# 轮转策略 +rotation: + mode: "manual" # manual | auto + auto_switch_interval: 300 # 自动切换间隔(秒) + latency_threshold: 500 # 延迟阈值(毫秒) + +# 输出配置 +output: + host: "127.0.0.1" # 监听地址 + port: 8745 # 监听端口 + +# 检测配置 +health_check: + timeout: 5 # TCP连接超时(秒) + connectivity_test_url: "https://www.google.com/" + connectivity_timeout: 10 # 连通性测试超时(秒) + max_failures: 3 # 最大失败次数 + retry_delay: 600 # 重试延迟(秒) +``` + +### 本地代理文件格式 + +项目使用两个JSON文件来管理代理: + +#### 1. `proxy.json` - 自动抓取的代理(自动生成) +此文件由程序自动创建,保存从网页抓取的代理列表。**不要手动编辑此文件**,每次获取新代理时会被覆盖。 + +#### 2. `local.json` - 用户手动添加的代理(推荐) +此文件用于存放您自己的可靠代理。格式示例: + +```json +[ + { + "ip_address": "192.168.1.100", + "port": 1080, + "username": "no need", + "password": "no need", + "protocol": "socks5", + "country": "CN", + "anonymity": "elite", + "speed": "fast", + "uptime_percentage": "99%", + "response_time": "100ms", + "latency": "50ms", + "last_updated": "now" + } +] +``` + +**必填字段:** +- `ip_address`: 代理 IP 地址 +- `port`: 代理端口 +- `username`: 用户名(无认证填 "no need") +- `password`: 密码(无认证填 "no need") +- `protocol`: 协议类型(http/https/socks4/socks5) + +**可选字段:** +- `country`: 国家代码 +- `anonymity`: 匿名级别 +- `speed`: 速度描述 +- `uptime_percentage`: 在线率 +- `response_time`: 响应时间 +- `latency`: 延迟 +- `last_updated`: 最后更新时间 + +## GUI 界面说明 + +### 主界面布局 + +#### 顶部状态栏 +- **状态指示器**:显示服务运行状态(运行中/已停止) +- **当前代理信息**:显示正在使用的代理 IP、端口、协议、延迟 +- **统计信息**:显示总代理数、可用数、优秀数、不可用数 + +#### 控制按钮区 +- **▶ 开始服务**:启动 SOCKS5 代理服务(需要先选择一个代理节点) +- **⏹ 停止服务**:停止代理服务 +- **🔄 切换下一个**:切换到下一个可用代理 +- **🌐 获取免费代理**:从网页抓取代理并检测(默认功能) +- **📁 使用本地代理**:仅加载 `local.json` 中的代理 +- **🔧 其他代理(预留)**:暂未实现,预留用于后续测试 +- **⚙️ 配置**:打开配置对话框 + +#### 标签页 +1. **代理列表**:显示所有代理的详细信息表格 + - 列:IP地址、端口、协议、国家、状态、延迟、匿名级别、速度、运行时间、最后更新 + - 状态颜色:🟢 优秀、🟡 可用、🔴 不可用、⚪ 未知 + - **过滤选项**:"显示不可用代理"复选框,控制是否显示不可用的代理 + - **选择代理**:点击表格行来选择要使用的代理节点 + +2. **连接日志**:显示所有通过代理的连接记录 + - 格式:`[时间戳] 本地IP:端口 -> 远程代理IP:端口` + - 示例:`[2026-06-14 22:30:15] 127.0.0.1:54321 -> 192.168.1.100:1080` + - 支持清空日志 + +3. **日志**:显示程序运行日志 + - 支持清空日志 + - 显示时间戳和详细操作信息 + +## 常见问题 + +### Q1: 如何测试代理是否工作? +A: 启动服务后,使用 curl 命令测试: +```bash +curl -x socks5://127.0.0.1:8745 https://ip.sb +``` + +### Q2: 为什么有些代理显示为不可用? +A: 代理可能因为以下原因被标记为不可用: +- TCP 连接超时(>5秒) +- Google 连通性测试失败 +- 连续失败 3 次以上 + +### Q3: 如何添加自己的代理? +A: 编辑 `local.json` 文件,按照格式添加您的可靠代理信息。程序会自动合并 `proxy.json`(抓取的代理)和 `local.json`(手动添加的代理)。建议优先使用 `local.json` 添加稳定可靠的代理。 + +### Q4: 端口 8745 被占用怎么办? +A: 在配置中修改监听端口,或使用以下命令查找占用进程: +```bash +netstat -ano | findstr "8745" +``` + +### Q5: 如何实现自动切换代理? +A: 在配置中将 `rotation.mode` 设置为 `"auto"`,并设置 `auto_switch_interval` 为期望的切换间隔(秒)。 + +## 项目结构 + +``` +WhereAmI/ +├── main.py # 主入口 +├── config.yaml # 配置文件 +├── proxy.json # 自动抓取的代理(程序自动生成) +├── local.json # 用户手动添加的代理(推荐) +├── requirements.txt # 依赖包 +├── README.md # 项目说明 +├── core/ # 核心逻辑 +│ ├── __init__.py +│ ├── models.py # 数据模型 +│ ├── data_source.py # 数据源获取 +│ ├── health_checker.py # 健康检测器 +│ ├── proxy_manager.py # 代理管理器 +│ └── simple_proxy_forwarder.py # 简化转发器 +├── gui/ # GUI界面 +│ ├── __init__.py +│ └── main_window.py # 主窗口 +├── utils/ # 工具类 +│ └── __init__.py +└── logs/ # 日志目录 + └── whereami.log +``` + +## 注意事项 + +1. **首次运行**:请确保安装了所有依赖包 +2. **代理质量**:免费代理稳定性较差,建议定期更新代理列表 +3. **安全性**:不要在免费代理上登录敏感账户或传输机密数据 +4. **法律合规**:请遵守当地法律法规,合理使用代理服务 + +## 许可证 + +本项目仅供学习和研究使用。 + +## 贡献 + +欢迎提交 Issue 和 Pull Request! + +--- + +**版本**: v1.0.0 +**更新日期**: 2026-06-14 diff --git a/config.yaml b/config.yaml new file mode 100644 index 0000000..60427a6 --- /dev/null +++ b/config.yaml @@ -0,0 +1,17 @@ +output: + host: 127.0.0.1 + port: 8745 +proxy_sources: + auto_fetch: + enabled: true + output_file: proxy.json + pages: 3 + refresh_interval: 10 + url: http://cn.freevpnnode.com/free-proxy-for-thailand + local_file: + enabled: true + path: local.json +rotation: + auto_switch_interval: 300 + latency_threshold: 500 + mode: manual diff --git a/core/__init__.py b/core/__init__.py new file mode 100644 index 0000000..fd91416 --- /dev/null +++ b/core/__init__.py @@ -0,0 +1,16 @@ +"""WhereAmI 核心模块""" +from .models import ProxyInfo, ProxyProtocol, ProxyStatus +from .data_source import DataSource +from .health_checker import HealthChecker +from .proxy_manager import ProxyManager +from .simple_proxy_forwarder import SimpleProxyForwarder + +__all__ = [ + 'ProxyInfo', + 'ProxyProtocol', + 'ProxyStatus', + 'DataSource', + 'HealthChecker', + 'ProxyManager', + 'SimpleProxyForwarder' +] diff --git a/core/data_source.py b/core/data_source.py new file mode 100644 index 0000000..85ffdfb --- /dev/null +++ b/core/data_source.py @@ -0,0 +1,219 @@ +"""代理数据源获取模块""" +import requests +from bs4 import BeautifulSoup +import json +import os +from typing import List, Optional +from datetime import datetime +from loguru import logger +from .models import ProxyInfo, ProxyProtocol + + +class DataSource: + """代理数据源管理器""" + + def __init__(self, config: dict): + self.config = config + self.logger = logger + + def fetch_from_web(self, url: str, output_file: str = "proxy.json", pages: int = 1) -> List[ProxyInfo]: + """从网页获取代理列表并保存到文件 + + Args: + url: 基础URL(不含页码参数) + output_file: 输出文件路径 + pages: 抓取的页数,默认1页 + """ + self.logger.info(f"开始从网页获取代理: {url} (共{pages}页)") + all_proxies = [] + + try: + headers = { + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36' + } + + # 抓取多页 + for page in range(1, pages + 1): + # 构建带页码的URL + if '?' in url: + page_url = f"{url}&page={page}" + else: + page_url = f"{url}?page={page}" + + self.logger.info(f"正在获取第 {page}/{pages} 页: {page_url}") + + try: + response = requests.get(page_url, headers=headers, timeout=30) + response.encoding = 'utf-8' + + if response.status_code != 200: + self.logger.warning(f"第{page}页获取失败,状态码: {response.status_code}") + continue + + proxies = self._parse_html(response.text) + self.logger.info(f"第{page}页成功获取 {len(proxies)} 个代理") + all_proxies.extend(proxies) + + except Exception as e: + self.logger.error(f"第{page}页获取失败: {str(e)}") + continue + + # 去重(基于IP+端口) + seen = set() + unique_proxies = [] + for proxy in all_proxies: + key = f"{proxy.ip_address}:{proxy.port}" + if key not in seen: + seen.add(key) + unique_proxies.append(proxy) + + self.logger.info(f"成功获取 {len(unique_proxies)} 个唯一代理(共{len(all_proxies)}个,去重后)") + + # 保存到文件 + if unique_proxies: + self.save_to_file(unique_proxies, output_file) + self.logger.info(f"代理已保存到: {output_file}") + + except Exception as e: + self.logger.error(f"获取网页代理失败: {str(e)}") + + return unique_proxies + + def _parse_html(self, html: str) -> List[ProxyInfo]: + """解析HTML提取代理信息(基于page.html结构)""" + proxies = [] + soup = BeautifulSoup(html, 'html.parser') + + # 查找表格 + table = soup.find('table', class_='table') + if not table: + self.logger.warning("未找到代理表格") + return proxies + + # 解析表格行 + tbody = table.find('tbody') + if not tbody: + return proxies + + rows = tbody.find_all('tr') + for row in rows: + try: + cells = row.find_all('td') + if len(cells) < 12: + continue + + # 提取字段(根据page.html结构) + ip_address = cells[0].text.strip() + port_text = cells[1].text.strip() + + # 用户名和密码隐藏在img的data-text属性中 + username_img = cells[2].find('img') + username = username_img.get('data-text', 'no need') if username_img else 'no need' + + password_img = cells[3].find('img') + password = password_img.get('data-text', 'no need') if password_img else 'no need' + + # 国家 + country_link = cells[4].find('a') + country = country_link.get('title', '') if country_link else '' + + # 协议 + protocol_text = cells[5].text.strip().lower() + + # 匿名级别 + anonymity = cells[6].text.strip() + + # 速度 + speed = cells[7].text.strip() + + # 运行时间百分比 + uptime = cells[8].text.strip() + + # 响应时间 + response_time = cells[9].text.strip() + + # 延迟 + latency = cells[10].text.strip() + + # 更新时间 + last_updated = cells[11].text.strip() + + # 验证必要字段 + if not ip_address or not port_text: + continue + + # 转换端口为整数 + try: + port = int(port_text) + except ValueError: + continue + + # 映射协议 + protocol_map = { + 'http': ProxyProtocol.HTTP, + 'https': ProxyProtocol.HTTPS, + 'socks4': ProxyProtocol.SOCKS4, + 'socks5': ProxyProtocol.SOCKS5 + } + protocol = protocol_map.get(protocol_text, ProxyProtocol.SOCKS5) + + proxy = ProxyInfo( + ip_address=ip_address, + port=port, + username=username, + password=password, + protocol=protocol, + country=country, + anonymity=anonymity, + speed=speed, + uptime_percentage=uptime, + response_time=response_time, + latency=latency, + last_updated=last_updated + ) + proxies.append(proxy) + + except Exception as e: + self.logger.debug(f"解析代理行失败: {str(e)}") + continue + + return proxies + + def load_from_file(self, filepath: str) -> List[ProxyInfo]: + """从本地文件加载代理列表""" + self.logger.info(f"从本地文件加载代理: {filepath}") + proxies = [] + + if not os.path.exists(filepath): + self.logger.warning(f"文件不存在: {filepath}") + return proxies + + try: + with open(filepath, 'r', encoding='utf-8') as f: + data = json.load(f) + + if isinstance(data, list): + for item in data: + try: + proxy = ProxyInfo.from_dict(item) + proxies.append(proxy) + except Exception as e: + self.logger.debug(f"解析代理项失败: {str(e)}") + continue + + self.logger.info(f"成功加载 {len(proxies)} 个代理") + + except Exception as e: + self.logger.error(f"加载本地文件失败: {str(e)}") + + return proxies + + def save_to_file(self, proxies: List[ProxyInfo], filepath: str): + """保存代理列表到文件""" + try: + data = [proxy.to_dict() for proxy in proxies] + with open(filepath, 'w', encoding='utf-8') as f: + json.dump(data, f, indent=2, ensure_ascii=False) + self.logger.info(f"保存 {len(proxies)} 个代理到文件: {filepath}") + except Exception as e: + self.logger.error(f"保存文件失败: {str(e)}") diff --git a/core/health_checker.py b/core/health_checker.py new file mode 100644 index 0000000..b689f15 --- /dev/null +++ b/core/health_checker.py @@ -0,0 +1,192 @@ +"""代理健康检测模块""" +import socket +import requests +import threading +import time +from typing import List, Callable, Optional +from concurrent.futures import ThreadPoolExecutor, as_completed +from datetime import datetime, timedelta +from loguru import logger +from .models import ProxyInfo, ProxyStatus + + +class HealthChecker: + """代理健康检测器""" + + def __init__(self, config: dict): + self.config = config + self.logger = logger + self.health_config = config.get('health_check', {}) + + self.timeout = self.health_config.get('timeout', 5) + self.connectivity_url = self.health_config.get('connectivity_test_url', 'https://www.google.com/') + self.connectivity_timeout = self.health_config.get('connectivity_timeout', 10) + self.max_failures = self.health_config.get('max_failures', 3) + self.retry_delay = self.health_config.get('retry_delay', 600) + + self._check_lock = threading.Lock() + self._executor = ThreadPoolExecutor(max_workers=10) + + def check_proxy(self, proxy: ProxyInfo) -> ProxyStatus: + """检测单个代理的健康状态""" + with self._check_lock: + proxy.status = ProxyStatus.CHECKING + proxy.last_check = datetime.now() + + try: + # 步骤1: TCP连接测试(快速检查) + start_time = time.time() + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock.settimeout(self.timeout) + + result = sock.connect_ex((proxy.ip_address, proxy.port)) + tcp_elapsed = (time.time() - start_time) * 1000 # 转换为毫秒 + + sock.close() + + if result != 0: + raise ConnectionError(f"无法连接到 {proxy.get_address()}") + + proxy.latency_ms = tcp_elapsed + + # 步骤2: 测试Google连通性 + if not self._test_connectivity(proxy): + raise ConnectionError("Google连通性测试失败") + + # 步骤3: 连通性成功后,再次测试真实延迟 + start_time = time.time() + sock2 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock2.settimeout(self.timeout) + + result2 = sock2.connect_ex((proxy.ip_address, proxy.port)) + real_elapsed = (time.time() - start_time) * 1000 # 转换为毫秒 + + sock2.close() + + if result2 == 0: + # 使用第二次测试的真实延迟 + proxy.latency_ms = real_elapsed + + # 判断等级(基于真实延迟) + if real_elapsed < 200: + proxy.status = ProxyStatus.EXCELLENT + else: + proxy.status = ProxyStatus.AVAILABLE + proxy.consecutive_failures = 0 + + except Exception as e: + proxy.consecutive_failures += 1 + proxy.latency_ms = 9999 + proxy.status = ProxyStatus.UNAVAILABLE + + self.logger.debug(f"代理 {proxy.get_address()} 检测失败: {str(e)}") + + return proxy.status + + def _test_connectivity(self, proxy: ProxyInfo) -> bool: + """测试代理的Google连通性 + + 使用多种方法测试,提高准确性: + 1. 首先尝试 HEAD 请求(类似 curl -I) + 2. 如果失败,尝试 GET 请求 + 3. 支持多个测试URL + """ + test_urls = [ + 'https://www.google.com/', + 'https://www.google.com/generate_204', # 专门用于连通性测试 + 'http://www.google.com/', + ] + + for test_url in test_urls: + try: + proxies_dict = {} + protocol = proxy.protocol.value + + # 构建代理配置 + if protocol in ['http', 'https']: + auth = proxy.get_auth_string() + if auth: + proxies_dict['http'] = f"http://{auth}@{proxy.get_address()}" + proxies_dict['https'] = f"http://{auth}@{proxy.get_address()}" + else: + proxies_dict['http'] = f"http://{proxy.get_address()}" + proxies_dict['https'] = f"http://{proxy.get_address()}" + elif protocol in ['socks4', 'socks5']: + auth = proxy.get_auth_string() + proxy_url = f"socks5://{auth}@{proxy.get_address()}" if auth else f"socks5://{proxy.get_address()}" + proxies_dict['http'] = proxy_url + proxies_dict['https'] = proxy_url + + # 方法1: 尝试 HEAD 请求(轻量,类似 curl -I) + try: + response = requests.head( + test_url, + proxies=proxies_dict, + timeout=self.connectivity_timeout, + verify=False, + allow_redirects=True + ) + # HEAD 请求成功即可 + if response.status_code < 400: + self.logger.debug(f"代理 {proxy.get_address()} HEAD测试成功: {test_url} ({response.status_code})") + return True + except Exception as e: + self.logger.debug(f"HEAD测试失败: {str(e)}") + + # 方法2: 如果 HEAD 失败,尝试 GET 请求 + try: + response = requests.get( + test_url, + proxies=proxies_dict, + timeout=self.connectivity_timeout, + verify=False, + allow_redirects=True + ) + # GET 请求成功 + if response.status_code < 400: + self.logger.debug(f"代理 {proxy.get_address()} GET测试成功: {test_url} ({response.status_code})") + return True + except Exception as e: + self.logger.debug(f"GET测试失败: {str(e)}") + continue + + except Exception as e: + self.logger.debug(f"测试URL {test_url} 失败: {str(e)}") + continue + + # 所有测试都失败 + self.logger.debug(f"代理 {proxy.get_address()} 所有连通性测试均失败") + return False + + def batch_check(self, proxies: List[ProxyInfo], callback: Callable = None) -> List[ProxyInfo]: + """批量检测代理""" + self.logger.info(f"开始批量检测 {len(proxies)} 个代理") + + futures = {} + for proxy in proxies: + # 跳过最近检测过的代理(缓存60秒) + if proxy.last_check and (datetime.now() - proxy.last_check) < timedelta(seconds=60): + continue + + future = self._executor.submit(self.check_proxy, proxy) + futures[future] = proxy + + checked_proxies = [] + for future in as_completed(futures): + proxy = futures[future] + try: + future.result() + checked_proxies.append(proxy) + + if callback: + callback(proxy) + + except Exception as e: + self.logger.error(f"检测代理 {proxy.get_address()} 时出错: {str(e)}") + + self.logger.info(f"完成检测,共检测 {len(checked_proxies)} 个代理") + return checked_proxies + + def shutdown(self): + """关闭检测器""" + self._executor.shutdown(wait=False) diff --git a/core/models.py b/core/models.py new file mode 100644 index 0000000..ebbcc04 --- /dev/null +++ b/core/models.py @@ -0,0 +1,98 @@ +"""数据模型定义""" +from dataclasses import dataclass, field +from typing import Optional +from enum import Enum +from datetime import datetime + + +class ProxyProtocol(Enum): + """代理协议枚举""" + HTTP = "http" + HTTPS = "https" + SOCKS4 = "socks4" + SOCKS5 = "socks5" + + +class ProxyStatus(Enum): + """代理状态枚举""" + UNKNOWN = "unknown" + CHECKING = "checking" + AVAILABLE = "available" + EXCELLENT = "excellent" + UNAVAILABLE = "unavailable" + + +@dataclass +class ProxyInfo: + """代理信息数据类""" + ip_address: str + port: int + username: str = "no need" + password: str = "no need" + protocol: ProxyProtocol = ProxyProtocol.SOCKS5 + country: str = "" + anonymity: str = "" + speed: str = "" + uptime_percentage: str = "" + response_time: str = "" + latency: str = "" + last_updated: str = "" + + # 运行时状态 + status: ProxyStatus = ProxyStatus.UNKNOWN + latency_ms: float = 0.0 + last_check: Optional[datetime] = None + consecutive_failures: int = 0 + is_active: bool = False + + def to_dict(self) -> dict: + """转换为字典""" + return { + 'ip_address': self.ip_address, + 'port': self.port, + 'username': self.username, + 'password': self.password, + 'protocol': self.protocol.value, + 'country': self.country, + 'anonymity': self.anonymity, + 'speed': self.speed, + 'uptime_percentage': self.uptime_percentage, + 'response_time': self.response_time, + 'latency': self.latency, + 'last_updated': self.last_updated + } + + @classmethod + def from_dict(cls, data: dict) -> 'ProxyInfo': + """从字典创建""" + protocol_map = { + 'http': ProxyProtocol.HTTP, + 'https': ProxyProtocol.HTTPS, + 'socks4': ProxyProtocol.SOCKS4, + 'socks5': ProxyProtocol.SOCKS5 + } + + return cls( + ip_address=data['ip_address'], + port=int(data['port']), + username=data.get('username', 'no need'), + password=data.get('password', 'no need'), + protocol=protocol_map.get(data.get('protocol', 'socks5'), ProxyProtocol.SOCKS5), + country=data.get('country', ''), + anonymity=data.get('anonymity', ''), + speed=data.get('speed', ''), + uptime_percentage=data.get('uptime_percentage', ''), + response_time=data.get('response_time', ''), + latency=data.get('latency', ''), + last_updated=data.get('last_updated', '') + ) + + def get_address(self) -> str: + """获取代理地址字符串""" + return f"{self.ip_address}:{self.port}" + + def get_auth_string(self) -> Optional[str]: + """获取认证字符串""" + if self.username and self.username != "no need": + return f"{self.username}:{self.password}" + return None diff --git a/core/proxy_manager.py b/core/proxy_manager.py new file mode 100644 index 0000000..e57f59a --- /dev/null +++ b/core/proxy_manager.py @@ -0,0 +1,266 @@ +"""代理管理器 - 协调数据源、检测器和转发器""" +import threading +import time +import json +import os +from typing import List, Optional +from datetime import datetime +from loguru import logger +from .models import ProxyInfo, ProxyStatus +from .data_source import DataSource +from .health_checker import HealthChecker +from .simple_proxy_forwarder import SimpleProxyForwarder + + +class ProxyManager: + """代理管理器""" + + def __init__(self, config: dict, connection_log_callback=None): + self.config = config + self.logger = logger + + self.data_source = DataSource(config) + self.health_checker = HealthChecker(config) + self.forwarder = SimpleProxyForwarder(config, connection_log_callback) + + self.proxies: List[ProxyInfo] = [] + self.active_proxy: Optional[ProxyInfo] = None + self.available_proxies: List[ProxyInfo] = [] + + self._lock = threading.RLock() + self._running = False + self._refresh_thread = None + + def load_proxies(self) -> int: + """加载代理列表""" + with self._lock: + all_proxies = [] + + # 从网页获取(保存到 proxy.json) + if self.config.get('proxy_sources', {}).get('auto_fetch', {}).get('enabled', True): + url = self.config['proxy_sources']['auto_fetch'].get('url') + output_file = self.config['proxy_sources']['auto_fetch'].get('output_file', 'proxy.json') + pages = self.config['proxy_sources']['auto_fetch'].get('pages', 1) # 获取页数配置 + if url: + web_proxies = self.data_source.fetch_from_web(url, output_file, pages) + all_proxies.extend(web_proxies) + + # 从本地文件加载(用户手动添加的 local.json) + if self.config.get('proxy_sources', {}).get('local_file', {}).get('enabled', True): + filepath = self.config['proxy_sources']['local_file'].get('path', 'local.json') + file_proxies = self.data_source.load_from_file(filepath) + all_proxies.extend(file_proxies) + + # 去重(基于IP+端口) + seen = set() + unique_proxies = [] + for proxy in all_proxies: + key = f"{proxy.ip_address}:{proxy.port}" + if key not in seen: + seen.add(key) + unique_proxies.append(proxy) + + self.proxies = unique_proxies + self.logger.info(f"加载了 {len(self.proxies)} 个唯一代理") + + return len(self.proxies) + + def set_proxies(self, proxies: List[ProxyInfo]): + """设置代理列表(用于GUI选择单个代理)""" + with self._lock: + self.proxies = proxies + self.logger.info(f"设置代理列表: {len(proxies)} 个代理") + + def check_all_proxies(self) -> int: + """检测所有代理""" + with self._lock: + available_count = 0 + + def on_check_complete(proxy: ProxyInfo): + nonlocal available_count + if proxy.status in [ProxyStatus.AVAILABLE, ProxyStatus.EXCELLENT]: + available_count += 1 + + self.health_checker.batch_check(self.proxies, callback=on_check_complete) + + # 更新可用代理列表 + self.available_proxies = [ + p for p in self.proxies + if p.status in [ProxyStatus.AVAILABLE, ProxyStatus.EXCELLENT] + ] + + # 同步延迟到本地文件 + self._sync_latency_to_file() + + self.logger.info(f"检测到 {available_count} 个可用代理") + return available_count + + def _sync_latency_to_file(self): + """将检测结果(延迟)同步到本地文件 + + 同时同步到: + 1. proxy.json(网页抓取的代理) + 2. local.json(用户手动添加的代理) + """ + try: + # 同步到 proxy.json + self._sync_to_single_file( + self.config.get('proxy_sources', {}).get('auto_fetch', {}).get('output_file', 'proxy.json') + ) + + # 同步到 local.json + local_file_path = self.config.get('proxy_sources', {}).get('local_file', {}).get('path', 'local.json') + if local_file_path and local_file_path != 'proxy.json': + self._sync_to_single_file(local_file_path) + + except Exception as e: + self.logger.error(f"同步延迟到文件失败: {str(e)}") + + def _sync_to_single_file(self, filepath: str): + """同步延迟到单个文件""" + try: + if not os.path.exists(filepath): + return + + # 读取现有文件 + with open(filepath, 'r', encoding='utf-8') as f: + data = json.load(f) + + if not isinstance(data, list): + return + + # 创建索引 + existing_proxies = {} + for item in data: + key = f"{item['ip_address']}:{item['port']}" + existing_proxies[key] = item + + # 更新延迟信息 + updated_count = 0 + for proxy in self.proxies: + key = proxy.get_address() + if key in existing_proxies: + # 更新延迟和状态 + existing_proxies[key]['latency'] = f"{proxy.latency_ms:.0f}ms" if proxy.latency_ms < 9999 else "timeout" + existing_proxies[key]['status'] = proxy.status.value + existing_proxies[key]['last_checked'] = datetime.now().isoformat() + updated_count += 1 + + # 保存更新后的数据 + if updated_count > 0: + updated_data = list(existing_proxies.values()) + with open(filepath, 'w', encoding='utf-8') as f: + json.dump(updated_data, f, indent=2, ensure_ascii=False) + self.logger.info(f"已同步 {updated_count} 个代理的延迟信息到 {filepath}") + + except Exception as e: + self.logger.debug(f"同步到 {filepath} 失败: {str(e)}") + + def start_service(self) -> bool: + """启动代理服务""" + if self._running: + self.logger.warning("服务已在运行") + return True + + try: + # 加载代理 + self.load_proxies() + + # 检测代理 + self.check_all_proxies() + + if not self.available_proxies: + self.logger.error("没有可用的代理,无法启动服务") + return False + + # 启动转发器 + self.forwarder.start(self.available_proxies) + + self._running = True + self.active_proxy = self.forwarder.current_proxy + + self.logger.info("代理服务已启动") + return True + + except Exception as e: + self.logger.error(f"启动服务失败: {str(e)}") + return False + + def stop_service(self): + """停止代理服务""" + if not self._running: + return + + self._running = False + self.forwarder.stop() + self.health_checker.shutdown() + + self.logger.info("代理服务已停止") + + def switch_to_next_proxy(self) -> bool: + """切换到下一个代理""" + if not self._running: + self.logger.warning("服务未运行") + return False + + if not self.available_proxies: + self.logger.warning("没有可用代理") + return False + + # 找到当前代理的索引 + current_index = -1 + if self.active_proxy and self.active_proxy in self.available_proxies: + current_index = self.available_proxies.index(self.active_proxy) + + # 选择下一个代理 + next_index = (current_index + 1) % len(self.available_proxies) + next_proxy = self.available_proxies[next_index] + + # 切换代理 + success = self.forwarder.switch_proxy(next_proxy) + if success: + self.active_proxy = next_proxy + self.logger.info(f"成功切换到下一个代理: {next_proxy.get_address()}") + + return success + + def get_active_proxy(self) -> Optional[ProxyInfo]: + """获取当前活跃代理""" + with self._lock: + return self.active_proxy + + def get_statistics(self) -> dict: + """获取统计信息""" + with self._lock: + stats = { + 'total': len(self.proxies), + 'available': len([p for p in self.proxies if p.status == ProxyStatus.AVAILABLE]), + 'excellent': len([p for p in self.proxies if p.status == ProxyStatus.EXCELLENT]), + 'unavailable': len([p for p in self.proxies if p.status == ProxyStatus.UNAVAILABLE]), + 'active': self.active_proxy.get_address() if self.active_proxy else None + } + return stats + + def start_auto_refresh(self, interval_minutes: int = 10): + """启动自动刷新""" + if self._running: + return + + self._running = True + + def refresh_loop(): + while self._running: + time.sleep(interval_minutes * 60) + if self._running: + self.logger.info("执行自动刷新...") + self.load_proxies() + self.check_all_proxies() + + self._refresh_thread = threading.Thread(target=refresh_loop, daemon=True) + self._refresh_thread.start() + + def stop_auto_refresh(self): + """停止自动刷新""" + self._running = False + if self._refresh_thread: + self._refresh_thread.join(timeout=5) diff --git a/core/simple_proxy_forwarder.py b/core/simple_proxy_forwarder.py new file mode 100644 index 0000000..89cf02f --- /dev/null +++ b/core/simple_proxy_forwarder.py @@ -0,0 +1,385 @@ +"""简化代理转发器 - 三步工作流程""" +import socket +import threading +import socks +import time +from typing import List, Optional +from concurrent.futures import ThreadPoolExecutor, as_completed +from loguru import logger +from .models import ProxyInfo, ProxyStatus + + +class SimpleProxyForwarder: + """简化代理转发器 + + 工作流程: + 1. 验证代理 (_validate_proxies) + 2. 获取可用代理 (_test_proxy) + 3. 转发到8745端口 (_run_forwarder) + """ + + def __init__(self, config: dict, connection_log_callback=None): + self.config = config + self.logger = logger + + output_config = config.get('output', {}) + self.host = output_config.get('host', '127.0.0.1') + self.port = output_config.get('port', 8745) + + self.validated_proxies: List[ProxyInfo] = [] + self.current_proxy: Optional[ProxyInfo] = None + self.server_socket: Optional[socket.socket] = None + self._running = False + self._server_thread: Optional[threading.Thread] = None + self._connections = [] + self._lock = threading.Lock() + self._executor = ThreadPoolExecutor(max_workers=10) + + # 连接日志回调函数 + self.connection_log_callback = connection_log_callback + + def validate_proxies(self, proxies: List[ProxyInfo]) -> List[ProxyInfo]: + """步骤1: 验证所有代理的连通性""" + self.logger.info(f"开始验证 {len(proxies)} 个代理") + self.validated_proxies = [] + + futures = {} + for proxy in proxies: + future = self._executor.submit(self._validate_single_proxy, proxy) + futures[future] = proxy + + for future in as_completed(futures): + proxy = futures[future] + try: + is_valid = future.result() + if is_valid: + self.validated_proxies.append(proxy) + proxy.status = ProxyStatus.AVAILABLE + except Exception as e: + self.logger.debug(f"验证代理 {proxy.get_address()} 失败: {str(e)}") + + self.logger.info(f"验证完成,{len(self.validated_proxies)} 个代理可用") + return self.validated_proxies + + def _validate_single_proxy(self, proxy: ProxyInfo) -> bool: + """验证单个代理""" + try: + # TCP连接测试 + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock.settimeout(5) + + result = sock.connect_ex((proxy.ip_address, proxy.port)) + sock.close() + + if result != 0: + return False + + # SOCKS握手验证(针对SOCKS代理) + if proxy.protocol.value in ['socks4', 'socks5']: + return self._test_socks_handshake(proxy) + + return True + + except Exception: + return False + + def _test_socks_handshake(self, proxy: ProxyInfo) -> bool: + """测试SOCKS握手""" + try: + proxy_type = socks.SOCKS5 if proxy.protocol.value == 'socks5' else socks.SOCKS4 + + test_sock = socks.socksocket() + test_sock.set_proxy( + proxy_type, + proxy.ip_address, + proxy.port, + username=proxy.username if proxy.username != "no need" else None, + password=proxy.password if proxy.password != "no need" else None + ) + test_sock.settimeout(5) + + # 尝试连接到测试服务器 + test_sock.connect(('www.google.com', 80)) + test_sock.close() + + return True + + except Exception: + return False + + def get_available_proxy(self) -> Optional[ProxyInfo]: + """步骤2: 获取可用的代理""" + if not self.validated_proxies: + return None + + # 选择第一个可用代理(可以扩展为负载均衡策略) + return self.validated_proxies[0] + + def start(self, proxies: List[ProxyInfo]): + """启动转发器""" + if self._running: + self.logger.warning("转发器已在运行") + return + + # 步骤1: 验证代理 + self.validate_proxies(proxies) + + if not self.validated_proxies: + self.logger.error("没有可用的代理") + return + + # 步骤2: 获取代理 + self.current_proxy = self.get_available_proxy() + if not self.current_proxy: + self.logger.error("无法获取可用代理") + return + + self.logger.info(f"使用代理: {self.current_proxy.get_address()} ({self.current_proxy.protocol.value})") + + # 步骤3: 启动转发器 + self._run_forwarder() + + def _run_forwarder(self): + """步骤3: 运行SOCKS5转发服务器""" + try: + self.server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + self.server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + self.server_socket.bind((self.host, self.port)) + self.server_socket.listen(100) + self.server_socket.settimeout(1.0) + + self._running = True + self._server_thread = threading.Thread(target=self._accept_loop, daemon=True) + self._server_thread.start() + + self.logger.info(f"SOCKS5转发器已启动: {self.host}:{self.port}") + + except Exception as e: + self.logger.error(f"启动转发器失败: {str(e)}") + raise + + def _accept_loop(self): + """接受客户端连接循环""" + while self._running: + try: + client_socket, client_address = self.server_socket.accept() + + # 为新连接创建处理线程 + handler = ForwarderConnectionHandler( + client_socket, + client_address, + self.current_proxy, + self.logger, + self.connection_log_callback # 传递日志回调 + ) + handler.start() + + with self._lock: + self._connections.append(handler) + + except socket.timeout: + continue + except Exception as e: + if self._running: + self.logger.error(f"接受连接失败: {str(e)}") + break + + def stop(self): + """停止转发器""" + self._running = False + + # 关闭所有连接 + with self._lock: + for conn in self._connections: + try: + conn.running = False + conn.join(timeout=2) + except: + pass + self._connections.clear() + + if self.server_socket: + try: + self.server_socket.close() + except: + pass + + if self._server_thread: + self._server_thread.join(timeout=5) + + self._executor.shutdown(wait=False) + + self.logger.info("转发器已停止") + + def switch_proxy(self, proxy: ProxyInfo) -> bool: + """切换到新代理""" + if proxy not in self.validated_proxies: + self.logger.warning(f"代理 {proxy.get_address()} 未通过验证") + return False + + with self._lock: + self.current_proxy = proxy + self.logger.info(f"切换到代理: {proxy.get_address()}") + return True + + +class ForwarderConnectionHandler(threading.Thread): + """转发器连接处理器""" + + def __init__(self, client_socket: socket.socket, client_address, upstream_proxy: ProxyInfo, logger, connection_log_callback=None): + super().__init__(daemon=True) + self.client_socket = client_socket + self.client_address = client_address + self.upstream_proxy = upstream_proxy + self.logger = logger + self.running = True + self.connection_log_callback = connection_log_callback + + def run(self): + """处理客户端连接""" + try: + # SOCKS5握手 + if not self._socks5_handshake(): + self.logger.debug(f"SOCKS5握手失败: {self.client_address}") + return + + # 建立到目标服务器的连接 + target_socket = self._connect_to_target() + if not target_socket: + return + + # 记录连接日志 + if self.connection_log_callback: + local_addr = f"{self.client_address[0]}:{self.client_address[1]}" + remote_addr = f"{self.upstream_proxy.ip_address}:{self.upstream_proxy.port}" + log_message = f"{local_addr} -> {remote_addr}" + self.connection_log_callback(log_message) + + # 双向转发数据 + self._forward_data(target_socket) + + except Exception as e: + self.logger.debug(f"处理连接时出错: {str(e)}") + finally: + try: + self.client_socket.close() + except: + pass + self.running = False + + def _socks5_handshake(self) -> bool: + """执行SOCKS5握手""" + try: + version = self.client_socket.recv(1) + if version != b'\x05': + return False + + nmethods = ord(self.client_socket.recv(1)) + methods = self.client_socket.recv(nmethods) + + self.client_socket.send(b'\x05\x00') + + version = self.client_socket.recv(1) + if version != b'\x05': + return False + + cmd = self.client_socket.recv(1) + if cmd != b'\x01': + self.client_socket.send(b'\x05\x07\x00\x01\x00\x00\x00\x00\x00\x00') + return False + + self.client_socket.recv(1) + atype = self.client_socket.recv(1) + + if atype == b'\x01': + dest_addr = self.client_socket.recv(4) + dest_port = self.client_socket.recv(2) + elif atype == b'\x03': + addr_len_byte = self.client_socket.recv(1) + addr_len = addr_len_byte[0] if isinstance(addr_len_byte, bytes) else ord(addr_len_byte) + dest_addr = self.client_socket.recv(addr_len) + dest_port = self.client_socket.recv(2) + elif atype == b'\x04': + dest_addr = self.client_socket.recv(16) + dest_port = self.client_socket.recv(2) + else: + return False + + self.client_socket.send(b'\x05\x00\x00\x01\x00\x00\x00\x00\x00\x00') + + self.dest_addr = dest_addr + self.dest_port = dest_port + + return True + + except Exception as e: + self.logger.debug(f"SOCKS5握手异常: {str(e)}") + return False + + def _connect_to_target(self): + """连接到目标服务器""" + try: + if len(self.dest_addr) == 4: + dest_ip = '.'.join(str(b) for b in self.dest_addr) + else: + dest_ip = self.dest_addr.decode('utf-8', errors='ignore') + + # Python 3中bytes索引直接返回int,不需要ord() + if isinstance(self.dest_port, bytes): + dest_port = (self.dest_port[0] << 8) + self.dest_port[1] + else: + dest_port = (ord(self.dest_port[0]) << 8) + ord(self.dest_port[1]) + + proxy_type_map = { + 'socks4': socks.SOCKS4, + 'socks5': socks.SOCKS5, + 'http': socks.HTTP, + 'https': socks.HTTP + } + + proxy_type = proxy_type_map.get(self.upstream_proxy.protocol.value, socks.SOCKS5) + + target_socket = socks.socksocket() + target_socket.set_proxy( + proxy_type, + self.upstream_proxy.ip_address, + self.upstream_proxy.port, + username=self.upstream_proxy.username if self.upstream_proxy.username != "no need" else None, + password=self.upstream_proxy.password if self.upstream_proxy.password != "no need" else None + ) + + target_socket.settimeout(10) + target_socket.connect((dest_ip, dest_port)) + target_socket.settimeout(None) + + return target_socket + + except Exception as e: + self.logger.error(f"连接目标失败: {str(e)}") + return None + + def _forward_data(self, target_socket): + """双向转发数据""" + import select + + sockets = [self.client_socket, target_socket] + + while self.running: + try: + readable, _, _ = select.select(sockets, [], [], 1.0) + + for sock in readable: + if sock == self.client_socket: + data = self.client_socket.recv(4096) + if not data: + return + target_socket.sendall(data) + elif sock == target_socket: + data = target_socket.recv(4096) + if not data: + return + self.client_socket.sendall(data) + + except Exception as e: + self.logger.debug(f"转发数据时出错: {str(e)}") + break diff --git a/diagnose.py b/diagnose.py new file mode 100644 index 0000000..f8f6427 --- /dev/null +++ b/diagnose.py @@ -0,0 +1,124 @@ +"""诊断脚本 - 检查代理检测失败原因""" +import sys +import socket +import requests +from loguru import logger +from core.models import ProxyInfo, ProxyProtocol + + +def test_single_proxy(): + """测试单个代理的详细检测过程""" + logger.info("=" * 60) + logger.info("代理诊断工具") + logger.info("=" * 60) + + # 创建一个测试代理(使用local.json中的第一个) + proxy = ProxyInfo( + ip_address="171.6.75.111", + port=8080, + username="no need", + password="no need", + protocol=ProxyProtocol.SOCKS4 + ) + + logger.info(f"\n测试代理: {proxy.get_address()} ({proxy.protocol.value})\n") + + # 测试1: TCP连接 + logger.info("[测试1] TCP连接测试...") + try: + start_time = __import__('time').time() + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock.settimeout(5) + result = sock.connect_ex((proxy.ip_address, proxy.port)) + elapsed = (__import__('time').time() - start_time) * 1000 + sock.close() + + if result == 0: + logger.info(f"✓ TCP连接成功,延迟: {elapsed:.0f}ms") + else: + logger.error(f"✗ TCP连接失败,错误码: {result}") + return False + except Exception as e: + logger.error(f"✗ TCP连接异常: {str(e)}") + return False + + # 测试2: SOCKS握手 + logger.info("\n[测试2] SOCKS握手测试...") + try: + import socks + + proxy_type = socks.SOCKS4 if proxy.protocol.value == 'socks4' else socks.SOCKS5 + + test_sock = socks.socksocket() + test_sock.set_proxy( + proxy_type, + proxy.ip_address, + proxy.port, + username=None, + password=None + ) + test_sock.settimeout(5) + + test_sock.connect(('www.google.com', 80)) + test_sock.close() + + logger.info("✓ SOCKS握手成功") + + except Exception as e: + logger.error(f"✗ SOCKS握手失败: {str(e)}") + return False + + # 测试3: Google连通性 + logger.info("\n[测试3] Google连通性测试...") + try: + proxies_dict = {} + protocol = proxy.protocol.value + + if protocol in ['socks4', 'socks5']: + proxies_dict['http'] = f"socks5://{proxy.get_address()}" + proxies_dict['https'] = f"socks5://{proxy.get_address()}" + + response = requests.get( + 'https://www.google.com/', + proxies=proxies_dict, + timeout=10, + verify=False + ) + + logger.info(f"✓ Google连通性测试成功,状态码: {response.status_code}") + + except Exception as e: + logger.error(f"✗ Google连通性测试失败: {str(e)}") + return False + + logger.info("\n" + "=" * 60) + logger.info("✓ 所有测试通过!该代理可用") + logger.info("=" * 60) + + return True + + +def check_network(): + """检查本地网络环境""" + logger.info("\n[网络检查] 本地网络环境...") + + # 测试直连Google + try: + response = requests.get('https://www.google.com/', timeout=5) + logger.info(f"✓ 直连Google成功,状态码: {response.status_code}") + logger.info(" 提示: 您的网络可以直接访问Google,可能不需要代理") + except Exception as e: + logger.info(f"✗ 直连Google失败: {str(e)}") + logger.info(" 提示: 您的网络无法直接访问Google,需要代理") + + +if __name__ == '__main__': + # 设置日志 + logger.remove() + logger.add(sys.stderr, level='INFO') + + # 检查网络 + check_network() + + # 测试代理 + test_single_proxy() diff --git a/gui/__init__.py b/gui/__init__.py new file mode 100644 index 0000000..c8dc43f --- /dev/null +++ b/gui/__init__.py @@ -0,0 +1,4 @@ +"""GUI模块""" +from .main_window import MainWindow + +__all__ = ['MainWindow'] diff --git a/gui/__pycache__/__init__.cpython-312.pyc b/gui/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..caca31a09eb40a672c9accc19e855f481388e31c GIT binary patch literal 245 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 dict: + """获取配置""" + return { + 'proxy_sources': { + 'auto_fetch': { + 'enabled': True, + 'url': self.url_edit.text(), + 'pages': self.pages_spin.value(), + 'refresh_interval': self.refresh_interval_spin.value(), + 'output_file': 'proxy.json' + }, + 'local_file': { + 'enabled': self.local_file_checkbox.isChecked(), + 'path': 'local.json' + } + }, + 'rotation': { + 'mode': self.mode_combo.currentText(), + 'auto_switch_interval': self.switch_interval_spin.value(), + 'latency_threshold': self.latency_threshold_spin.value() + }, + 'output': { + 'host': self.host_edit.text(), + 'port': self.port_spin.value() + } + } + + +class MainWindow(QMainWindow): + """主窗口""" + + def __init__(self, config_path='config.yaml'): + super().__init__() + self.config_path = config_path + self.config = self.load_config() + self.proxy_manager = None + self.worker_thread = None + + self.setWindowTitle("WhereAmI - 多协议轮转代理工具") + self.resize(1200, 800) + + self.init_ui() + self.init_proxy_manager() + + def load_config(self) -> dict: + """加载配置文件""" + if os.path.exists(self.config_path): + with open(self.config_path, 'r', encoding='utf-8') as f: + return yaml.safe_load(f) + return {} + + def save_config(self): + """保存配置文件""" + with open(self.config_path, 'w', encoding='utf-8') as f: + yaml.dump(self.config, f, allow_unicode=True, default_flow_style=False) + + def init_ui(self): + """初始化UI""" + central_widget = QWidget() + self.setCentralWidget(central_widget) + main_layout = QVBoxLayout(central_widget) + + # 顶部状态栏 + status_layout = QHBoxLayout() + + self.status_label = QLabel("状态: 未启动") + self.status_label.setStyleSheet("font-weight: bold; color: red;") + status_layout.addWidget(self.status_label) + + self.active_proxy_label = QLabel("当前代理: 无") + status_layout.addWidget(self.active_proxy_label) + + self.stats_label = QLabel("统计: 0/0") + status_layout.addWidget(self.stats_label) + + status_layout.addStretch() + main_layout.addLayout(status_layout) + + # 控制按钮 + control_layout = QHBoxLayout() + + self.start_button = QPushButton("▶ 开始服务") + self.start_button.clicked.connect(self.on_start_service) + control_layout.addWidget(self.start_button) + + self.stop_button = QPushButton("⏹ 停止服务") + self.stop_button.clicked.connect(self.on_stop_service) + self.stop_button.setEnabled(False) + control_layout.addWidget(self.stop_button) + + self.switch_button = QPushButton("🔄 切换下一个") + self.switch_button.clicked.connect(self.on_switch_proxy) + self.switch_button.setEnabled(False) + control_layout.addWidget(self.switch_button) + + self.fetch_button = QPushButton("🌐 获取免费代理") + self.fetch_button.clicked.connect(self.on_fetch_proxies) + control_layout.addWidget(self.fetch_button) + + self.use_local_button = QPushButton("📁 使用本地代理") + self.use_local_button.clicked.connect(self.on_use_local_proxies) + control_layout.addWidget(self.use_local_button) + + self.fetch_other_button = QPushButton("🔧 其他代理(预留)") + self.fetch_other_button.clicked.connect(self.on_fetch_other_proxies) + self.fetch_other_button.setEnabled(False) # 暂时禁用,预留功能 + control_layout.addWidget(self.fetch_other_button) + + self.config_button = QPushButton("⚙️ 配置") + self.config_button.clicked.connect(self.on_open_config) + control_layout.addWidget(self.config_button) + + main_layout.addLayout(control_layout) + + # 进度条 + self.progress_bar = QProgressBar() + self.progress_bar.setVisible(False) + main_layout.addWidget(self.progress_bar) + + # 标签页 + tab_widget = QTabWidget() + + # 代理列表标签页 + proxy_tab = QWidget() + proxy_layout = QVBoxLayout(proxy_tab) + + # 过滤选项 + filter_layout = QHBoxLayout() + self.show_unavailable_checkbox = QCheckBox("显示不可用代理") + self.show_unavailable_checkbox.setChecked(False) + self.show_unavailable_checkbox.stateChanged.connect(self.on_filter_changed) + filter_layout.addWidget(self.show_unavailable_checkbox) + filter_layout.addStretch() + proxy_layout.addLayout(filter_layout) + + self.proxy_table = QTableWidget() + self.proxy_table.setColumnCount(10) + self.proxy_table.setHorizontalHeaderLabels([ + "IP地址", "端口", "协议", "国家", "状态", + "延迟(ms)", "匿名级别", "速度", "运行时间", "最后更新" + ]) + self.proxy_table.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeMode.Stretch) + self.proxy_table.setAlternatingRowColors(True) + self.proxy_table.setSelectionBehavior(QTableWidget.SelectionBehavior.SelectRows) + self.proxy_table.setSelectionMode(QTableWidget.SelectionMode.SingleSelection) + self.proxy_table.cellClicked.connect(self.on_proxy_selected) + proxy_layout.addWidget(self.proxy_table) + + tab_widget.addTab(proxy_tab, "代理列表") + + # 连接日志标签页 + connection_log_tab = QWidget() + connection_log_layout = QVBoxLayout(connection_log_tab) + + self.connection_log_text = QTextEdit() + self.connection_log_text.setReadOnly(True) + self.connection_log_text.setFont(QFont("Consolas", 9)) + connection_log_layout.addWidget(self.connection_log_text) + + clear_connection_log_button = QPushButton("清空连接日志") + clear_connection_log_button.clicked.connect(self.connection_log_text.clear) + connection_log_layout.addWidget(clear_connection_log_button) + + tab_widget.addTab(connection_log_tab, "连接日志") + + # 日志标签页 + log_tab = QWidget() + log_layout = QVBoxLayout(log_tab) + + self.log_text = QTextEdit() + self.log_text.setReadOnly(True) + self.log_text.setFont(QFont("Consolas", 9)) + log_layout.addWidget(self.log_text) + + clear_log_button = QPushButton("清空日志") + clear_log_button.clicked.connect(self.log_text.clear) + log_layout.addWidget(clear_log_button) + + tab_widget.addTab(log_tab, "日志") + + main_layout.addWidget(tab_widget) + + def init_proxy_manager(self): + """初始化代理管理器""" + # 定义连接日志回调 + def log_connection(message: str): + from datetime import datetime + timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") + self.connection_log_text.append(f"[{timestamp}] {message}") + + self.proxy_manager = ProxyManager(self.config, connection_log_callback=log_connection) + self.selected_proxy = None # 用户选择的代理 + self.log("代理管理器已初始化") + + def on_start_service(self): + """启动服务 - 仅启动端口监听,需要先选择代理""" + # 检查是否选择了代理 + if not self.selected_proxy: + QMessageBox.warning(self, "警告", "请先选择一个代理节点!\n\n点击代理列表中的某一行来选择代理。") + return + + self.start_button.setEnabled(False) + self.progress_bar.setVisible(True) + self.progress_bar.setRange(0, 0) + self.log(f"正在启动服务,使用代理: {self.selected_proxy.get_address()}") + + def start_task(): + # 只使用选中的代理 + self.proxy_manager.set_proxies([self.selected_proxy]) + return self.proxy_manager.start_service() + + self.worker_thread = WorkerThread(start_task) + self.worker_thread.finished_signal.connect(self.on_service_started) + self.worker_thread.start() + + def on_service_started(self, success: bool, message: str): + """服务启动完成""" + self.progress_bar.setVisible(False) + self.start_button.setEnabled(True) + + if success: + self.status_label.setText("状态: 运行中") + self.status_label.setStyleSheet("font-weight: bold; color: green;") + self.stop_button.setEnabled(True) + self.switch_button.setEnabled(True) + self.log("服务启动成功") + self.update_proxy_table() + self.update_stats() + + # 定时更新状态 + self.update_timer = QTimer() + self.update_timer.timeout.connect(self.update_status) + self.update_timer.start(5000) + else: + self.log(f"服务启动失败: {message}") + QMessageBox.warning(self, "错误", f"启动服务失败:\n{message}") + + def on_stop_service(self): + """停止服务""" + self.log("正在停止服务...") + self.proxy_manager.stop_service() + + self.status_label.setText("状态: 已停止") + self.status_label.setStyleSheet("font-weight: bold; color: red;") + self.start_button.setEnabled(True) + self.stop_button.setEnabled(False) + self.switch_button.setEnabled(False) + + if hasattr(self, 'update_timer'): + self.update_timer.stop() + + self.log("服务已停止") + + def on_switch_proxy(self): + """切换代理""" + self.log("正在切换代理...") + + def switch_task(): + return self.proxy_manager.switch_to_next_proxy() + + self.worker_thread = WorkerThread(switch_task) + self.worker_thread.finished_signal.connect(self.on_proxy_switched) + self.worker_thread.start() + + def on_proxy_switched(self, success: bool, message: str): + """代理切换完成""" + if success: + self.log("代理切换成功") + self.update_status() + self.update_proxy_table() + else: + self.log(f"代理切换失败: {message}") + QMessageBox.warning(self, "警告", f"切换代理失败:\n{message}") + + def on_fetch_proxies(self): + """获取代理 - 保留旧方法以兼容""" + self.log("正在从网页获取代理...") + self.progress_bar.setVisible(True) + self.progress_bar.setRange(0, 0) + + def fetch_task(): + count = self.proxy_manager.load_proxies() + self.proxy_manager.check_all_proxies() + return count + + self.worker_thread = WorkerThread(fetch_task) + self.worker_thread.finished_signal.connect(self.on_fetch_completed) + self.worker_thread.start() + + def on_use_local_proxies(self): + """使用本地代理""" + self.log("正在加载本地代理...") + self.progress_bar.setVisible(True) + self.progress_bar.setRange(0, 0) + + def load_local_task(): + # 只加载本地文件 + config_backup = self.proxy_manager.config.copy() + self.proxy_manager.config['proxy_sources']['auto_fetch']['enabled'] = False + self.proxy_manager.config['proxy_sources']['local_file']['enabled'] = True + + count = self.proxy_manager.load_proxies() + self.proxy_manager.check_all_proxies() + + # 恢复配置 + self.proxy_manager.config = config_backup + return count + + self.worker_thread = WorkerThread(load_local_task) + self.worker_thread.finished_signal.connect(self.on_fetch_completed) + self.worker_thread.start() + + def on_fetch_other_proxies(self): + """获取其他代理(预留功能 - 后续用于启动 scratch.py 测试)""" + self.log("⚠️ 此功能暂未实现,预留用于后续测试") + QMessageBox.information(self, "提示", + "此功能暂未实现。\n\n" + "计划用途:启动 scratch.py 进行代理测试\n" + "后续将根据需求完善此功能。") + + def on_fetch_completed(self, success: bool, message: str): + """获取代理完成""" + self.progress_bar.setVisible(False) + + if success: + self.log(f"成功获取 {message} 个代理") + self.update_proxy_table() + self.update_stats() + else: + self.log(f"获取代理失败: {message}") + QMessageBox.warning(self, "错误", f"获取代理失败:\n{message}") + + def on_open_config(self): + """打开配置对话框""" + dialog = ConfigDialog(self.config, self) + if dialog.exec() == QDialog.DialogCode.Accepted: + self.config = dialog.get_config() + self.save_config() + self.log("配置已保存") + + def on_proxy_selected(self, row: int, column: int): + """用户选择代理""" + proxies = self.get_filtered_proxies() + if row < len(proxies): + self.selected_proxy = proxies[row] + self.active_proxy_label.setText( + f"选中代理: {self.selected_proxy.ip_address}:{self.selected_proxy.port} " + f"({self.selected_proxy.protocol.value}) - {self.selected_proxy.latency_ms:.0f}ms" + ) + self.log(f"已选择代理: {self.selected_proxy.get_address()}") + + def on_filter_changed(self, state): + """过滤条件改变""" + self.update_proxy_table() + + def get_filtered_proxies(self): + """获取过滤后的代理列表""" + if not self.proxy_manager: + return [] + + proxies = self.proxy_manager.proxies + + # 如果不显示不可用代理,则过滤掉 + if not self.show_unavailable_checkbox.isChecked(): + from core.models import ProxyStatus + proxies = [p for p in proxies if p.status != ProxyStatus.UNAVAILABLE] + + return proxies + + def update_status(self): + """更新状态显示""" + active_proxy = self.proxy_manager.get_active_proxy() + if active_proxy: + self.active_proxy_label.setText( + f"当前代理: {active_proxy.ip_address}:{active_proxy.port} " + f"({active_proxy.protocol.value}) - {active_proxy.latency_ms:.0f}ms" + ) + else: + self.active_proxy_label.setText("当前代理: 无") + + self.update_stats() + + def update_stats(self): + """更新统计信息""" + stats = self.proxy_manager.get_statistics() + self.stats_label.setText( + f"统计: 总计{stats['total']} | " + f"可用{stats['available']} | " + f"优秀{stats['excellent']} | " + f"不可用{stats['unavailable']}" + ) + + def update_proxy_table(self): + """更新代理列表表格""" + proxies = self.get_filtered_proxies() + + self.proxy_table.setRowCount(len(proxies)) + + for row, proxy in enumerate(proxies): + # IP地址 + self.proxy_table.setItem(row, 0, QTableWidgetItem(proxy.ip_address)) + + # 端口 + self.proxy_table.setItem(row, 1, QTableWidgetItem(str(proxy.port))) + + # 协议 + self.proxy_table.setItem(row, 2, QTableWidgetItem(proxy.protocol.value)) + + # 国家 + self.proxy_table.setItem(row, 3, QTableWidgetItem(proxy.country or "-")) + + # 状态 + status_item = QTableWidgetItem(self.get_status_text(proxy.status)) + status_item.setForeground(self.get_status_color(proxy.status)) + self.proxy_table.setItem(row, 4, status_item) + + # 延迟 + latency_text = f"{proxy.latency_ms:.0f}" if proxy.latency_ms < 9999 else "-" + self.proxy_table.setItem(row, 5, QTableWidgetItem(latency_text)) + + # 匿名级别 + self.proxy_table.setItem(row, 6, QTableWidgetItem(proxy.anonymity or "-")) + + # 速度 + self.proxy_table.setItem(row, 7, QTableWidgetItem(proxy.speed or "-")) + + # 运行时间 + self.proxy_table.setItem(row, 8, QTableWidgetItem(proxy.uptime_percentage or "-")) + + # 最后更新 + self.proxy_table.setItem(row, 9, QTableWidgetItem(proxy.last_updated or "-")) + + def get_status_text(self, status: ProxyStatus) -> str: + """获取状态文本""" + status_map = { + ProxyStatus.UNKNOWN: "未知", + ProxyStatus.CHECKING: "检测中", + ProxyStatus.AVAILABLE: "可用", + ProxyStatus.EXCELLENT: "优秀", + ProxyStatus.UNAVAILABLE: "不可用" + } + return status_map.get(status, "未知") + + def get_status_color(self, status: ProxyStatus) -> QColor: + """获取状态颜色""" + color_map = { + ProxyStatus.UNKNOWN: QColor("gray"), + ProxyStatus.CHECKING: QColor("orange"), + ProxyStatus.AVAILABLE: QColor("green"), + ProxyStatus.EXCELLENT: QColor("darkgreen"), + ProxyStatus.UNAVAILABLE: QColor("red") + } + return color_map.get(status, QColor("gray")) + + def log(self, message: str): + """添加日志""" + from datetime import datetime + timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") + self.log_text.append(f"[{timestamp}] {message}") + + def closeEvent(self, event): + """关闭事件""" + if self.proxy_manager: + self.proxy_manager.stop_service() + event.accept() diff --git a/local.json b/local.json new file mode 100644 index 0000000..60f1e94 --- /dev/null +++ b/local.json @@ -0,0 +1,34 @@ +[ + { + "ip_address": "127.0.0.1", + "port": 1080, + "username": "no need", + "password": "no need", + "protocol": "socks5", + "country": "HK", + "anonymity": "", + "speed": "", + "uptime_percentage": "", + "response_time": "", + "latency": "0ms", + "last_updated": "", + "status": "excellent", + "last_checked": "2026-06-15T00:36:54.926006" + }, + { + "ip_address": "127.0.0.1", + "port": 10808, + "username": "no need", + "password": "no need", + "protocol": "socks5", + "country": "CN", + "anonymity": "", + "speed": "", + "uptime_percentage": "", + "response_time": "", + "latency": "1ms", + "last_updated": "", + "status": "excellent", + "last_checked": "2026-06-15T00:36:54.926006" + } +] \ No newline at end of file diff --git a/logs/whereami.log b/logs/whereami.log new file mode 100644 index 0000000..960c5c1 --- /dev/null +++ b/logs/whereami.log @@ -0,0 +1,307 @@ +2026-06-14 21:52:14.830 | INFO | __main__:main:39 - ============================================================ +2026-06-14 21:52:14.830 | INFO | __main__:main:40 - WhereAmI - 多协议轮转代理工具 +2026-06-14 21:52:14.830 | INFO | __main__:main:41 - ============================================================ +2026-06-14 21:52:15.295 | INFO | __main__:main:54 - GUI界面已启动 +2026-06-14 22:00:13.698 | INFO | core.data_source:fetch_from_web:21 - 开始从网页获取代理: http://cn.freevpnnode.com/free-proxy-for-thailand/ +2026-06-14 22:00:17.015 | INFO | core.data_source:fetch_from_web:36 - 成功获取 30 个代理 +2026-06-14 22:00:17.017 | INFO | core.data_source:load_from_file:145 - 从本地文件加载代理: local.json +2026-06-14 22:00:17.017 | INFO | core.data_source:load_from_file:165 - 成功加载 3 个代理 +2026-06-14 22:00:17.017 | INFO | core.proxy_manager:load_proxies:60 - 加载了 30 个唯一代理 +2026-06-14 22:00:17.017 | INFO | core.health_checker:batch_check:107 - 开始批量检测 30 个代理 +2026-06-14 22:00:32.020 | INFO | core.health_checker:batch_check:131 - 完成检测,共检测 30 个代理 +2026-06-14 22:00:32.020 | INFO | core.proxy_manager:check_all_proxies:82 - 检测到 0 个可用代理 +2026-06-14 22:00:52.573 | INFO | core.data_source:fetch_from_web:21 - 开始从网页获取代理: http://cn.freevpnnode.com/free-proxy-for-thailand/ +2026-06-14 22:00:54.455 | INFO | core.data_source:fetch_from_web:36 - 成功获取 30 个代理 +2026-06-14 22:00:54.456 | INFO | core.data_source:load_from_file:145 - 从本地文件加载代理: local.json +2026-06-14 22:00:54.456 | INFO | core.data_source:load_from_file:165 - 成功加载 3 个代理 +2026-06-14 22:00:54.456 | INFO | core.proxy_manager:load_proxies:60 - 加载了 30 个唯一代理 +2026-06-14 22:00:54.456 | INFO | core.health_checker:batch_check:107 - 开始批量检测 30 个代理 +2026-06-14 22:01:09.458 | INFO | core.health_checker:batch_check:131 - 完成检测,共检测 30 个代理 +2026-06-14 22:01:09.458 | INFO | core.proxy_manager:check_all_proxies:82 - 检测到 0 个可用代理 +2026-06-14 22:01:09.458 | ERROR | core.proxy_manager:start_service:99 - 没有可用的代理,无法启动服务 +2026-06-14 22:07:55.369 | WARNING | core.proxy_manager:switch_to_next_proxy:129 - 服务未运行 +2026-06-14 22:43:07.770 | INFO | __main__:main:39 - ============================================================ +2026-06-14 22:43:07.770 | INFO | __main__:main:40 - WhereAmI - 多协议轮转代理工具 +2026-06-14 22:43:07.770 | INFO | __main__:main:41 - ============================================================ +2026-06-14 22:43:08.153 | INFO | __main__:main:54 - GUI界面已启动 +2026-06-14 22:44:15.007 | INFO | core.data_source:fetch_from_web:21 - 开始从网页获取代理: http://cn.freevpnnode.com/free-proxy-for-thailand/ +2026-06-14 22:44:17.287 | INFO | core.data_source:fetch_from_web:36 - 成功获取 30 个代理 +2026-06-14 22:44:17.289 | INFO | core.data_source:save_to_file:183 - 保存 30 个代理到文件: proxy.json +2026-06-14 22:44:17.289 | INFO | core.data_source:fetch_from_web:41 - 代理已保存到: proxy.json +2026-06-14 22:44:17.290 | INFO | core.data_source:load_from_file:150 - 从本地文件加载代理: local.json +2026-06-14 22:44:17.290 | INFO | core.data_source:load_from_file:170 - 成功加载 1 个代理 +2026-06-14 22:44:17.290 | INFO | core.proxy_manager:load_proxies:61 - 加载了 31 个唯一代理 +2026-06-14 22:44:17.290 | INFO | core.health_checker:batch_check:107 - 开始批量检测 31 个代理 +2026-06-14 22:44:32.294 | INFO | core.health_checker:batch_check:131 - 完成检测,共检测 31 个代理 +2026-06-14 22:44:32.294 | INFO | core.proxy_manager:check_all_proxies:83 - 检测到 1 个可用代理 +2026-06-14 22:44:32.294 | INFO | core.simple_proxy_forwarder:validate_proxies:40 - 开始验证 1 个代理 +2026-06-14 22:44:32.295 | INFO | core.simple_proxy_forwarder:validate_proxies:58 - 验证完成,1 个代理可用 +2026-06-14 22:44:32.295 | INFO | core.simple_proxy_forwarder:start:134 - 使用代理: 127.0.0.1:10808 (socks5) +2026-06-14 22:44:32.297 | INFO | core.simple_proxy_forwarder:_run_forwarder:152 - SOCKS5转发器已启动: 127.0.0.1:8745 +2026-06-14 22:44:32.297 | INFO | core.proxy_manager:start_service:109 - 代理服务已启动 +2026-06-14 22:51:37.619 | WARNING | core.proxy_manager:start_service:89 - 服务已在运行 +2026-06-14 22:53:02.658 | ERROR | core.simple_proxy_forwarder:_connect_to_target:341 - 连接目标失败: ord() expected string of length 1, but int found +2026-06-14 22:58:24.158 | INFO | core.simple_proxy_forwarder:stop:208 - 转发器已停止 +2026-06-14 22:58:24.158 | INFO | core.proxy_manager:stop_service:125 - 代理服务已停止 +2026-06-14 23:08:35.632 | INFO | __main__:main:39 - ============================================================ +2026-06-14 23:08:35.632 | INFO | __main__:main:40 - WhereAmI - 多协议轮转代理工具 +2026-06-14 23:08:35.632 | INFO | __main__:main:41 - ============================================================ +2026-06-14 23:08:35.957 | INFO | __main__:main:54 - GUI界面已启动 +2026-06-14 23:08:46.172 | INFO | core.data_source:fetch_from_web:21 - 开始从网页获取代理: http://cn.freevpnnode.com/free-proxy-for-thailand/ +2026-06-14 23:08:49.077 | INFO | core.data_source:fetch_from_web:36 - 成功获取 30 个代理 +2026-06-14 23:08:49.078 | INFO | core.data_source:save_to_file:183 - 保存 30 个代理到文件: proxy.json +2026-06-14 23:08:49.078 | INFO | core.data_source:fetch_from_web:41 - 代理已保存到: proxy.json +2026-06-14 23:08:49.079 | INFO | core.proxy_manager:load_proxies:61 - 加载了 30 个唯一代理 +2026-06-14 23:08:49.079 | INFO | core.health_checker:batch_check:107 - 开始批量检测 30 个代理 +2026-06-14 23:09:04.082 | INFO | core.health_checker:batch_check:131 - 完成检测,共检测 30 个代理 +2026-06-14 23:09:04.082 | INFO | core.proxy_manager:check_all_proxies:83 - 检测到 0 个可用代理 +2026-06-14 23:09:04.082 | ERROR | core.proxy_manager:start_service:100 - 没有可用的代理,无法启动服务 +2026-06-14 23:12:37.912 | WARNING | core.proxy_manager:switch_to_next_proxy:130 - 服务未运行 +2026-06-14 23:12:48.176 | INFO | core.data_source:fetch_from_web:21 - 开始从网页获取代理: http://cn.freevpnnode.com/free-proxy-for-thailand/ +2026-06-14 23:12:50.424 | INFO | core.data_source:fetch_from_web:36 - 成功获取 30 个代理 +2026-06-14 23:12:50.425 | INFO | core.data_source:save_to_file:183 - 保存 30 个代理到文件: proxy.json +2026-06-14 23:12:50.426 | INFO | core.data_source:fetch_from_web:41 - 代理已保存到: proxy.json +2026-06-14 23:12:50.426 | INFO | core.proxy_manager:load_proxies:61 - 加载了 30 个唯一代理 +2026-06-14 23:12:50.427 | INFO | core.health_checker:batch_check:107 - 开始批量检测 30 个代理 +2026-06-14 23:13:05.429 | INFO | core.health_checker:batch_check:131 - 完成检测,共检测 30 个代理 +2026-06-14 23:13:05.429 | INFO | core.proxy_manager:check_all_proxies:83 - 检测到 0 个可用代理 +2026-06-14 23:13:05.430 | ERROR | core.proxy_manager:start_service:100 - 没有可用的代理,无法启动服务 +2026-06-14 23:24:43.738 | INFO | __main__:main:39 - ============================================================ +2026-06-14 23:24:43.738 | INFO | __main__:main:40 - WhereAmI - 多协议轮转代理工具 +2026-06-14 23:24:43.738 | INFO | __main__:main:41 - ============================================================ +2026-06-14 23:24:44.131 | INFO | __main__:main:54 - GUI界面已启动 +2026-06-14 23:25:10.991 | INFO | core.data_source:load_from_file:150 - 从本地文件加载代理: local.json +2026-06-14 23:25:10.991 | INFO | core.data_source:load_from_file:170 - 成功加载 1 个代理 +2026-06-14 23:25:10.991 | INFO | core.proxy_manager:load_proxies:61 - 加载了 1 个唯一代理 +2026-06-14 23:25:10.992 | INFO | core.health_checker:batch_check:107 - 开始批量检测 1 个代理 +2026-06-14 23:25:12.901 | INFO | core.health_checker:batch_check:131 - 完成检测,共检测 1 个代理 +2026-06-14 23:25:12.901 | INFO | core.proxy_manager:check_all_proxies:89 - 检测到 1 个可用代理 +2026-06-14 23:25:18.678 | INFO | core.proxy_manager:set_proxies:69 - 设置代理列表: 1 个代理 +2026-06-14 23:25:18.679 | INFO | core.data_source:load_from_file:150 - 从本地文件加载代理: local.json +2026-06-14 23:25:18.679 | INFO | core.data_source:load_from_file:170 - 成功加载 1 个代理 +2026-06-14 23:25:18.679 | INFO | core.proxy_manager:load_proxies:61 - 加载了 1 个唯一代理 +2026-06-14 23:25:18.680 | INFO | core.health_checker:batch_check:107 - 开始批量检测 1 个代理 +2026-06-14 23:25:19.883 | INFO | core.health_checker:batch_check:131 - 完成检测,共检测 1 个代理 +2026-06-14 23:25:19.884 | INFO | core.proxy_manager:check_all_proxies:89 - 检测到 1 个可用代理 +2026-06-14 23:25:19.884 | INFO | core.simple_proxy_forwarder:validate_proxies:43 - 开始验证 1 个代理 +2026-06-14 23:25:19.886 | INFO | core.simple_proxy_forwarder:validate_proxies:61 - 验证完成,1 个代理可用 +2026-06-14 23:25:19.886 | INFO | core.simple_proxy_forwarder:start:137 - 使用代理: 127.0.0.1:10808 (socks5) +2026-06-14 23:25:19.886 | INFO | core.simple_proxy_forwarder:_run_forwarder:155 - SOCKS5转发器已启动: 127.0.0.1:8745 +2026-06-14 23:25:19.886 | INFO | core.proxy_manager:start_service:115 - 代理服务已启动 +2026-06-14 23:28:39.036 | INFO | core.simple_proxy_forwarder:stop:212 - 转发器已停止 +2026-06-14 23:28:39.036 | INFO | core.proxy_manager:stop_service:131 - 代理服务已停止 +2026-06-14 23:28:55.425 | INFO | __main__:main:39 - ============================================================ +2026-06-14 23:28:55.425 | INFO | __main__:main:40 - WhereAmI - 多协议轮转代理工具 +2026-06-14 23:28:55.425 | INFO | __main__:main:41 - ============================================================ +2026-06-14 23:28:55.843 | INFO | __main__:main:54 - GUI界面已启动 +2026-06-14 23:29:02.029 | INFO | core.data_source:load_from_file:150 - 从本地文件加载代理: local.json +2026-06-14 23:29:02.030 | INFO | core.data_source:load_from_file:170 - 成功加载 1 个代理 +2026-06-14 23:29:02.030 | INFO | core.proxy_manager:load_proxies:61 - 加载了 1 个唯一代理 +2026-06-14 23:29:02.030 | INFO | core.health_checker:batch_check:107 - 开始批量检测 1 个代理 +2026-06-14 23:29:02.817 | INFO | core.health_checker:batch_check:131 - 完成检测,共检测 1 个代理 +2026-06-14 23:29:02.818 | INFO | core.proxy_manager:check_all_proxies:89 - 检测到 1 个可用代理 +2026-06-14 23:29:10.572 | INFO | core.data_source:load_from_file:150 - 从本地文件加载代理: local.json +2026-06-14 23:29:10.573 | INFO | core.data_source:load_from_file:170 - 成功加载 1 个代理 +2026-06-14 23:29:10.573 | INFO | core.proxy_manager:load_proxies:61 - 加载了 1 个唯一代理 +2026-06-14 23:29:10.573 | INFO | core.health_checker:batch_check:107 - 开始批量检测 1 个代理 +2026-06-14 23:29:11.692 | INFO | core.health_checker:batch_check:131 - 完成检测,共检测 1 个代理 +2026-06-14 23:29:11.692 | INFO | core.proxy_manager:check_all_proxies:89 - 检测到 1 个可用代理 +2026-06-14 23:29:22.365 | INFO | core.data_source:load_from_file:150 - 从本地文件加载代理: local.json +2026-06-14 23:29:22.366 | INFO | core.data_source:load_from_file:170 - 成功加载 1 个代理 +2026-06-14 23:29:22.366 | INFO | core.proxy_manager:load_proxies:61 - 加载了 1 个唯一代理 +2026-06-14 23:29:22.367 | INFO | core.health_checker:batch_check:107 - 开始批量检测 1 个代理 +2026-06-14 23:29:23.242 | INFO | core.health_checker:batch_check:131 - 完成检测,共检测 1 个代理 +2026-06-14 23:29:23.243 | INFO | core.proxy_manager:check_all_proxies:89 - 检测到 1 个可用代理 +2026-06-14 23:42:59.749 | INFO | __main__:main:39 - ============================================================ +2026-06-14 23:42:59.749 | INFO | __main__:main:40 - WhereAmI - 多协议轮转代理工具 +2026-06-14 23:42:59.749 | INFO | __main__:main:41 - ============================================================ +2026-06-14 23:43:00.039 | INFO | __main__:main:54 - GUI界面已启动 +2026-06-14 23:43:04.843 | INFO | core.data_source:fetch_from_web:27 - 开始从网页获取代理: http://cn.freevpnnode.com/free-proxy-for-thailand (共3页) +2026-06-14 23:43:04.844 | INFO | core.data_source:fetch_from_web:43 - 正在获取第 1/3 页: http://cn.freevpnnode.com/free-proxy-for-thailand?page=1 +2026-06-14 23:43:07.102 | INFO | core.data_source:fetch_from_web:54 - 第1页成功获取 30 个代理 +2026-06-14 23:43:07.102 | INFO | core.data_source:fetch_from_web:43 - 正在获取第 2/3 页: http://cn.freevpnnode.com/free-proxy-for-thailand?page=2 +2026-06-14 23:43:10.670 | INFO | core.data_source:fetch_from_web:54 - 第2页成功获取 30 个代理 +2026-06-14 23:43:10.671 | INFO | core.data_source:fetch_from_web:43 - 正在获取第 3/3 页: http://cn.freevpnnode.com/free-proxy-for-thailand?page=3 +2026-06-14 23:43:12.852 | INFO | core.data_source:fetch_from_web:54 - 第3页成功获取 30 个代理 +2026-06-14 23:43:12.852 | INFO | core.data_source:fetch_from_web:70 - 成功获取 90 个唯一代理(共90个,去重后) +2026-06-14 23:43:12.854 | INFO | core.data_source:save_to_file:217 - 保存 90 个代理到文件: proxy.json +2026-06-14 23:43:12.854 | INFO | core.data_source:fetch_from_web:75 - 代理已保存到: proxy.json +2026-06-14 23:43:12.856 | INFO | core.data_source:load_from_file:184 - 从本地文件加载代理: local.json +2026-06-14 23:43:12.856 | INFO | core.data_source:load_from_file:204 - 成功加载 1 个代理 +2026-06-14 23:43:12.856 | INFO | core.proxy_manager:load_proxies:64 - 加载了 91 个唯一代理 +2026-06-14 23:43:12.856 | INFO | core.health_checker:batch_check:107 - 开始批量检测 91 个代理 +2026-06-14 23:43:54.264 | INFO | core.health_checker:batch_check:131 - 完成检测,共检测 91 个代理 +2026-06-14 23:43:54.266 | INFO | core.proxy_manager:_sync_latency_to_file:128 - 已同步 90 个代理的延迟信息到 proxy.json +2026-06-14 23:43:54.266 | INFO | core.proxy_manager:check_all_proxies:95 - 检测到 1 个可用代理 +2026-06-14 23:49:40.924 | INFO | __main__:main:39 - ============================================================ +2026-06-14 23:49:40.924 | INFO | __main__:main:40 - WhereAmI - 多协议轮转代理工具 +2026-06-14 23:49:40.925 | INFO | __main__:main:41 - ============================================================ +2026-06-14 23:49:41.295 | INFO | __main__:main:54 - GUI界面已启动 +2026-06-14 23:50:08.001 | INFO | core.data_source:fetch_from_web:27 - 开始从网页获取代理: http://cn.freevpnnode.com/free-proxy-for-thailand (共1页) +2026-06-14 23:50:08.002 | INFO | core.data_source:fetch_from_web:43 - 正在获取第 1/1 页: http://cn.freevpnnode.com/free-proxy-for-thailand?page=1 +2026-06-14 23:50:11.397 | INFO | core.data_source:fetch_from_web:54 - 第1页成功获取 30 个代理 +2026-06-14 23:50:11.397 | INFO | core.data_source:fetch_from_web:70 - 成功获取 30 个唯一代理(共30个,去重后) +2026-06-14 23:50:11.398 | INFO | core.data_source:save_to_file:217 - 保存 30 个代理到文件: proxy.json +2026-06-14 23:50:11.398 | INFO | core.data_source:fetch_from_web:75 - 代理已保存到: proxy.json +2026-06-14 23:50:11.400 | INFO | core.proxy_manager:load_proxies:64 - 加载了 30 个唯一代理 +2026-06-14 23:50:11.400 | INFO | core.health_checker:batch_check:121 - 开始批量检测 30 个代理 +2026-06-14 23:50:26.402 | INFO | core.health_checker:batch_check:145 - 完成检测,共检测 30 个代理 +2026-06-14 23:50:26.403 | INFO | core.proxy_manager:_sync_latency_to_file:128 - 已同步 30 个代理的延迟信息到 proxy.json +2026-06-14 23:50:26.404 | INFO | core.proxy_manager:check_all_proxies:95 - 检测到 0 个可用代理 +2026-06-14 23:50:58.207 | INFO | core.data_source:load_from_file:184 - 从本地文件加载代理: local.json +2026-06-14 23:50:58.208 | INFO | core.data_source:load_from_file:204 - 成功加载 1 个代理 +2026-06-14 23:50:58.208 | INFO | core.proxy_manager:load_proxies:64 - 加载了 1 个唯一代理 +2026-06-14 23:50:58.208 | INFO | core.health_checker:batch_check:121 - 开始批量检测 1 个代理 +2026-06-14 23:50:59.152 | INFO | core.health_checker:batch_check:145 - 完成检测,共检测 1 个代理 +2026-06-14 23:50:59.153 | INFO | core.proxy_manager:check_all_proxies:95 - 检测到 1 个可用代理 +2026-06-14 23:51:59.874 | INFO | core.data_source:load_from_file:184 - 从本地文件加载代理: local.json +2026-06-14 23:51:59.875 | INFO | core.data_source:load_from_file:204 - 成功加载 1 个代理 +2026-06-14 23:51:59.875 | INFO | core.proxy_manager:load_proxies:64 - 加载了 1 个唯一代理 +2026-06-14 23:51:59.875 | INFO | core.health_checker:batch_check:121 - 开始批量检测 1 个代理 +2026-06-14 23:52:00.629 | INFO | core.health_checker:batch_check:145 - 完成检测,共检测 1 个代理 +2026-06-14 23:52:00.630 | INFO | core.proxy_manager:check_all_proxies:95 - 检测到 1 个可用代理 +2026-06-14 23:52:15.656 | INFO | core.data_source:load_from_file:184 - 从本地文件加载代理: local.json +2026-06-14 23:52:15.657 | INFO | core.data_source:load_from_file:204 - 成功加载 1 个代理 +2026-06-14 23:52:15.657 | INFO | core.proxy_manager:load_proxies:64 - 加载了 1 个唯一代理 +2026-06-14 23:52:15.658 | INFO | core.health_checker:batch_check:121 - 开始批量检测 1 个代理 +2026-06-14 23:52:16.452 | INFO | core.health_checker:batch_check:145 - 完成检测,共检测 1 个代理 +2026-06-14 23:52:16.453 | INFO | core.proxy_manager:check_all_proxies:95 - 检测到 1 个可用代理 +2026-06-15 00:03:41.657 | INFO | __main__:main:39 - ============================================================ +2026-06-15 00:03:41.658 | INFO | __main__:main:40 - WhereAmI - 多协议轮转代理工具 +2026-06-15 00:03:41.658 | INFO | __main__:main:41 - ============================================================ +2026-06-15 00:03:42.135 | INFO | __main__:main:54 - GUI界面已启动 +2026-06-15 00:03:44.142 | INFO | core.data_source:load_from_file:184 - 从本地文件加载代理: local.json +2026-06-15 00:03:44.142 | INFO | core.data_source:load_from_file:204 - 成功加载 2 个代理 +2026-06-15 00:03:44.142 | INFO | core.proxy_manager:load_proxies:64 - 加载了 2 个唯一代理 +2026-06-15 00:03:44.143 | INFO | core.health_checker:batch_check:121 - 开始批量检测 2 个代理 +2026-06-15 00:03:49.157 | INFO | core.health_checker:batch_check:145 - 完成检测,共检测 2 个代理 +2026-06-15 00:03:49.158 | INFO | core.proxy_manager:_sync_to_single_file:154 - 已同步 2 个代理的延迟信息到 local.json +2026-06-15 00:03:49.159 | INFO | core.proxy_manager:check_all_proxies:95 - 检测到 1 个可用代理 +2026-06-15 00:05:16.491 | INFO | core.data_source:load_from_file:184 - 从本地文件加载代理: local.json +2026-06-15 00:05:16.492 | INFO | core.data_source:load_from_file:204 - 成功加载 2 个代理 +2026-06-15 00:05:16.492 | INFO | core.proxy_manager:load_proxies:64 - 加载了 2 个唯一代理 +2026-06-15 00:05:16.492 | INFO | core.health_checker:batch_check:121 - 开始批量检测 2 个代理 +2026-06-15 00:05:21.497 | INFO | core.health_checker:batch_check:145 - 完成检测,共检测 2 个代理 +2026-06-15 00:05:21.497 | INFO | core.proxy_manager:_sync_to_single_file:154 - 已同步 2 个代理的延迟信息到 local.json +2026-06-15 00:05:21.498 | INFO | core.proxy_manager:check_all_proxies:95 - 检测到 1 个可用代理 +2026-06-15 00:05:25.137 | INFO | core.proxy_manager:set_proxies:72 - 设置代理列表: 1 个代理 +2026-06-15 00:05:25.138 | INFO | core.data_source:load_from_file:184 - 从本地文件加载代理: local.json +2026-06-15 00:05:25.138 | INFO | core.data_source:load_from_file:204 - 成功加载 2 个代理 +2026-06-15 00:05:25.138 | INFO | core.proxy_manager:load_proxies:64 - 加载了 2 个唯一代理 +2026-06-15 00:05:25.138 | INFO | core.health_checker:batch_check:121 - 开始批量检测 2 个代理 +2026-06-15 00:05:30.141 | INFO | core.health_checker:batch_check:145 - 完成检测,共检测 2 个代理 +2026-06-15 00:05:30.142 | INFO | core.proxy_manager:_sync_to_single_file:154 - 已同步 2 个代理的延迟信息到 local.json +2026-06-15 00:05:30.142 | INFO | core.proxy_manager:check_all_proxies:95 - 检测到 1 个可用代理 +2026-06-15 00:05:30.142 | INFO | core.simple_proxy_forwarder:validate_proxies:43 - 开始验证 1 个代理 +2026-06-15 00:05:30.144 | INFO | core.simple_proxy_forwarder:validate_proxies:61 - 验证完成,1 个代理可用 +2026-06-15 00:05:30.144 | INFO | core.simple_proxy_forwarder:start:137 - 使用代理: 127.0.0.1:10808 (socks5) +2026-06-15 00:05:30.145 | INFO | core.simple_proxy_forwarder:_run_forwarder:155 - SOCKS5转发器已启动: 127.0.0.1:8745 +2026-06-15 00:05:30.145 | INFO | core.proxy_manager:start_service:182 - 代理服务已启动 +2026-06-15 00:06:07.982 | INFO | core.simple_proxy_forwarder:switch_proxy:222 - 切换到代理: 127.0.0.1:10808 +2026-06-15 00:06:07.982 | INFO | core.proxy_manager:switch_to_next_proxy:223 - 成功切换到下一个代理: 127.0.0.1:10808 +2026-06-15 00:06:27.214 | INFO | core.simple_proxy_forwarder:stop:212 - 转发器已停止 +2026-06-15 00:06:27.214 | INFO | core.proxy_manager:stop_service:198 - 代理服务已停止 +2026-06-15 00:06:41.226 | INFO | core.data_source:load_from_file:184 - 从本地文件加载代理: local.json +2026-06-15 00:06:41.227 | INFO | core.data_source:load_from_file:204 - 成功加载 2 个代理 +2026-06-15 00:06:41.227 | INFO | core.proxy_manager:load_proxies:64 - 加载了 2 个唯一代理 +2026-06-15 00:06:41.227 | INFO | core.health_checker:batch_check:121 - 开始批量检测 2 个代理 +2026-06-15 00:06:52.540 | INFO | __main__:main:39 - ============================================================ +2026-06-15 00:06:52.541 | INFO | __main__:main:40 - WhereAmI - 多协议轮转代理工具 +2026-06-15 00:06:52.541 | INFO | __main__:main:41 - ============================================================ +2026-06-15 00:06:52.935 | INFO | __main__:main:54 - GUI界面已启动 +2026-06-15 00:06:54.619 | INFO | core.data_source:fetch_from_web:27 - 开始从网页获取代理: http://cn.freevpnnode.com/free-proxy-for-thailand (共3页) +2026-06-15 00:06:54.619 | INFO | core.data_source:fetch_from_web:43 - 正在获取第 1/3 页: http://cn.freevpnnode.com/free-proxy-for-thailand?page=1 +2026-06-15 00:06:56.765 | INFO | core.data_source:fetch_from_web:54 - 第1页成功获取 30 个代理 +2026-06-15 00:06:56.766 | INFO | core.data_source:fetch_from_web:43 - 正在获取第 2/3 页: http://cn.freevpnnode.com/free-proxy-for-thailand?page=2 +2026-06-15 00:06:59.006 | INFO | core.data_source:fetch_from_web:54 - 第2页成功获取 30 个代理 +2026-06-15 00:06:59.006 | INFO | core.data_source:fetch_from_web:43 - 正在获取第 3/3 页: http://cn.freevpnnode.com/free-proxy-for-thailand?page=3 +2026-06-15 00:07:01.748 | INFO | core.data_source:fetch_from_web:54 - 第3页成功获取 30 个代理 +2026-06-15 00:07:01.749 | INFO | core.data_source:fetch_from_web:70 - 成功获取 90 个唯一代理(共90个,去重后) +2026-06-15 00:07:01.751 | INFO | core.data_source:save_to_file:217 - 保存 90 个代理到文件: proxy.json +2026-06-15 00:07:01.752 | INFO | core.data_source:fetch_from_web:75 - 代理已保存到: proxy.json +2026-06-15 00:07:01.753 | INFO | core.data_source:load_from_file:184 - 从本地文件加载代理: local.json +2026-06-15 00:07:01.753 | INFO | core.data_source:load_from_file:204 - 成功加载 2 个代理 +2026-06-15 00:07:01.753 | INFO | core.proxy_manager:load_proxies:64 - 加载了 92 个唯一代理 +2026-06-15 00:07:01.754 | INFO | core.health_checker:batch_check:121 - 开始批量检测 92 个代理 +2026-06-15 00:07:45.350 | INFO | core.health_checker:batch_check:145 - 完成检测,共检测 92 个代理 +2026-06-15 00:07:45.352 | INFO | core.proxy_manager:_sync_to_single_file:154 - 已同步 90 个代理的延迟信息到 proxy.json +2026-06-15 00:07:45.353 | INFO | core.proxy_manager:_sync_to_single_file:154 - 已同步 2 个代理的延迟信息到 local.json +2026-06-15 00:07:45.353 | INFO | core.proxy_manager:check_all_proxies:95 - 检测到 1 个可用代理 +2026-06-15 00:10:08.957 | INFO | core.data_source:fetch_from_web:27 - 开始从网页获取代理: http://cn.freevpnnode.com/free-proxy-for-thailand (共3页) +2026-06-15 00:10:08.957 | INFO | core.data_source:fetch_from_web:43 - 正在获取第 1/3 页: http://cn.freevpnnode.com/free-proxy-for-thailand?page=1 +2026-06-15 00:10:12.772 | INFO | core.data_source:fetch_from_web:54 - 第1页成功获取 30 个代理 +2026-06-15 00:10:12.772 | INFO | core.data_source:fetch_from_web:43 - 正在获取第 2/3 页: http://cn.freevpnnode.com/free-proxy-for-thailand?page=2 +2026-06-15 00:10:15.405 | INFO | core.data_source:fetch_from_web:54 - 第2页成功获取 30 个代理 +2026-06-15 00:10:15.406 | INFO | core.data_source:fetch_from_web:43 - 正在获取第 3/3 页: http://cn.freevpnnode.com/free-proxy-for-thailand?page=3 +2026-06-15 00:10:17.962 | INFO | core.data_source:fetch_from_web:54 - 第3页成功获取 30 个代理 +2026-06-15 00:10:17.962 | INFO | core.data_source:fetch_from_web:70 - 成功获取 90 个唯一代理(共90个,去重后) +2026-06-15 00:10:17.963 | INFO | core.data_source:save_to_file:217 - 保存 90 个代理到文件: proxy.json +2026-06-15 00:10:17.964 | INFO | core.data_source:fetch_from_web:75 - 代理已保存到: proxy.json +2026-06-15 00:10:17.965 | INFO | core.data_source:load_from_file:184 - 从本地文件加载代理: local.json +2026-06-15 00:10:17.965 | INFO | core.data_source:load_from_file:204 - 成功加载 2 个代理 +2026-06-15 00:10:17.966 | INFO | core.proxy_manager:load_proxies:64 - 加载了 92 个唯一代理 +2026-06-15 00:10:17.966 | INFO | core.health_checker:batch_check:121 - 开始批量检测 92 个代理 +2026-06-15 00:11:01.708 | INFO | core.health_checker:batch_check:145 - 完成检测,共检测 92 个代理 +2026-06-15 00:11:01.710 | INFO | core.proxy_manager:_sync_to_single_file:154 - 已同步 90 个代理的延迟信息到 proxy.json +2026-06-15 00:11:01.711 | INFO | core.proxy_manager:_sync_to_single_file:154 - 已同步 2 个代理的延迟信息到 local.json +2026-06-15 00:11:01.711 | INFO | core.proxy_manager:check_all_proxies:95 - 检测到 1 个可用代理 +2026-06-15 00:15:06.941 | INFO | core.data_source:load_from_file:184 - 从本地文件加载代理: local.json +2026-06-15 00:15:06.942 | INFO | core.data_source:load_from_file:204 - 成功加载 3 个代理 +2026-06-15 00:15:06.942 | INFO | core.proxy_manager:load_proxies:64 - 加载了 2 个唯一代理 +2026-06-15 00:15:06.942 | INFO | core.health_checker:batch_check:121 - 开始批量检测 2 个代理 +2026-06-15 00:15:11.956 | INFO | core.health_checker:batch_check:145 - 完成检测,共检测 2 个代理 +2026-06-15 00:15:11.957 | INFO | core.proxy_manager:_sync_to_single_file:154 - 已同步 2 个代理的延迟信息到 local.json +2026-06-15 00:15:11.957 | INFO | core.proxy_manager:check_all_proxies:95 - 检测到 1 个可用代理 +2026-06-15 00:16:21.371 | INFO | core.data_source:load_from_file:184 - 从本地文件加载代理: local.json +2026-06-15 00:16:21.371 | INFO | core.data_source:load_from_file:204 - 成功加载 2 个代理 +2026-06-15 00:16:21.372 | INFO | core.proxy_manager:load_proxies:64 - 加载了 2 个唯一代理 +2026-06-15 00:16:21.372 | INFO | core.health_checker:batch_check:121 - 开始批量检测 2 个代理 +2026-06-15 00:16:26.375 | INFO | core.health_checker:batch_check:145 - 完成检测,共检测 2 个代理 +2026-06-15 00:16:26.376 | INFO | core.proxy_manager:_sync_to_single_file:154 - 已同步 2 个代理的延迟信息到 local.json +2026-06-15 00:16:26.376 | INFO | core.proxy_manager:check_all_proxies:95 - 检测到 1 个可用代理 +2026-06-15 00:17:26.994 | INFO | core.data_source:load_from_file:184 - 从本地文件加载代理: local.json +2026-06-15 00:17:26.995 | INFO | core.data_source:load_from_file:204 - 成功加载 2 个代理 +2026-06-15 00:17:26.995 | INFO | core.proxy_manager:load_proxies:64 - 加载了 2 个唯一代理 +2026-06-15 00:17:26.995 | INFO | core.health_checker:batch_check:121 - 开始批量检测 2 个代理 +2026-06-15 00:17:32.001 | INFO | core.health_checker:batch_check:145 - 完成检测,共检测 2 个代理 +2026-06-15 00:17:32.002 | INFO | core.proxy_manager:_sync_to_single_file:154 - 已同步 2 个代理的延迟信息到 local.json +2026-06-15 00:17:32.002 | INFO | core.proxy_manager:check_all_proxies:95 - 检测到 1 个可用代理 +2026-06-15 00:34:23.972 | INFO | __main__:main:39 - ============================================================ +2026-06-15 00:34:23.972 | INFO | __main__:main:40 - WhereAmI - 多协议轮转代理工具 +2026-06-15 00:34:23.973 | INFO | __main__:main:41 - ============================================================ +2026-06-15 00:34:24.253 | INFO | __main__:main:54 - GUI界面已启动 +2026-06-15 00:34:28.490 | INFO | core.data_source:load_from_file:184 - 从本地文件加载代理: local.json +2026-06-15 00:34:28.491 | INFO | core.data_source:load_from_file:204 - 成功加载 2 个代理 +2026-06-15 00:34:28.491 | INFO | core.proxy_manager:load_proxies:64 - 加载了 2 个唯一代理 +2026-06-15 00:34:28.491 | INFO | core.health_checker:batch_check:163 - 开始批量检测 2 个代理 +2026-06-15 00:34:33.505 | INFO | core.health_checker:batch_check:187 - 完成检测,共检测 2 个代理 +2026-06-15 00:34:33.506 | INFO | core.proxy_manager:_sync_to_single_file:154 - 已同步 2 个代理的延迟信息到 local.json +2026-06-15 00:34:33.506 | INFO | core.proxy_manager:check_all_proxies:95 - 检测到 1 个可用代理 +2026-06-15 00:36:31.683 | INFO | __main__:main:39 - ============================================================ +2026-06-15 00:36:31.683 | INFO | __main__:main:40 - WhereAmI - 多协议轮转代理工具 +2026-06-15 00:36:31.683 | INFO | __main__:main:41 - ============================================================ +2026-06-15 00:36:32.045 | INFO | __main__:main:54 - GUI界面已启动 +2026-06-15 00:36:34.568 | INFO | core.data_source:load_from_file:184 - 从本地文件加载代理: local.json +2026-06-15 00:36:34.568 | INFO | core.data_source:load_from_file:204 - 成功加载 2 个代理 +2026-06-15 00:36:34.568 | INFO | core.proxy_manager:load_proxies:64 - 加载了 2 个唯一代理 +2026-06-15 00:36:34.569 | INFO | core.health_checker:batch_check:163 - 开始批量检测 2 个代理 +2026-06-15 00:36:35.070 | INFO | core.health_checker:batch_check:187 - 完成检测,共检测 2 个代理 +2026-06-15 00:36:35.071 | INFO | core.proxy_manager:_sync_to_single_file:154 - 已同步 2 个代理的延迟信息到 local.json +2026-06-15 00:36:35.071 | INFO | core.proxy_manager:check_all_proxies:95 - 检测到 2 个可用代理 +2026-06-15 00:36:54.470 | INFO | core.proxy_manager:set_proxies:72 - 设置代理列表: 1 个代理 +2026-06-15 00:36:54.471 | INFO | core.data_source:load_from_file:184 - 从本地文件加载代理: local.json +2026-06-15 00:36:54.471 | INFO | core.data_source:load_from_file:204 - 成功加载 2 个代理 +2026-06-15 00:36:54.471 | INFO | core.proxy_manager:load_proxies:64 - 加载了 2 个唯一代理 +2026-06-15 00:36:54.471 | INFO | core.health_checker:batch_check:163 - 开始批量检测 2 个代理 +2026-06-15 00:36:54.925 | INFO | core.health_checker:batch_check:187 - 完成检测,共检测 2 个代理 +2026-06-15 00:36:54.926 | INFO | core.proxy_manager:_sync_to_single_file:154 - 已同步 2 个代理的延迟信息到 local.json +2026-06-15 00:36:54.927 | INFO | core.proxy_manager:check_all_proxies:95 - 检测到 2 个可用代理 +2026-06-15 00:36:54.927 | INFO | core.simple_proxy_forwarder:validate_proxies:43 - 开始验证 2 个代理 +2026-06-15 00:36:55.149 | INFO | core.simple_proxy_forwarder:validate_proxies:61 - 验证完成,2 个代理可用 +2026-06-15 00:36:55.149 | INFO | core.simple_proxy_forwarder:start:137 - 使用代理: 127.0.0.1:10808 (socks5) +2026-06-15 00:36:55.149 | INFO | core.simple_proxy_forwarder:_run_forwarder:155 - SOCKS5转发器已启动: 127.0.0.1:8745 +2026-06-15 00:36:55.150 | INFO | core.proxy_manager:start_service:182 - 代理服务已启动 +2026-06-15 00:37:47.384 | INFO | core.simple_proxy_forwarder:switch_proxy:222 - 切换到代理: 127.0.0.1:1080 +2026-06-15 00:37:47.385 | INFO | core.proxy_manager:switch_to_next_proxy:223 - 成功切换到下一个代理: 127.0.0.1:1080 +2026-06-15 00:37:54.467 | INFO | core.simple_proxy_forwarder:stop:212 - 转发器已停止 +2026-06-15 00:37:54.467 | INFO | core.proxy_manager:stop_service:198 - 代理服务已停止 diff --git a/main.py b/main.py new file mode 100644 index 0000000..dd4c803 --- /dev/null +++ b/main.py @@ -0,0 +1,65 @@ +"""主程序入口""" +import sys +import os +from loguru import logger +from PyQt6.QtWidgets import QApplication +from gui import MainWindow + + +def setup_logging(): + """设置日志""" + # 创建logs目录 + os.makedirs('logs', exist_ok=True) + + # 配置loguru + logger.remove() # 移除默认处理器 + + # 文件日志 + logger.add( + 'logs/whereami.log', + rotation='10 MB', + retention='5 days', + encoding='utf-8', + level='INFO' + ) + + # 控制台日志 + logger.add( + sys.stderr, + level='INFO', + format='{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {name}:{function}:{line} - {message}' + ) + + +def main(): + """主函数""" + # 设置日志 + setup_logging() + + logger.info("=" * 60) + logger.info("WhereAmI - 多协议轮转代理工具") + logger.info("=" * 60) + + try: + # 创建应用 + app = QApplication(sys.argv) + + # 设置应用样式 + app.setStyle('Fusion') + + # 创建主窗口 + window = MainWindow('config.yaml') + window.show() + + logger.info("GUI界面已启动") + + # 运行应用 + sys.exit(app.exec()) + + except Exception as e: + logger.error(f"程序异常退出: {str(e)}", exc_info=True) + sys.exit(1) + + +if __name__ == '__main__': + main() diff --git a/old/old_design.png b/old/old_design.png new file mode 100644 index 0000000000000000000000000000000000000000..3c777b477b44d2a16bbb216aa1dc805470318851 GIT binary patch literal 426686 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�X57-4~8lY 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
  • =uhcn;B6zry$q8iJa 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 literal 0 HcmV?d00001 diff --git a/old/page.html b/old/page.html new file mode 100644 index 0000000..ab2f19b --- /dev/null +++ b/old/page.html @@ -0,0 +1,739 @@ + + + + + + + + + + 泰国免费代理服务器列表 | 实时更新高匿名代理 - Free VPN Node, 第1页 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    +
    +

    免费泰国代理服务器汇总 - 高速、稳定、实时更新

    +

    想要访问泰国本地内容、绕过地域限制或增强网络匿名性?我们提供全球最大的免费泰国代理服务器列表之一,涵盖 HTTP(S)、SOCKS4 和 SOCKS5 协议,满足不同需求。

    +

    为什么选择我们的泰国代理?

    +
      +
    1. 实时更新:我们的系统每 3 分钟检测一次,剔除失效代理,确保你获取的 IP 始终可用。
    2. +
    3. 严格筛选:每天自动验证超过 100 万个代理,只保留高速、稳定的服务器。
    4. +
    5. 广泛兼容:支持浏览器、爬虫脚本、数据分析工具等,轻松集成到你的工作流程中。
    6. +
    +

    如何高效使用?

    +
      +
    • 按协议筛选:SOCKS5 适合高隐私需求,HTTP(S) 适合普通网页访问。
    • +
    • 检查延迟:免费代理速度差异大,建议测试多个 IP 选择最优连接。
    • +
    • 注意安全性:避免在免费代理上登录银行账户或传输敏感数据,以防信息泄露。
    • +
    +

    免费 vs. 付费代理

    +

    虽然我们的列表完全免费,但付费代理通常更稳定、速度更快。如果你需要长期稳定的泰国 IP,可以考虑低延迟的付费方案。

    +

    现在,试试这些最新可用的泰国代理,解锁地理限制内容吧!

    +
    + +
    +
    2026.06.13分享SSR、V2Ray、Clash免费节点,包含美国、韩国、德国、日本、新加坡,免费节点仅供学习研究,请勿非法使用。 【查看详情】
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    IP地址端口号用户名密码国家协议Anonymity速度运行时间回复延迟更新
    171.6.75.1118080**** hidden text**** hidden text + + 泰国 + TH + socks4elite (HIA)1 ms98%4797 ms160 ms3 min
    202.139.198.153030**** hidden text**** hidden text + + 泰国 + TH + socks4elite (HIA)1 ms100%1777 ms168 ms4 min
    116.58.254.2018080**** hidden text**** hidden text + + 泰国 + TH + socks5elite (HIA)1 ms79%4311 ms168 ms8 d
    118.173.233.394898**** hidden text**** hidden text + + 泰国 + TH + socks5elite (HIA)1 ms46%5202 ms169 ms3 min
    118.174.152.1568080**** hidden text**** hidden text + + 泰国 + TH + socks4elite (HIA)1 ms68%4884 ms169 ms4 min
    203.158.221.15280**** hidden text**** hidden text + + 泰国 + TH + socks4elite (HIA)1 ms100%3379 ms170 ms3 min
    110.78.138.1258080**** hidden text**** hidden text + + 泰国 + TH + socks4elite (HIA)1 ms83%3898 ms170 ms3 min
    61.7.138.2144145**** hidden text**** hidden text + + 泰国 + TH + socks4elite (HIA)1 ms87%3699 ms170 ms8 d
    61.7.184.1304153**** hidden text**** hidden text + + 泰国 + TH + socks4elite (HIA)1 ms80%4076 ms170 ms1 min
    101.51.88.2474145**** hidden text**** hidden text + + 泰国 + TH + socks4elite (HIA)1 ms65%3112 ms170 ms1 min
    118.174.219.1652168**** hidden text**** hidden text + + 泰国 + TH + socks5elite (HIA)1 ms81%2113 ms171 ms6 min
    110.78.149.2214145**** hidden text**** hidden text + + 泰国 + TH + socks4elite (HIA)1 ms76%4301 ms172 ms4 min
    101.109.100.698080**** hidden text**** hidden text + + 泰国 + TH + socks4elite (HIA)1 ms46%1624 ms172 ms2 min
    110.78.82.705678**** hidden text**** hidden text + + 泰国 + TH + socks4elite (HIA)1 ms93%3402 ms172 ms7 min
    134.236.16.1258080**** hidden text**** hidden text + + 泰国 + TH + socks4elite (HIA)1 ms68%3804 ms172 ms2 min
    1.2.212.354145**** hidden text**** hidden text + + 泰国 + TH + socks4elite (HIA)1 ms69%4428 ms172 ms3 min
    110.78.149.1104145**** hidden text**** hidden text + + 泰国 + TH + socks4elite (HIA)1 ms74%4886 ms172 ms8 d
    110.77.228.17680**** hidden text**** hidden text + + 泰国 + TH + socks4elite (HIA)1 ms13%2998 ms172 ms3 min
    101.109.107.1448080**** hidden text**** hidden text + + 泰国 + TH + socks4elite (HIA)1 ms48%4099 ms172 ms8 min
    118.174.162.128080**** hidden text**** hidden text + + 泰国 + TH + socks5elite (HIA)1 ms63%2384 ms172 ms7 min
    61.7.184.2164153**** hidden text**** hidden text + + 泰国 + TH + socks4elite (HIA)1 ms79%4906 ms173 ms8 d
    101.51.241.1264153**** hidden text**** hidden text + + 泰国 + TH + socks4elite (HIA)1 ms52%4505 ms173 ms8 min
    119.59.101.11180**** hidden text**** hidden text + + 泰国 + TH + socks4elite (HIA)1 ms100%2280 ms173 ms8 d
    1.179.148.331080**** hidden text**** hidden text + + 泰国 + TH + socks4elite (HIA)1 ms94%4387 ms173 ms2 min
    223.205.189.1645678**** hidden text**** hidden text + + 泰国 + TH + socks4elite (HIA)1 ms97%4104 ms173 ms8 d
    110.78.186.2204145**** hidden text**** hidden text + + 泰国 + TH + socks4elite (HIA)1 ms62%2796 ms173 ms8 d
    101.109.48.548080**** hidden text**** hidden text + + 泰国 + TH + socks4elite (HIA)1 ms75%3782 ms173 ms2 min
    171.6.78.1648080**** hidden text**** hidden text + + 泰国 + TH + socks4elite (HIA)1 ms100%5006 ms174 ms2 min
    134.236.30.925678**** hidden text**** hidden text + + 泰国 + TH + socks4elite (HIA)1 ms59%3696 ms174 ms8 d
    118.173.230.191081**** hidden text**** hidden text + + 泰国 + TH + socks5elite (HIA)1 ms99%3001 ms174 ms1 min
    +
    +
    +

    泰国代理服务器:解锁数字边界的智能钥匙

    +

    核心价值解析:为什么选择泰国代理?

    +

    在全球化互联网时代,地理限制成为了数字世界中的无形围墙。泰国代理服务器恰如一把智能钥匙,为您打开这扇限制之门。通过隐藏真实IP地址,它不仅能提升您的网络匿名性,更为关键业务场景提供支持:

    +
      +
    • 内容解锁专家:独家访问泰国本土流媒体平台、新闻网站和政府门户
    • +
    • 数据采集利器:从泰国服务器获取精准的本地化数据,助力市场调研
    • +
    • 隐私防护盾牌:为远程工作者和数字游民提供额外的安全层
    • +
    • 网络研究工具:帮助学者研究泰国网络生态的特殊性
    • +
    +

    我们的技术优势:不只是免费

    +

    我们提供的泰国代理服务之所以出众,源于三大技术创新:

    +
      +
    1. 智能刷新系统:采用AI算法每180秒动态更新代理池,淘汰失效节点,确保95%以上的可用率
    2. +
    3. 协议矩阵支持: +
        +
      • HTTP(S):基础网页浏览的理想选择
      • +
      • SOCKS4:平衡速度与兼容性
      • +
      • SOCKS5:支持UDP和IPv6的进阶之选
      • +
      +
    4. +
    5. 三维筛选引擎:可同时按延迟(ms)、匿名等级(1-3级)、在线率(%)进行精准筛选
    6. +
    +

    性能优化建议

    +

    根据实测数据,我们建议:

    +
      +
    • 视频流媒体:选择延迟<150ms的SOCKS5代理
    • +
    • 大数据采集:使用住宅代理轮换池
    • +
    • 即时通讯:固定1-2个高匿名节点
    • +
    +

    我们观察到一个有趣现象:莫斯科地区的代理在欧美时段(UTC+3 18:00-24:00)通常具有更好的国际带宽,这或许与当地ISP的流量调度策略有关。

    +

    您是否知道?泰国代理在应对某些国际CDN限制时表现出独特优势,这源于其特殊的网络基础设施布局。尝试不同的节点位置,可能会发现意外的连接优化效果。

    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/old/start.sh b/old/start.sh new file mode 100644 index 0000000..e6bf579 --- /dev/null +++ b/old/start.sh @@ -0,0 +1,46 @@ +#!/bin/bash + +echo "========================================" +echo "WhereAmI - 多协议轮转代理工具" +echo "========================================" +echo "" + +# 检查Python环境 +echo "正在检查Python环境..." +if ! command -v python3 &> /dev/null; then + echo "[错误] 未找到Python3,请先安装Python 3.9+" + exit 1 +fi + +PYTHON_VERSION=$(python3 --version | awk '{print $2}' | cut -d. -f1,2) +echo "[成功] Python版本: $PYTHON_VERSION" +echo "" + +# 检查依赖包 +echo "正在检查依赖包..." +python3 -c "import PyQt6, requests, bs4, yaml, socks, loguru" 2>/dev/null +if [ $? -ne 0 ]; then + echo "[提示] 正在安装依赖包..." + pip3 install -r requirements.txt + if [ $? -ne 0 ]; then + echo "[错误] 依赖安装失败" + exit 1 + fi + echo "[成功] 依赖安装完成" +else + echo "[成功] 依赖包已安装" +fi + +echo "" +echo "========================================" +echo "启动 WhereAmI..." +echo "========================================" +echo "" + +python3 main.py + +if [ $? -ne 0 ]; then + echo "" + echo "[错误] 程序异常退出,请查看logs/whereami.log" + exit 1 +fi diff --git a/old/开发文档.md b/old/开发文档.md new file mode 100644 index 0000000..22db384 --- /dev/null +++ b/old/开发文档.md @@ -0,0 +1,248 @@ +# WhereAmI - 多协议轮转代理工具 + +## 项目概述 +**项目名称**:WhereAmI +**项目描述**:基于Python的轮转代理工具,将各种外部代理(HTTP/HTTPS/SOCKS4/SOCKS5)通过本地SOCKS5转发服务部署到127.0.0.1:8745,配合Proxifier使用 + +--- + +## 核心功能需求 + +### 1. 多协议支持 +- **输入协议**:HTTP、HTTPS、SOCKS4、SOCKS5 +- **输出协议**:统一转换为本地SOCKS5代理(127.0.0.1:8745) +- **实现方式**:python先连接对应代理,然后转发到本地8745端口,应用程序连接socks5代理的8745端口即可 + +### 2. 代理切换机制 +#### 2.1 手动切换模式 +- GUI界面提供代理列表,用户可手动选择并切换到指定代理 +- 显示当前使用代理的详细信息(IP、端口、延迟、状态等) + +#### 2.2 自动定时切换模式 +- **切换条件**: + 1. 达到设定的时间间隔(默认300秒,可配置) + 2. 且10秒内无活动连接(可配置) +- **切换策略**: + - 按顺序切换到下一个可用节点 + - 跳过已失效或延迟过高的节点 + - 记录切换历史 + +### 3. 代理获取方式 +#### 3.1 自动获取(网络抓取) +- **默认URL**:`http://cn.freevpnnode.com/free-proxy-for-thailand/` +- **可配置**:GUI中可修改抓取URL +- **解析流程**: + 1. 请求网页获取HTML内容 + 2. 提取表格中的代理信息(参考page.html结构) + 3. 字段映射:IP地址、端口、用户名、密码、国家、协议、匿名级别、速度、运行时间、延迟、更新时间 + 4. 生成JSON文件保存(格式参照local.json) + +#### 3.2 本地文件读取 +- **文件格式**:JSON(参照local.json模板) +- **必填字段**: + ```json + { + "ip_address": "string", + "port": "integer", + "username": "string (\"no need\"表示无需认证)", + "password": "string (\"no need\"表示无需认证)", + "protocol": "http|https|socks4|socks5" + } + ``` +- **可选字段**:country、anonymity、speed、uptime_percentage、response_time、latency、last_updated + +### 4. 代理健康检测 +#### 4.1 检测方法 +- **延迟测试**: + - TCP连接超时:5秒 + - 合格标准:< 500ms(可配置) + - 优秀标准:< 200ms + +- **连通性测试**: + - Google连接测试:访问 `https://www.google.com/` + - 超时时间:10秒 + - 预期响应:204状态码 + +#### 4.2 检测周期 +- **初始检测**:获取代理后立即全量检测 +- **定期复检**:每60秒检测一次正在使用的代理 +- **失败重试**:连续失败3次标记为不可用,10分钟后重新检测 + +#### 4.3 代理分级 +- **可用**:延迟<500ms 且 Google测试通过 +- **优秀**:延迟<200ms 且 Google测试通过 +- **不可用**:延迟>=500ms 或 Google测试失败 或 连续失败3次 + +### 5. GUI界面设计 +#### 5.1 主界面布局 +- **顶部区域**: + - 服务状态指示器(运行/停止) + - 当前代理信息卡片(IP、端口、协议、延迟、国家) + - 快速操作按钮(开始/停止、立即切换) + +- **中部区域**: + - 代理列表表格(支持排序、筛选) + - 列:IP、端口、协议、国家、延迟、状态、最后检测时间 + - 状态标识:可用 🟡一般 🔴不可用 + - 实时延迟趋势图(最近5分钟) + +- **底部区域**: + - 日志输出窗口(可清空) + - 统计信息(总代理数、可用数、已切换次数) + +#### 5.2 配置面板 +- **代理源设置**: + - 自动获取URL输入框 + - 本地文件路径选择 + - 刷新间隔设置(分钟) + +- **轮转策略设置**: + - 切换模式:手动 / 自动 + - 自动切换间隔(秒) + - 无活动等待时间(秒) + - 延迟阈值(毫秒) + +- **输出设置**: + - SOCKS5监听地址(默认127.0.0.1) + - SOCKS5监听端口(默认8745) + +- **检测设置**: + - 检测超时时间(秒) + - 连通性测试URL + - 复检间隔(秒) + +#### 5.3 交互功能 +- 右键菜单:复制代理信息、标记为优先、删除 +- 拖拽排序:调整代理优先级 +- 导入/导出:配置文件、代理列表 +- 历史记录:查看切换历史、性能统计 + +### 6. 配置管理 +#### 6.1 配置文件格式(config.yaml) +```yaml +# 代理源配置 +proxy_sources: + auto_fetch: + enabled: true + url: "http://cn.freevpnnode.com/free-proxy-for-thailand/" + refresh_interval: 10 # 分钟 + local_file: + enabled: true + path: "local.json" + +# 轮转策略 +rotation: + mode: "manual" # manual | auto + auto_switch_interval: 300 # 秒 + min_idle_time: 10 # 无活动连接最小等待时间(秒) + skip_high_latency: true # 跳过延迟>阈值的代理 + latency_threshold: 500 # 毫秒 + +# 输出配置 +output: + host: "127.0.0.1" + port: 8745 + +# 检测配置 +health_check: + timeout: 5 # TCP连接超时(秒) + connectivity_test_url: "https://www.google.com/" + connectivity_timeout: 10 # 连通性测试超时(秒) + recheck_interval: 60 # 复检间隔(秒) + max_failures: 3 # 最大失败次数 + retry_delay: 600 # 失败后重试延迟(秒) + +# 日志配置 +logging: + level: "INFO" # DEBUG | INFO | WARNING | ERROR + file: "whereami.log" + max_size: 10 # MB + backup_count: 5 +``` + +### 3. 数据流设计 +``` +[网页/本地文件] → [ProxyManager] → [HealthChecker] → [可用代理池] + ↓ +[RotationEngine] ← [无活动检测] ← [SOCKS Server] ← [客户端连接] + ↓ + [切换代理] → [更新SOCKS Server上游] +``` + +--- + +## 异常处理与容错 + +### 1. 常见异常场景 +- **所有代理失效**: + - 提示用户并尝试重新获取代理 + - 保持最后一次可用的代理继续服务 + - 后台持续检测新代理 + +- **网络波动**: + - 短暂断网(<30秒):保持当前代理,不切换 + - 长时间断网(>=30秒):暂停服务,显示警告 + - 网络恢复:自动重新检测并恢复服务 + +- **端口占用**: + - 检测8745端口是否被占用 + - 如被占用,提示用户关闭占用进程或更换端口 + +- **Proxifier未运行**: + - 仅作为提示,不影响程序运行 + - 在GUI中显示Proxifier状态建议 + +### 2. 数据安全 +- **认证信息加密**:使用Fernet对称加密存储username/password +- **日志脱敏**:日志中隐藏完整的IP和密码信息 +- **HTTPS证书**:测试时可选择跳过证书验证(配置项) + +--- + +## 性能优化 + +### 2. 缓存策略 +- **检测结果缓存**:缓存60秒,避免重复检测 +- **代理列表缓存**:本地JSON缓存,减少网络请求 +- **配置热重载**:修改配置后无需重启 + +### 3. 资源控制 +- **最大并发检测数**:10个(可配置) +- **代理池上限**:100个(可配置) +- **内存限制**:超过阈值时清理旧数据 + +--- + +## 扩展性设计 + +### 1. 插件化数据源 +- 定义DataSource接口,支持添加新的代理网站 +- 示例:ssrfree.com、proxynova.com等 + +### 2. 自定义测试脚本 +- 允许用户编写Python脚本自定义连通性测试方法 +- 通过配置文件指定测试脚本路径 + +### 3. API接口(未来) +- RESTful API:获取当前代理、切换代理、获取统计 +- WebSocket:实时推送代理状态变化 + + + + +GUI功能细化: +实时状态显示: + 当前使用的代理信息(IP、端口、协议、延迟) + 可用代理列表及状态(在线/离线/延迟) + 历史使用记录 +操作按钮: + 开始/停止服务 + 立即切换下一个代理 + 使用本地代理 + 获取免费代理 (使用cn.freevpnnode.com源) + 获取其他代理 (预留按钮,启动scratch.py并检测) + 导入/导出配置 +监控图表: + 延迟趋势图 + 切换历史记录 +使用一个次级页面展示配置并且可以在GUI上快速更改 \ No newline at end of file diff --git a/proxy.json b/proxy.json new file mode 100644 index 0000000..11f0352 --- /dev/null +++ b/proxy.json @@ -0,0 +1,1442 @@ +[ + { + "ip_address": "171.6.75.111", + "port": 8080, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "98%", + "response_time": "4797 ms", + "latency": "timeout", + "last_updated": "3 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "202.139.198.15", + "port": 3030, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "100%", + "response_time": "1777 ms", + "latency": "timeout", + "last_updated": "4 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "116.58.254.201", + "port": 8080, + "username": "no need", + "password": "no need", + "protocol": "socks5", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "79%", + "response_time": "4311 ms", + "latency": "timeout", + "last_updated": "8 d", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "118.173.233.39", + "port": 4898, + "username": "no need", + "password": "no need", + "protocol": "socks5", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "46%", + "response_time": "5202 ms", + "latency": "timeout", + "last_updated": "3 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "118.174.152.156", + "port": 8080, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "68%", + "response_time": "4884 ms", + "latency": "timeout", + "last_updated": "4 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "203.158.221.152", + "port": 80, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "100%", + "response_time": "3379 ms", + "latency": "timeout", + "last_updated": "3 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "110.78.138.125", + "port": 8080, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "83%", + "response_time": "3898 ms", + "latency": "timeout", + "last_updated": "3 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "61.7.138.214", + "port": 4145, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "87%", + "response_time": "3699 ms", + "latency": "timeout", + "last_updated": "8 d", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "61.7.184.130", + "port": 4153, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "80%", + "response_time": "4076 ms", + "latency": "timeout", + "last_updated": "1 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "101.51.88.247", + "port": 4145, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "65%", + "response_time": "3112 ms", + "latency": "timeout", + "last_updated": "1 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "118.174.219.165", + "port": 2168, + "username": "no need", + "password": "no need", + "protocol": "socks5", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "81%", + "response_time": "2113 ms", + "latency": "timeout", + "last_updated": "6 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "110.78.149.221", + "port": 4145, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "76%", + "response_time": "4301 ms", + "latency": "timeout", + "last_updated": "4 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "101.109.100.69", + "port": 8080, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "46%", + "response_time": "1624 ms", + "latency": "timeout", + "last_updated": "2 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "110.78.82.70", + "port": 5678, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "93%", + "response_time": "3402 ms", + "latency": "timeout", + "last_updated": "7 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "134.236.16.125", + "port": 8080, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "68%", + "response_time": "3804 ms", + "latency": "timeout", + "last_updated": "2 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "1.2.212.35", + "port": 4145, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "69%", + "response_time": "4428 ms", + "latency": "timeout", + "last_updated": "3 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "110.78.149.110", + "port": 4145, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "74%", + "response_time": "4886 ms", + "latency": "timeout", + "last_updated": "8 d", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "110.77.228.176", + "port": 80, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "13%", + "response_time": "2998 ms", + "latency": "timeout", + "last_updated": "3 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "101.109.107.144", + "port": 8080, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "48%", + "response_time": "4099 ms", + "latency": "timeout", + "last_updated": "8 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "118.174.162.12", + "port": 8080, + "username": "no need", + "password": "no need", + "protocol": "socks5", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "63%", + "response_time": "2384 ms", + "latency": "timeout", + "last_updated": "7 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "61.7.184.216", + "port": 4153, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "79%", + "response_time": "4906 ms", + "latency": "timeout", + "last_updated": "8 d", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "101.51.241.126", + "port": 4153, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "52%", + "response_time": "4505 ms", + "latency": "timeout", + "last_updated": "8 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "119.59.101.111", + "port": 80, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "100%", + "response_time": "2280 ms", + "latency": "timeout", + "last_updated": "8 d", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "1.179.148.33", + "port": 1080, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "94%", + "response_time": "4387 ms", + "latency": "timeout", + "last_updated": "2 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "223.205.189.164", + "port": 5678, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "97%", + "response_time": "4104 ms", + "latency": "timeout", + "last_updated": "8 d", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "110.78.186.220", + "port": 4145, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "62%", + "response_time": "2796 ms", + "latency": "timeout", + "last_updated": "8 d", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "101.109.48.54", + "port": 8080, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "75%", + "response_time": "3782 ms", + "latency": "timeout", + "last_updated": "2 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "171.6.78.164", + "port": 8080, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "100%", + "response_time": "5006 ms", + "latency": "timeout", + "last_updated": "2 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "134.236.30.92", + "port": 5678, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "59%", + "response_time": "3696 ms", + "latency": "timeout", + "last_updated": "8 d", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "118.173.230.19", + "port": 1081, + "username": "no need", + "password": "no need", + "protocol": "socks5", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "99%", + "response_time": "3001 ms", + "latency": "timeout", + "last_updated": "1 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "182.52.70.117", + "port": 4145, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "99%", + "response_time": "4966 ms", + "latency": "timeout", + "last_updated": "2 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "110.78.149.65", + "port": 4145, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "78%", + "response_time": "3127 ms", + "latency": "timeout", + "last_updated": "7 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "110.78.149.12", + "port": 4145, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "72%", + "response_time": "3608 ms", + "latency": "timeout", + "last_updated": "8 d", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "1.1.193.51", + "port": 4145, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "40%", + "response_time": "2268 ms", + "latency": "timeout", + "last_updated": "2 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "118.173.230.149", + "port": 1080, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "69%", + "response_time": "3984 ms", + "latency": "timeout", + "last_updated": "3 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "110.78.149.34", + "port": 4145, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "73%", + "response_time": "4899 ms", + "latency": "timeout", + "last_updated": "1 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "110.78.149.43", + "port": 4145, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "77%", + "response_time": "3408 ms", + "latency": "timeout", + "last_updated": "8 d", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "125.26.224.230", + "port": 8080, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "76%", + "response_time": "1992 ms", + "latency": "timeout", + "last_updated": "6 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "1.4.157.35", + "port": 4694, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "99%", + "response_time": "2973 ms", + "latency": "timeout", + "last_updated": "56 sec", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "110.77.232.172", + "port": 4145, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "80%", + "response_time": "5092 ms", + "latency": "timeout", + "last_updated": "8 d", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "115.178.63.22", + "port": 12736, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "93%", + "response_time": "4418 ms", + "latency": "timeout", + "last_updated": "2 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "49.48.93.179", + "port": 8080, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "97%", + "response_time": "3907 ms", + "latency": "timeout", + "last_updated": "8 d", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "61.7.138.226", + "port": 4145, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "76%", + "response_time": "5072 ms", + "latency": "timeout", + "last_updated": "8 d", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "118.174.219.5", + "port": 4153, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "85%", + "response_time": "1228 ms", + "latency": "timeout", + "last_updated": "6 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "110.77.184.106", + "port": 4145, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "87%", + "response_time": "4271 ms", + "latency": "timeout", + "last_updated": "2 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "134.236.117.98", + "port": 4145, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "42%", + "response_time": "3519 ms", + "latency": "timeout", + "last_updated": "8 d", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "1.0.136.76", + "port": 4145, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "56%", + "response_time": "4982 ms", + "latency": "timeout", + "last_updated": "8 d", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "1.10.133.19", + "port": 8080, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "89%", + "response_time": "3570 ms", + "latency": "timeout", + "last_updated": "3 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "159.138.255.141", + "port": 8080, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "82%", + "response_time": "703 ms", + "latency": "timeout", + "last_updated": "1 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "1.0.163.213", + "port": 4145, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "59%", + "response_time": "3782 ms", + "latency": "timeout", + "last_updated": "1 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "1.10.232.206", + "port": 4145, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "65%", + "response_time": "2694 ms", + "latency": "timeout", + "last_updated": "8 d", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "110.78.149.139", + "port": 4145, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "71%", + "response_time": "4405 ms", + "latency": "timeout", + "last_updated": "4 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "110.78.149.159", + "port": 4145, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "70%", + "response_time": "46 ms", + "latency": "timeout", + "last_updated": "24 sec", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "1.20.169.77", + "port": 4145, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "84%", + "response_time": "3794 ms", + "latency": "timeout", + "last_updated": "8 d", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "223.204.69.116", + "port": 4153, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "83%", + "response_time": "3718 ms", + "latency": "timeout", + "last_updated": "8 d", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "1.10.133.77", + "port": 4145, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "70%", + "response_time": "3991 ms", + "latency": "timeout", + "last_updated": "4 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "125.27.10.84", + "port": 4153, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "98%", + "response_time": "5012 ms", + "latency": "timeout", + "last_updated": "8 d", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "110.78.148.227", + "port": 4145, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "84%", + "response_time": "491 ms", + "latency": "timeout", + "last_updated": "8 d", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "125.26.22.7", + "port": 5678, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "94%", + "response_time": "4176 ms", + "latency": "timeout", + "last_updated": "3 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "101.108.12.69", + "port": 4145, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "60%", + "response_time": "4909 ms", + "latency": "timeout", + "last_updated": "8 d", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "1.179.148.9", + "port": 36476, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "97%", + "response_time": "4386 ms", + "latency": "timeout", + "last_updated": "7 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "101.108.0.189", + "port": 4145, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "55%", + "response_time": "3893 ms", + "latency": "timeout", + "last_updated": "8 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "1.20.169.71", + "port": 4153, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "83%", + "response_time": "3984 ms", + "latency": "timeout", + "last_updated": "8 d", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "110.164.163.34", + "port": 52517, + "username": "no need", + "password": "no need", + "protocol": "socks5", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "100%", + "response_time": "158 ms", + "latency": "timeout", + "last_updated": "6 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "101.109.245.154", + "port": 55644, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "99%", + "response_time": "4698 ms", + "latency": "timeout", + "last_updated": "1 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "110.238.116.82", + "port": 8015, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "100%", + "response_time": "2693 ms", + "latency": "timeout", + "last_updated": "6 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "223.27.210.77", + "port": 8080, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "100%", + "response_time": "902 ms", + "latency": "timeout", + "last_updated": "6 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "184.82.76.136", + "port": 8080, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "55%", + "response_time": "4275 ms", + "latency": "timeout", + "last_updated": "1 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "134.236.58.204", + "port": 8080, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "61%", + "response_time": "3701 ms", + "latency": "timeout", + "last_updated": "54 sec", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "1.10.229.230", + "port": 4145, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "50%", + "response_time": "3919 ms", + "latency": "timeout", + "last_updated": "8 d", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "118.174.209.189", + "port": 4145, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "68%", + "response_time": "5119 ms", + "latency": "timeout", + "last_updated": "4 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "118.172.47.97", + "port": 51327, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "98%", + "response_time": "4303 ms", + "latency": "timeout", + "last_updated": "7 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "1.10.133.134", + "port": 4145, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "70%", + "response_time": "5096 ms", + "latency": "timeout", + "last_updated": "4 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "110.78.147.184", + "port": 8080, + "username": "no need", + "password": "no need", + "protocol": "socks5", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "82%", + "response_time": "2331 ms", + "latency": "timeout", + "last_updated": "2 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "1.0.136.207", + "port": 4145, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "53%", + "response_time": "4876 ms", + "latency": "timeout", + "last_updated": "8 d", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "171.6.119.82", + "port": 8080, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "95%", + "response_time": "3282 ms", + "latency": "timeout", + "last_updated": "16 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "203.170.222.4", + "port": 8080, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "97%", + "response_time": "4703 ms", + "latency": "timeout", + "last_updated": "2 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "1.10.238.200", + "port": 4145, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "44%", + "response_time": "3482 ms", + "latency": "timeout", + "last_updated": "7 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "1.10.133.237", + "port": 4145, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "61%", + "response_time": "2302 ms", + "latency": "timeout", + "last_updated": "2 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "101.109.251.42", + "port": 4145, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "99%", + "response_time": "4022 ms", + "latency": "timeout", + "last_updated": "8 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "110.77.236.112", + "port": 4153, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "87%", + "response_time": "4819 ms", + "latency": "timeout", + "last_updated": "1 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "61.7.138.69", + "port": 4145, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "85%", + "response_time": "4196 ms", + "latency": "timeout", + "last_updated": "8 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "101.108.178.143", + "port": 4145, + "username": "no need", + "password": "no need", + "protocol": "socks5", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "59%", + "response_time": "1186 ms", + "latency": "timeout", + "last_updated": "5 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "49.48.120.123", + "port": 8080, + "username": "no need", + "password": "no need", + "protocol": "socks5", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "98%", + "response_time": "4878 ms", + "latency": "timeout", + "last_updated": "8 d", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "203.150.113.249", + "port": 14153, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "8%", + "response_time": "4267 ms", + "latency": "timeout", + "last_updated": "3 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "113.53.91.10", + "port": 5678, + "username": "no need", + "password": "no need", + "protocol": "socks5", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "98%", + "response_time": "213 ms", + "latency": "timeout", + "last_updated": "3 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "119.42.71.103", + "port": 4145, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "74%", + "response_time": "2812 ms", + "latency": "timeout", + "last_updated": "8 d", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "1.4.145.244", + "port": 4145, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "67%", + "response_time": "589 ms", + "latency": "timeout", + "last_updated": "8 d", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "1.2.214.8", + "port": 4145, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "70%", + "response_time": "5066 ms", + "latency": "timeout", + "last_updated": "7 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + }, + { + "ip_address": "101.51.109.214", + "port": 4145, + "username": "no need", + "password": "no need", + "protocol": "socks4", + "country": "泰国", + "anonymity": "elite (HIA)", + "speed": "1 ms", + "uptime_percentage": "49%", + "response_time": "4599 ms", + "latency": "timeout", + "last_updated": "6 min", + "status": "unavailable", + "last_checked": "2026-06-15T00:11:01.709800" + } +] \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..c7904d6 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,31 @@ +# WhereAmI - 多协议轮转代理工具依赖包 + +# GUI框架 +PyQt6>=6.4.0 + +# 网络请求 +requests>=2.31.0 +aiohttp>=3.8.0 +aiohttp-socks>=0.8.0 + +# HTML解析 +beautifulsoup4>=4.12.0 +lxml>=4.9.0 + +# 配置文件 +PyYAML>=6.0.1 + +# SOCKS支持 +PySocks>=1.7.1 + +# 加密 +cryptography>=41.0.0 + +# 系统监控 +psutil>=5.9.0 + +# 日志 +loguru>=0.7.0 + +# 图表(可选) +matplotlib>=3.7.0 diff --git a/scratch.py b/scratch.py new file mode 100644 index 0000000..add52fb --- /dev/null +++ b/scratch.py @@ -0,0 +1,172 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +Scratch 测试脚本 - 预留用于代理测试 + +此文件用于快速测试和实验新功能。 +可以通过 GUI 的"获取其他代理(预留)"按钮启动此脚本。 + +使用方法: +1. 在此文件中编写测试代码 +2. 运行: python scratch.py +3. 观察测试结果 +4. 根据需要调整代码 + +注意: +- 此文件不会被版本控制追踪 +- 可以随时修改和重写 +- 适合快速原型开发和调试 +""" + +import sys +import os +from loguru import logger + +# 添加项目根目录到路径 +sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) + +from core import ProxyManager, DataSource, HealthChecker +from core.models import ProxyInfo, ProxyProtocol, ProxyStatus + + +def test_proxy_connection(): + """测试代理连接""" + logger.info("=" * 60) + logger.info("开始代理连接测试") + logger.info("=" * 60) + + # 示例:测试单个代理 + proxy = ProxyInfo( + ip_address="127.0.0.1", + port=1080, + username="no need", + password="no need", + protocol=ProxyProtocol.SOCKS5, + country="CN" + ) + + logger.info(f"测试代理: {proxy.get_address()}") + + # TODO: 在这里添加您的测试代码 + # 例如: + # - 测试代理连通性 + # - 测试代理速度 + # - 测试代理匿名性 + # - 批量测试多个代理 + + logger.info("测试完成") + + +def test_data_source(): + """测试数据源""" + logger.info("=" * 60) + logger.info("开始数据源测试") + logger.info("=" * 60) + + config = { + 'proxy_sources': { + 'auto_fetch': { + 'enabled': False, + 'url': '', + 'output_file': 'proxy.json' + }, + 'local_file': { + 'enabled': True, + 'path': 'local.json' + } + } + } + + data_source = DataSource(config) + + # 加载本地代理 + proxies = data_source.load_from_file('local.json') + logger.info(f"加载了 {len(proxies)} 个代理") + + for i, proxy in enumerate(proxies, 1): + logger.info(f"代理{i}: {proxy.get_address()} ({proxy.protocol.value})") + + logger.info("数据源测试完成") + + +def test_health_check(): + """测试健康检测""" + logger.info("=" * 60) + logger.info("开始健康检测测试") + logger.info("=" * 60) + + config = { + 'health_check': { + 'timeout': 5, + 'connectivity_test_url': 'https://www.google.com/', + 'connectivity_timeout': 10 + } + } + + checker = HealthChecker(config) + + # 创建测试代理 + proxy = ProxyInfo( + ip_address="127.0.0.1", + port=1080, + protocol=ProxyProtocol.SOCKS5 + ) + + logger.info(f"检测代理: {proxy.get_address()}") + status = checker.check_proxy(proxy) + + logger.info(f"检测结果: {status}") + logger.info(f"延迟: {proxy.latency_ms:.0f}ms") + + logger.info("健康检测测试完成") + + +def main(): + """主函数""" + logger.info("Scratch 测试脚本启动") + logger.info("=" * 60) + + # 选择要运行的测试 + tests = { + '1': ('代理连接测试', test_proxy_connection), + '2': ('数据源测试', test_data_source), + '3': ('健康检测测试', test_health_check), + } + + logger.info("可用测试:") + for key, (name, _) in tests.items(): + logger.info(f" {key}. {name}") + + choice = input("\n请选择测试 (1/2/3),或直接回车运行所有测试: ").strip() + + if choice in tests: + # 运行选定的测试 + test_name, test_func = tests[choice] + logger.info(f"\n运行测试: {test_name}") + try: + test_func() + except Exception as e: + logger.error(f"测试失败: {e}") + import traceback + traceback.print_exc() + else: + # 运行所有测试 + logger.info("\n运行所有测试") + for test_name, test_func in tests.values(): + logger.info(f"\n{'='*60}") + logger.info(f"运行: {test_name}") + logger.info(f"{'='*60}") + try: + test_func() + except Exception as e: + logger.error(f"测试失败: {e}") + import traceback + traceback.print_exc() + + logger.info("\n" + "=" * 60) + logger.info("所有测试完成") + logger.info("=" * 60) + + +if __name__ == "__main__": + main() diff --git a/start.bat b/start.bat new file mode 100644 index 0000000..e35324d --- /dev/null +++ b/start.bat @@ -0,0 +1,44 @@ +@echo off +chcp 65001 >nul +echo ======================================== +echo WhereAmI - 多协议轮转代理工具 +echo ======================================== +echo. +echo 正在检查Python环境... +python --version >nul 2>&1 +if errorlevel 1 ( + echo [错误] 未找到Python,请先安装Python 3.9+ + pause + exit /b 1 +) + +echo [成功] Python环境正常 +echo. +echo 正在检查依赖包... +python -c "import PyQt6, requests, bs4, yaml, socks, loguru" >nul 2>&1 +if errorlevel 1 ( + echo [提示] 正在安装依赖包... + pip install -r requirements.txt + if errorlevel 1 ( + echo [错误] 依赖安装失败 + pause + exit /b 1 + ) + echo [成功] 依赖安装完成 +) else ( + echo [成功] 依赖包已安装 +) + +echo. +echo ======================================== +echo 启动 WhereAmI... +echo ======================================== +echo. + +python main.py + +if errorlevel 1 ( + echo. + echo [错误] 程序异常退出,请查看logs/whereami.log + pause +)
    + +
  • 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μwCV3?U;F5PAO)I)douXEEWCjH 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