yml2213
|
ab4b5e7f08
|
fix: mark_bad改为带冷却期的软隔离,防止代理池快速枯竭
- 失败1次: 冷却30s后可重新入池(指数退避:30s→60s→120s)
- 连续失败3次: 才永久移出池
- 选代理时优先跳过冷却中的代理,池子全冷却时退而求其次
- 成功归还代理时清除失败记录(release_proxy)
- 解决日志中09:02:23后代理被逐个误杀导致池枯竭的问题
|
2026-06-23 09:36:57 +08:00 |
|
yml2213
|
3b36175bbb
|
fix: 改用Roundcube API获取验证码,修复邮件时间解析不可靠问题
- 新增Roundcube Webmail登录+JSON API读取邮件列表(含精确日期)
- Roundcube优先,read.php降为备用回退
- 解析Roundcube返回的中文日期格式(今天/昨天/星期X HH:MM)
- 修复read.php时间字段被MIME编码Subject污染导致'保守拒绝'误判
- 修复邮件时间UTC/本地时区8小时偏差导致正常邮件被跳过的问题
- read.php备用模式下解析不到时间不再保守拒绝,改为放行
|
2026-06-23 09:34:44 +08:00 |
|
yml2213
|
3a065dfd98
|
优化启动脚本
|
2026-06-23 09:06:06 +08:00 |
|
yml2213
|
98728bee87
|
fix: 修复前端7处eslint错误和6处警告
- AccountsPage/CookiePage/UsersPage/LoginTasksPage/ProxyPage:
将数据加载函数改为useCallback包裹,补全useEffect依赖项
- LoginTasksPage: loadAccounts和loadTasks改为useCallback
- MainLayout: 补全navigate依赖
- eslint.config.js: 关闭react-hooks/set-state-in-effect(对初始
数据获取场景过严),降级react-refresh/only-export-components为warn
(Provider/Hook/Type共存文件是合理设计)
|
2026-06-23 08:42:00 +08:00 |
|
yml2213
|
dd56de9bd4
|
fix: 修复proxy_service和account_service中不当的顶层import
- proxy_service.py: 将requests和WhitelistManager改为函数内延迟import,
避免启动时加载不需要的依赖;移除未使用的get_exit_ip_via_proxy导入
- account_service.py: 移除未使用的func、joinedload、AuditLog、
user_has_permission顶层导入
|
2026-06-23 08:35:29 +08:00 |
|
yml2213
|
2ab6724543
|
refactor: 补全services层+消除core/models.py冗余+修复network.py缩进错误
高优先级问题1 - Router层业务逻辑泄漏:
- 新建 services/proxy_service.py: 从routers/proxy.py提取ProxyService类,
封装代理/白名单测试逻辑、全局状态管理、所有core/ import
- 新建 services/account_service.py: 从routers/accounts.py提取
split_account_line、cookie_account_ids_query、parse_and_build_accounts,
封装core.douyu.email_verifier的import
- 重写routers/proxy.py为薄HTTP/WS层,移除所有core/直接依赖
- 精简routers/accounts.py,从account_service导入业务函数
- 将_active_batches全局状态移入login_service.py的BatchRegistry类
- routers/login.py改为使用batch_registry单例
高优先级问题2 - 两套models.py冗余:
- 删除core/models.py(Account dataclass + ProxyConfig死代码)
- 在core/douyu/login.py新增AccountLike Protocol替代Account dataclass
- login_service.py中Account(...)构造改为SimpleNamespace(...)
- 清理core/__init__.py导出
附带修复:
- core/geetest/common/network.py的get_picture()函数缩进错误
(缺少if match:块和data赋值语句)
|
2026-06-23 07:34:17 +08:00 |
|
yml2213
|
12c31c2e09
|
refactor: 消除前端52处any类型+删除冗余requirements.txt+调试print改日志
- 删除 requirements.txt,pyproject.toml 为唯一依赖源(含 requests[socks] extra)
- core/geetest 下 5 处 print() 替换为 loguru logger.debug()
- api/modules.ts 新增 13 个响应接口,消除所有 api.xxx<any, any>
- 新建 utils/error.ts 提供 getErrorMessage(e: unknown) 安全取消息
- 11 个页面组件 catch (e: any) 改为 catch (e: unknown)
- useState<any[]>、columns: any[]、render 参数全部类型化
- TypeScript 类型检查零错误通过
|
2026-06-23 07:14:08 +08:00 |
|
yml2213
|
453a637480
|
refactor: 修复9项中等架构问题
安全修复:
- WebSocket 端点添加认证(cookie/token),防止未授权窃听日志
- SPA serve_spa 添加路径遍历防护(resolve + relative_to 检查)
- Token 改用 httpOnly Cookie 存储,移除前端 localStorage token(防 XSS 窃取)
- 添加安全响应头中间件(X-Content-Type-Options/X-Frame-Options/Referrer-Policy)
- HTTP 请求日志脱敏请求体中的 password/secret/token 等敏感字段
- 权限检查统一使用 user_has_permission(考虑自定义权限,修复 has_permission 忽略 custom_permissions 的缺陷)
性能与稳定性:
- cookies.py 列表接口修复 N+1 查询(改为批量查询 Account)
- login_service.py run() 结束时关闭 DB Session(防止连接泄漏)
- _active_batches/_active_tests 全局字典添加 threading.Lock(防止并发竞态)
配置优化:
- CORS 源支持环境变量 CORS_ORIGINS 配置
- Uvicorn reload 支持环境变量 UVICORN_RELOAD 控制(生产环境默认关闭)
- Cookie 安全标志支持环境变量 COOKIE_SECURE 配置(HTTPS 部署时启用)
- logs.py 权限不足返回 HTTP 403(原来返回 200 + message)
|
2026-06-23 06:51:01 +08:00 |
|
yml2213
|
db384701a9
|
fix(security): JWT密钥与默认账号改用环境变量,清理泄露凭据
- JWT_SECRET_KEY 改从环境变量读取,未设置时使用临时随机密钥并告警
- 默认管理员账号密码改用 ADMIN_USERNAME/ADMIN_PASSWORD 环境变量配置
- 移除登录页及启动/部署脚本中的默认密码明文提示
- docker-compose.yml 添加环境变量支持(从 .env 文件读取)
- 新增 .env.example 配置文档,.gitignore 添加 .env 规则
- git rm --cached 清理已追踪的 data/accounts.json 和 data/cookies/敏感文件
|
2026-06-23 06:42:37 +08:00 |
|
yml2213
|
2ccc2a9336
|
修复并发账号分配到同一个代理的问题
问题:get_proxy每次返回池中第一个代理,导致并发账号用同一个代理,
容易触发斗鱼/极验风控。
修复:
- 增加_in_use集合,get_proxy取代理时标记为使用中,避免重复分配
- 代理池空但所有代理都在使用中时,允许复用(兜底)
- 新增release_proxy方法,登录完成后归还代理到池
- login.py的finally块中调用release_proxy,确保成功/失败都归还
- mark_bad同时从_in_use移除
|
2026-06-23 01:41:46 +08:00 |
|
yml2213
|
c1c9d186d1
|
修复验证码提取到旧邮件的问题
问题:HTTP读邮件接口返回最新一封邮件,但可能是之前其他账号的旧验证码。
日志显示提取到485932(06-22的)和242740(25分钟前的),提交后报邮箱验证码错误。
根因:
1. 时间解析正则匹配到了HTML标签'</label>'前缀,导致parsedate_to_datetime失败
2. 解析失败后保守'纳入候选',导致旧验证码被使用
修复:
- 先清理HTML标签再提取时间
- 支持RFC2822格式和YYYY-MM-DD HH:MM:SS格式
- 解析失败时保守'拒绝'(而不是纳入候选),避免使用旧验证码
- 5项时间解析测试全部通过
|
2026-06-23 01:34:57 +08:00 |
|
yml2213
|
5a4805814f
|
修复账号删除报错+添加批量删除功能
- 修复单个删除报错:删除账号前先删除关联的LoginTask(外键约束)
- 新增批量删除接口 DELETE /api/accounts/batch/delete
- 路由顺序:/batch/delete 在 /{account_id} 前注册避免路径冲突
- 前端添加批量删除按钮(带确认弹窗)
- 前端添加 batchDelete API
|
2026-06-23 01:29:03 +08:00 |
|
yml2213
|
d47b8e24fa
|
邮箱验证改用HTTP接口替代IMAP
- 通过 http://111.229.206.54:8000/read.php 读取邮件,不再依赖IMAP
- 解决IMAP密码错误/授权码过期导致45%登录失败的问题
- 错误密码不再抛异常,返回None由上层处理
- 兼容原有EmailVerifier接口签名,login.py无需改动
|
2026-06-23 01:25:38 +08:00 |
|
yml2213
|
021b96628e
|
修复Docker构建:uv pip install需要README.md(pyproject.toml声明了readme)
|
2026-06-23 00:59:59 +08:00 |
|
yml2213
|
56de33a285
|
修复前端TypeScript编译错误
- CookiePage: blob类型转换为BlobPart,移除Tag的size属性
- UsersPage: 移除Divider的orientation属性(类型不兼容)
|
2026-06-23 00:59:02 +08:00 |
|
yml2213
|
157793cf0f
|
修复Dockerfile构建失败:移除README.md的COPY(被.dockerignore排除)
|
2026-06-23 00:57:27 +08:00 |
|
yml2213
|
93d358f214
|
添加Docker部署方案
- 多阶段Dockerfile:第一阶段构建前端(npm),第二阶段Python运行时(uv+opencv)
- docker-compose.yml:单服务,data/logs目录挂载持久化
- deploy.sh一键部署脚本:自动构建+启动+健康检查
- .dockerignore排除不必要文件减小构建上下文
- main.py添加前端静态文件服务(生产环境单端口部署)
- README更新部署文档和代理配置说明
|
2026-06-23 00:54:48 +08:00 |
|
yml2213
|
da2fedd484
|
优化代理管理与增加请求日志系统
代理优化(P0+P1):
- 修复极验失败后代理刷新空操作bug(共享ProxyManager+白名单参数)
- 极验请求超时从(3.05,12)调大到(10,30)
- 白名单sync_ip加全局锁防并发限流,保留多个出口IP应对漂移
- 代理池缓存共享:Condition防并发获取+mark_bad移除坏代理
- 适配代理API的JSON响应格式(code/data/白名单错误)
- 简化代理验证只验斗鱼主站,减少日志噪音
- 获取代理前主动同步白名单(解决ow=1模式不报白名单错误的问题)
- 每次重试重新检测出口IP并同步白名单
请求日志系统:
- 新增HttpLogger记录请求/响应详情到JSONL文件
- login.py的_request和proxy.py的verify_proxy_url接入日志
- 新增/api/logs路由查看和清空HTTP详情日志
- 前端新增请求日志页面(筛选/搜索/分页/自动刷新/详情查看)
其他:
- 添加pysocks依赖支持SOCKS5代理
- gitignore添加*.log
|
2026-06-23 00:50:57 +08:00 |
|
 yml2213andClaude Fable 5
