重构代理池系统:简化架构并增强核心功能
后端变更: - 移除 tasks_manager.py 和 core/auth.py,简化架构 - 新增 core/scheduler.py 验证调度器,替代原有任务管理 - 大幅优化 api_server.py:统一错误处理、增强参数验证、支持调度器控制 - validator.py 增强 SOCKS4/SOCKS5 代理验证支持 - config.py 清理废弃配置(WebSocket、API Key、认证开关) - SQLite 数据库操作性能优化 前端变更: - 移除任务管理页面 (CrawlerTasks) 和 WebSocket 相关代码 - 路由简化为 4 个核心页面:总览、代理列表、插件管理、设置 - 提取前端工具函数(clipboard、confirm、format)和 API 类型定义 - 优化 CSS 架构:完善 variables、utilities、element-plus 样式 - Dashboard、Plugins、ProxyList、Settings 页面 UI/UX 优化 - App.vue 响应式侧边栏和页面过渡动画优化 其他: - 移除 PowerShell 启动脚本,简化 Windows 批处理脚本 - 新增 README_SOCKS.md SOCKS 代理支持文档 - .env.example 和 .gitignore 更新
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import sys
|
||||
import os
|
||||
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||||
|
||||
from core.crawler import BasePlugin
|
||||
from core.log import logger
|
||||
@@ -29,6 +29,11 @@ class Fate0Plugin(BasePlugin):
|
||||
port = data.get('port')
|
||||
protocol = data.get('type', 'http')
|
||||
|
||||
# 协议标准化
|
||||
protocol = protocol.lower().strip()
|
||||
if protocol not in ('http', 'https', 'socks4', 'socks5'):
|
||||
protocol = 'http'
|
||||
|
||||
if ip and port:
|
||||
yield ip, int(port), protocol
|
||||
count += 1
|
||||
|
||||
@@ -12,7 +12,9 @@ class ProxyListDownloadPlugin(BasePlugin):
|
||||
self.name = "ProxyListDownload"
|
||||
self.urls = [
|
||||
"https://www.proxy-list.download/api/v1/get?type=http",
|
||||
"https://www.proxy-list.download/api/v1/get?type=https"
|
||||
"https://www.proxy-list.download/api/v1/get?type=https",
|
||||
"https://www.proxy-list.download/api/v1/get?type=socks4",
|
||||
"https://www.proxy-list.download/api/v1/get?type=socks5"
|
||||
]
|
||||
|
||||
async def parse(self, html):
|
||||
@@ -24,6 +26,16 @@ class ProxyListDownloadPlugin(BasePlugin):
|
||||
lines = html.split('\n')
|
||||
|
||||
count = 0
|
||||
# 根据 URL 判断协议类型
|
||||
if 'type=socks4' in self.current_url:
|
||||
protocol = 'socks4'
|
||||
elif 'type=socks5' in self.current_url:
|
||||
protocol = 'socks5'
|
||||
elif 'type=https' in self.current_url:
|
||||
protocol = 'https'
|
||||
else:
|
||||
protocol = 'http'
|
||||
|
||||
for line in lines:
|
||||
line = line.strip()
|
||||
if not line:
|
||||
@@ -34,7 +46,6 @@ class ProxyListDownloadPlugin(BasePlugin):
|
||||
if len(parts) >= 2:
|
||||
ip = parts[0]
|
||||
port = parts[1]
|
||||
protocol = 'http' if 'type=http' in self.current_url else 'https'
|
||||
yield ip, int(port), protocol
|
||||
count += 1
|
||||
|
||||
|
||||
Reference in New Issue
Block a user