|
8fdf8d4b69
|
优化代理获取和登录逻辑
- 每个账号独立获取代理,不再共用一个代理IP
- 代理预检失败只标记该账号失败,不终止整个批次
- 代理验证改为并发:verify_proxies_concurrent 多IP同时验证
- resolve_working_proxy 多IP并发验证,找到可用即返回
- parse_proxy_response 改为返回列表,支持多行/逗号分隔
- 邮箱验证码匹配收件人地址,防止多账号并发取错验证码
- 修正 mail.bdhg.xyz 旧数据端口和SSL配置
- bdhg.xyz 默认配置改为 143端口非SSL
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-06-22 22:44:01 +08:00 |
|
yml2213
|
9f6b405571
|
优化代理
|
2026-06-22 21:14:38 +08:00 |
|
 yml2213andClaude Fable 5
|
52102655ac
|
修复IMAP连接:支持非SSL端口143
- IMAP服务器 111.229.206.54 只开放143端口(非SSL),993不通
- 默认配置改为端口143、ssl=False
- EmailVerifier 增加 use_ssl 参数,支持 IMAP4 和 IMAP4_SSL
- Account 模型增加 email_imap_ssl 字段
- 数据库迁移:新增列 + 修正旧数据端口和SSL设置
- 导入账号时自动填充 ssl 配置
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-06-22 20:58:31 +08:00 |
|
 yml2213andClaude Fable 5
|
2b8716cf72
|
登录任务增加代理切换次数设置
- 后端: LoginBatchRequest 增加 max_proxy_retries 字段,默认10,0=无限
- 核心: DouyuLogin 极验验证循环根据 max_proxy_retries 控制重试
- 前端: 筛选栏增加代理切换次数输入框,Tooltip 提示0=无限切换直到成功
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-06-22 20:40:30 +08:00 |
|
 yml2213andClaude Fable 5
|
bc40d334b9
|
修复 requests 2.34+ 移除 ProxyError 导致的登录报错
- requests 2.34+ 已移除 ProxyError 属性
- 代理错误统一为 ConnectionError,通过错误信息判断是否为代理问题
- 代理错误时刷新代理并重试,非代理连接错误也重试
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-06-22 20:32:38 +08:00 |
|
 yml2213andClaude Fable 5
|
1b20317b42
|
Cookie导出增加格式选择
- 后端: export接口增加 format 参数,支持 csv 和 custom 格式
- custom 格式: 账号----密码----ck,导出为 txt
- 后端: 导出用批量查 Account 替代逐条查询,消除 N+1
- 前端: 导出按钮改为下拉菜单可选格式
- 修复: blob 导出时不再取 .data(拦截器已提取)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-06-22 20:20:59 +08:00 |
|
 yml2213andClaude Fable 5
|
e7edb56107
|
修复HTTPS环境下WebSocket连接被拦截的问题
- WebSocket URL 根据页面协议自动选择 ws/wss
- 使用 window.location.host 替代硬编码端口,适配内网穿透代理场景
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-06-22 20:12:46 +08:00 |
|
 yml2213andClaude Fable 5
|
4522421293
|
增加自动亮色/暗色主题切换 + 清理 pyc 文件
- 新建 store/theme.tsx: 亮色/暗色/跟随系统三种模式
- App.tsx: ThemeProvider + ConfigProvider 暗色算法
- MainLayout: 侧边栏主题切换按钮,Sider/Content 随主题变化
- 所有页面硬编码颜色替换为 antd token
- AssignmentsPage: Tag 用预设颜色名适配暗色,未选中背景用 colorBgContainer
- LoginPage: 暗色深色渐变背景
- 从 git 移除所有 __pycache__/*.pyc 文件
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-06-22 20:09:57 +08:00 |
|
 yml2213andClaude Fable 5
|
2f9b1a8eb2
|
重试失败任务时复用旧记录而非创建新记录
- 重试时查找该账号最近一条失败任务,更新其状态为 pending
- 避免同一账号在列表中出现多条重复记录
- 仅复用 failed/error 状态的任务,首次登录仍新建记录
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-06-22 19:37:18 +08:00 |
|
 yml2213andClaude Fable 5
|
accb76b9da
|
修复登录任务页面加载慢的问题
- 后端: list_tasks 用 IN 批量查 Account 替代逐条查询,消除 N+1
- 后端: list_accounts 用 joinedload 预加载 assigned_user,消除懒加载
- 前端: 首次加载 accounts 和 tasks 并行请求
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-06-22 19:34:13 +08:00 |
|
 yml2213andClaude Fable 5
|
a996028f5b
|
修改IMAP默认服务器地址为统一代理
- 移除旧的 bdhg.xyz 等默认域名映射
- 未匹配的邮箱域名统一使用 111.229.206.54 IMAP代理
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-06-22 19:31:21 +08:00 |
|
 yml2213andClaude Fable 5
|
72bcd1274c
|
优化登录任务界面 + 修复时间显示 + 增加删除功能
- 筛选栏改为单行横排,概览精简为一行文字
- 任务列表全宽展示,日志移到底部可折叠
- 页面使用百分比布局,一屏展示无外层滚动
- 登录任务增加单条删除和批量删除功能
- 后端: datetime.utcnow 替换为 datetime.now(timezone.utc)
- 后端: schemas 序列化统一输出带时区 ISO 格式
- 前端: 新增 utils/time.ts 统一时间格式化工具
- 前端: CookiePage/LoginTasksPage 时间列使用 formatTime()
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-06-22 17:56:48 +08:00 |
|
yml2213
|
8771d91a30
|
优化权限控制
|
2026-06-22 17:07:29 +08:00 |
|
yml2213
|
480dfa6085
|
Cookie 管理优化
|
2026-06-22 16:36:23 +08:00 |
|
yml2213
|
48b6a1623b
|
优化分配功能
|
2026-06-22 16:23:34 +08:00 |
|
yml2213
|
f94b323ad8
|
优化代理和重试逻辑
|
2026-06-22 15:54:45 +08:00 |
|
yml2213
|
9fba12aad0
|
增加重试
|
2026-06-22 15:45:48 +08:00 |
|
yml2213
|
2443d23316
|
chore: 停止跟踪 data/web.db
|
2026-06-22 15:44:11 +08:00 |
|
yml2213
|
9af92fc2a9
|
增加了账号管理的分组功能
|
2026-06-22 15:09:51 +08:00 |
|
yml2213
|
5fa91c1bb4
|
优化退出登录, cookie 可以复制
|
2026-06-22 14:54:32 +08:00 |
|
yml2213
|
627f06d0a0
|
优化 ui
|
2026-06-22 14:21:39 +08:00 |
|
yml2213
|
b08f0a647d
|
优化代理配置
|
2026-06-22 13:59:03 +08:00 |
|
yml2213
|
63c1ffa046
|
彻底优化项目结构,使用 web
|
2026-06-22 13:39:03 +08:00 |
|
yml2213
|
347edb8103
|
初步增加 web 界面
|
2026-06-22 13:11:15 +08:00 |
|
yml2213
|
4c924375aa
|
白名单 ok
|
2026-06-22 11:29:22 +08:00 |
|
yml2213
|
66b03a7d89
|
优化 gui 不急
|
2026-06-22 10:10:51 +08:00 |
|
yml2213
|
220fcd4052
|
优化了 gui
|
2026-06-21 23:38:52 +08:00 |
|
yml2213
|
af3951ec6f
|
初步增加 gui
|
2026-06-21 23:25:08 +08:00 |
|
yml2213
|
ea8a56ca66
|
成功获取登录后的 ck
|
2026-06-21 23:02:09 +08:00 |
|
yml2213
|
4dca691890
|
登录 ok 了
|
2026-06-21 22:48:14 +08:00 |
|
yml2213
|
828f9889ed
|
增加了代理
|
2026-06-21 22:30:30 +08:00 |
|
yml2213
|
1ce867f3a8
|
inti
|
2026-06-21 21:56:56 +08:00 |
|