q
422d5b845b
fix: recognize 123pan uid.share links and trim paste input
...
Clipboard auto-detect now matches {userId}.share.123pan.cn/123pan/{key}, and the share URL field is trimmed on paste and blur. Split web-service compiler args so IDE rebuilds no longer wipe classes.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-18 01:22:47 +08:00
q
054e9cc1ec
fix: harden gzip decode and release 0.4.5
...
Avoid ZipException when Vert.x already decompressed gzip bodies, keep jackson-databind on the IDE classpath, and show a real build version instead of unknown.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-18 01:00:32 +08:00
q
d1fa787bef
fix(uc/qk): improve directory download with cookie, transfer fallback and URL-safe param encoding
...
- Preserve download cookie for UC/Quark needDownloader flows and disable browser/copy when required
- Quark: share-link first, transfer only on size limit (23018), reuse savedFileCache/search_exit
- Propagate auth to subdirectory parser URLs; switch path params to URL-safe Base64 (no double encode)
- Bump version to 0.4.2
Fixes #205
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-07-26 16:16:51 +08:00
Tra
bdd253383d
docs: add stoken parameter to /v2/getFileList OpenAPI spec
2026-07-24 20:43:04 +08:00
Rune
0fb53d5159
Potential fix for pull request finding
...
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com >
2026-07-24 19:54:22 +08:00
Tra
b9ff408bdd
fix: UC subdirectory listing fails due to missing stoken parameter
...
When the frontend requests subdirectory contents for UC drive shares, the
stoken query parameter is mishandled in two places, breaking directory browsing:
1. URLParamUtil.handleTruncatedUrl() does not exclude stoken from the URL
construction loop. As a result, the stoken value gets appended to the share
URL (e.g. https://drive.uc.cn/s/xxx?stoken=yyy ). The extra query string
breaks the UC URL regex match in PanDomainTemplate, causing the parser to
fall back to the default IPanTool.parseFileList() which returns
"Not implemented yet".
2. ParserApi.getFileList() does not accept stoken as a method parameter and
does not forward it to ShareLinkInfo.otherParam. Even when the stoken is
present in the request URL, UcTool.parseFileList() cannot find it and must
re-authenticate against the UC API — which fails without proper auth cookies.
The fix:
- URLParamUtil: add stoken to the param exclusion list
- ParserApi: add String stoken parameter and put it into otherParam
Both first-level and nested directory listing work correctly after this fix.
2026-07-24 18:04:52 +08:00
q
d3ef521773
fix: support donated auth for 123 directory downloads
2026-07-19 09:39:55 +08:00
q
675d930f86
fix: 123网盘捐赠账号无需临时auth参数即可自动生效,修复token前缀与脏数据问题
...
- 前端: getCurrentPanType() 补全123网盘域名匹配正则(share.123pan.cn等子域名)
- 前端: 临时认证弹窗补充123云盘(YE)选项及提示文案
- 前端: submitDonateAccount() 按当前authType只提交相关字段,避免切换认证方式后
残留的用户名/密码脏数据被一并提交
- 后端: URLParamUtil.addParam() 不再无条件用静态yml配置覆盖已生效的临时认证/
自动捐赠账号回退(增加 __TEMP_AUTH_ADDED 判断)
- 后端: CacheServiceImpl 新增 applyDonatedAccountFallback(),请求未带auth参数
且无静态配置时自动从捐赠账号池随机取一个可用账号使用,并在解析失败时记录/
自动禁用失败账号
- 后端: DbServiceImpl.getRandomDonatedAccount() 对非password类型账号强制丢弃
历史遗留的username/password字段,避免被误当账号密码登录
- 解析器: Ye2Tool 清理token/authorization前缀中的"Bearer ",避免拼接成
'Bearer Bearer xxx' 导致123接口返回 tokenstring should not contain bearer
已通过本地实测验证: 捐赠123账号后,不带auth参数直接请求
/json/parser?url=https://1815268665.share.123pan.cn/123pan/iaKtVv-r4aCd
可正常返回200及直链
2026-07-18 23:21:56 +08:00
yukaidi
cbb442ceb6
fix(web): harden cache and API services
2026-06-10 21:21:52 +08:00
yukaidi
bca4da4b6c
feat: 乐云 directDownload 接口支持 & 缓存配置补充完善
...
- 新增 directDownload (GET) 接口,比 packageDownloadWithFileIds 少一次请求
- 每次随机选择下载方式,失败自动 fallback 到另一种
- 统一所有下载方法的 Promise 参数传递
- 添加 HTTP 状态码日志便于调试
- 优化 app-dev.yml 缓存配置注释,补充所有缺失的网盘类型
2026-06-05 22:48:01 +08:00
yukaidi
0feb8e798a
fix: PR#190 review 修复 — 配置查找顺序/页面日志/ZIP结构/注释
...
- 配置文件查找顺序与 Deploy 保持一致(先当前目录,再 resources/)
- 页面地址日志改用 onComplete,无论演练场加载成功失败均输出
- Windows ZIP 移除 /* 通配符,与 Linux 保持一致的顶层目录结构
- 修正注释:同步读文件会阻塞 event loop,不再声称'避免阻塞'
- YAML 正则和 jdeps 回退列表补充适用范围说明
2026-05-31 16:34:19 +08:00
yukaidi
d55d8edd2f
AppMain: 启动日志增加前端页面访问地址提示
2026-05-31 14:00:45 +08:00
yukaidi
7b5900aae4
refactor: 代码质量清理与日志规范化
...
- 替换 System.out.println/printStackTrace 为 Logger: MkgsTool, PodTool, WsTool, IpExtractor, ReqIpUtil, LogStatistics
- JsPlaygroundLogger 日志列表限制最大 1000 条防止内存泄漏
- JsScriptLoader JarFile 改用 try-with-resources 防止文件句柄泄漏
- DbServiceImpl Thread.sleep 改为 vertx.setTimer 避免阻塞 event loop
- 删除未使用的 api.js,删除空的 ParserApiClientLinkTest
- 移除前端未使用的导入和死代码 (downloaderService, monacoTypes)
- 提取 previewBaseUrl 到 constants.js 常量文件
2026-05-29 14:23:26 +08:00
yukaidi
af723aed3a
fix: NPE 修复、资源泄漏修复及其他 Bug 修复
...
- 修复 12 处 NPE 风险: FjTool/FsTool/IzTool/LzTool/MkwTool/P115Tool/PdbTool/QQTool/ParserCreate/CommonUtils/ShareLinkInfo/URLParamUtil
- 修复 4 处 Vert.x 资源泄漏: 测试类中 Vertx 实例未关闭
- 修复 CacheManager 防重入和 registerPeriodicCleanup 就绪检查
- 修复 ParserApi 中 redirectUrl()/viewUrl() Promise 未 complete
- 修复 CacheManager.updateTotalByField Promise 永不完成
- 修复 AppMain ShutdownHook 注册,确保 Vert.x 先于 JDBCPoolInit 关闭
- 修复 RouterHandlerFactory failureHandler 恢复返回 failure message
- 修复 ParserCreate/LzTool 收窄 catch 异常类型
- 修复 IzTool/FjTool/IzToolWithAuth 并发安全 (volatile + header 副本)
- 修复 P115Tool UA 为 null 时的 NPE,添加默认 User-Agent
- Font Awesome CDN 换源为 s4.zstatic.net,避免 bootcdn 投毒风险
- DirectoryTree selectAll 补 parserUrl 检查,Home 组件名 App→Home
2026-05-29 14:22:40 +08:00
yukaidi
0978186679
feat: 新功能与配置优化
...
- QQscTool: 支持多文件和目录解析,通过 GetFileList API 实现递归目录导航
- Home: 从粘贴文本中自动提取分享链接
- DirectoryTree: 目录浏览添加复制直链按钮
- domainName 改为可选,未配置时自动从请求地址推断
- 统一版本号管理,GitHub URL 构建时自动从 git remote origin 识别
- vue.config.js 添加前端构建配置,sync-version.js 构建时同步版本号
2026-05-29 14:21:32 +08:00
yukaidi
17460ff271
fix(security): 安全漏洞修复与依赖升级
...
- 升级 Vert.x 4.5.24 → 4.5.27, postgresql 42.7.3 → 42.7.11, logback 1.5.18 → 1.5.32, axios 1.13.5 → 1.16.1
- 修复 JWT 签名验证和密码比较的时序攻击漏洞 (MessageDigest.isEqual)
- 修复 AESUtils 使用不安全 Random 改为 SecureRandom
- 修复登录用户枚举和异常信息泄露,统一错误提示
- 修复 RateLimiter count++ 非原子操作 (AtomicInteger)
- 修复 JsParserExecutor DCL 模式缺少 volatile
- 修复 Token 日志泄露,仅打印前8字符
- 修复 Playground 密码时序攻击和堆栈泄露
- 所有 window.open 添加 noopener,noreferrer
- LocalConstant 改用 ConcurrentHashMap 保证线程安全
- Dockerfile 添加非 root 用户运行,secret.yml 加入 .gitignore
2026-05-29 14:20:54 +08:00
yukaidi
9c3945f45a
fix: 修复编译错误,core 模块不能依赖 web-service/parser/core-database
...
core 模块的 Deploy.java 和 PostExecVerticle.java 直接引用了上层模块的类,
导致编译失败(package does not exist)。
- Deploy.java: 移除对 JDBCPoolInit 和 JsParserExecutor 的显式调用,
vertx.close() 会级联关闭 Vert.x 创建的资源
- PostExecVerticle.java: 移除缓存定时清理逻辑(不能引用 web-service 的 CacheManager)
- CacheManager: 添加 registerPeriodicCleanup() 静态方法,通过 VertxHolder 注册定时任务
- CacheServiceImpl: static 块中调用 CacheManager.registerPeriodicCleanup(),服务加载时自动注册
2026-05-29 01:08:15 +08:00
yukaidi
afe2046bc8
fix: RateLimiter 移除 synchronized 并添加 volatile,修复事件循环阻塞
...
审查发现 synchronized 在 Vert.x 事件循环中会严重阻塞并发。
ConcurrentHashMap 本身已线程安全,移除 synchronized 锁。
RequestInfo 字段添加 volatile 保证多线程内存可见性。
2026-05-28 23:42:40 +08:00
yukaidi
0b024a849a
fix: 添加缓存表定时清理任务,修复 cache_link_info 无限增长
...
- CacheManager 添加 cleanupExpiredCache() 方法删除过期缓存记录
- PostExecVerticle 注册每小时执行一次的定时清理任务
- 原实现只有读时惰性检查过期,过期记录永远不会被删除,长期运行后数据库持续膨胀
2026-05-28 23:20:17 +08:00
yukaidi
8745dc3567
fix: RateLimiter 添加过期条目清理,修复 ipRequestMap 无限增长
...
当 Map 超过 1000 条目时触发惰性清理,移除所有已过期的 IP 条目。
原实现中过期条目只重置计数不删除 key,长期运行后 Map 持续膨胀。
同时消除多余的 ipRequestMap.get(ip) 调用,直接使用 compute() 返回值。
2026-05-28 23:16:53 +08:00
copilot-swe-agent[bot]
2f55294b58
fix: 修复演练场输入密码后提示未授权访问的问题
...
根本原因:框架 RouterHandlerFactory 未注册 SessionHandler,
导致 ctx.session() 始终返回 null。登录时密码校验通过但认证
状态被静默丢弃,后续所有请求均返回"未授权访问"。
修复方案:将 Session 鉴权改为 Token(Bearer)鉴权:
- PlaygroundConfig: 新增 generateToken()/validateToken(),
使用 SecureRandom 生成密码学安全 Token,并在生成时
清理过期 Token 防止内存泄漏
- PlaygroundApi: login() 返回 Token;checkAuth() 从
Authorization 请求头中读取并校验 Token
- playgroundApi.js: 添加请求拦截器自动携带 Token;
login() 从响应中提取并保存 Token 到 localStorage
- Playground.vue: 后端报告未认证时同步清除 playground_token
Agent-Logs-Url: https://github.com/qaiu/netdisk-fast-download/sessions/52144d13-cd49-4a3d-b279-9b8d6cbad757
Co-authored-by: qaiu <29825328+qaiu@users.noreply.github.com >
2026-04-23 01:22:09 +00:00
q
2161190d9a
config: switch active profile to dev
2026-04-22 16:10:22 +08:00
q
aaae301cbc
release v3.0.0: core refactoring, new AppRun/PostExecVerticle, proxy and router improvements
2026-04-22 15:57:35 +08:00
rensumo
cbf2294a8e
fix: randomAuth only returns encryptedAuth
2026-02-22 20:49:24 +08:00
rensumo
9d558bf4e2
fix: avoid NPE in randomAuth code check
2026-02-22 20:23:46 +08:00
q
fdf067c25e
更新 夸克解析、小飞机解析,前端版本号
2026-02-22 19:15:15 +08:00
rensumo
b150641e3b
fix: stabilize auth/decrypt flow and refresh donate account counts
2026-02-22 16:06:22 +08:00
rensumo
6355c35452
fix: 修复捐赠账号失败计数与路由外部访问问题
2026-02-22 12:36:20 +08:00
rensumo
81ffbbd6b1
feat: harden donated-account failure token and document key usage
2026-02-22 12:24:47 +08:00
rensumo
07c650a474
feat: Add validation for donateAccount endpoint
2026-02-22 11:12:35 +08:00
rensumo
04443bcb5e
feat: 添加捐赠账号功能,支持数据库存储和随机选择账号解析
2026-02-19 12:59:47 +08:00
q
3a25e5f2ae
feat(v0.2.1): 添加认证参数支持和客户端下载命令生成
...
主要更新:
- 新增 auth 参数加密传递支持 (QK/UC Cookie认证)
- 实现下载命令自动生成 (curl/aria2c/迅雷)
- aria2c 命令支持 8 线程 8 片段下载
- 修复 cookie 字段映射问题
- 优化前端 clientLinks 页面
- 添加认证参数文档和测试用例
- 更新 .gitignore 忽略编译目录
2026-02-05 20:35:47 +08:00
qaiu
cb132359fd
启用在线脚本解析器
2026-01-06 02:21:19 +08:00
q
b58b3658b5
更新Playground和JsHttpClient相关功能,整理文档结构
2026-01-06 00:00:37 +08:00
q
047a8eab89
更新代码和文档
2026-01-03 21:11:04 +08:00
q
93ab3f3f3f
Remove TypeScript-related code and documentation
...
- Remove TypeScript API endpoints from PlaygroundApi
- Remove TypeScript methods from DbService interface and implementation
- Delete PlaygroundTypeScriptCode model class
- Delete TypeScript documentation files
- Clean up unused imports
2026-01-02 19:27:21 +08:00
q
ce1c4ee669
Fix playground bugs and remove TypeScript compiler
...
- Fix BUG1: JavaScript timeout with proper thread interruption using ScheduledExecutorService
- Fix BUG2: Add URL regex validation before execution in playground test API
- Fix BUG3: Register published parsers to CustomParserRegistry on save/update/delete
- Remove TypeScript compiler functionality (tsCompiler.js, dependencies, UI)
- Add password authentication for playground access
- Add mobile responsive layout support
- Load playground parsers on application startup
2026-01-02 19:24:47 +08:00
copilot-swe-agent[bot]
3775cd0259
Address code review feedback: protect types.js endpoint and improve code readability
...
Co-authored-by: qaiu <29825328+qaiu@users.noreply.github.com >
2025-12-07 05:27:07 +00:00
copilot-swe-agent[bot]
bec342d778
Fix JsonResult API calls and add documentation
...
Co-authored-by: qaiu <29825328+qaiu@users.noreply.github.com >
2025-12-07 05:24:38 +00:00
copilot-swe-agent[bot]
6305d805dd
Add playground loading animation, password auth, and mobile layout support
...
Co-authored-by: qaiu <29825328+qaiu@users.noreply.github.com >
2025-12-07 05:20:06 +00:00
copilot-swe-agent[bot]
57ef723368
Add TypeScript compiler integration - core implementation
...
Co-authored-by: qaiu <29825328+qaiu@users.noreply.github.com >
2025-12-07 04:43:36 +00:00
q
f82267f8a7
js演练场漏洞修复
2025-11-30 02:07:56 +08:00
q
e74d5ea97e
js演练场
2025-11-29 03:41:51 +08:00
q
f87a66bc79
fixed. 123跨区下载错误
2025-11-28 19:48:19 +08:00
q
474eea5f80
- [汽水音乐-qishui_music]( https://music.douyin.com/qishui/ )
...
- [咪咕音乐-migu](https://music.migu.cn/ )
- [一刻相册-baidu_photo](https://photo.baidu.com/ )
2025-11-15 21:49:40 +08:00
q
3b63f48dfa
ce盘优化
2025-11-13 19:32:44 +08:00
q
c71d4cfa87
feat: 新增客户端协议生成系统,支持8种主流下载工具
...
🚀 核心功能
- 新增完整的客户端下载链接生成器系统
- 支持ARIA2、Motrix、比特彗星、迅雷、wget、cURL、IDM、FDM、PowerShell等8种客户端
- 自动处理防盗链参数(User-Agent、Referer、Cookie等)
- 提供可扩展的生成器架构,支持自定义客户端
🔧 技术实现
- ClientLinkGeneratorFactory: 工厂模式管理生成器
- DownloadLinkMeta: 元数据存储下载信息
- ClientLinkUtils: 便捷工具类
- 线程安全的ConcurrentHashMap设计
🌐 前端集成
- 新增ClientLinks.vue界面,支持客户端链接展示
- Element Plus图标系统,混合图标显示
- 客户端检测逻辑优化,避免自动打开外部应用
- 移动端和PC端环境判断
📚 文档完善
- 完整的CLIENT_LINK_GENERATOR_GUIDE.md使用指南
- API文档和测试用例
- 输出示例和最佳实践
从单纯的网盘解析工具升级为完整的下载解决方案生态
2025-10-24 09:29:05 +08:00
q
97c2fe6784
feat: 添加 WPS 云文档/WPS 云盘解析支持 ( closes #133 )
...
- 新增 PwpsTool 解析器,支持 WPS 云文档直链获取
- 调用 WPS API: https://www.kdocs.cn/api/office/file/{shareKey}/download
- 前端添加 kdocs.cn 链接识别规则
- 前端预览功能优化:WPS 云文档直接使用原分享链接预览
- 后端预览接口特殊处理:判断 shareKey 以 pwps: 开头自动重定向
- 支持提取文件名和有效期信息
- 更新 README 文档,添加 WPS 云文档支持说明
Parser 模块设计:
- 遵循开放封闭原则,易于扩展新网盘
- 只需实现 IPanTool 接口和注册枚举即可
- 支持自定义域名解析和责任链模式
技术特性:
- 免登录获取下载直链
- 支持在线预览(利用 WPS 原生功能)
- 文件大小限制:10M(免费版)/2G(会员版)
- 初始空间:5G(免费版)
2025-10-20 13:33:53 +08:00
q
3107281cdc
web展示内部版本号
2025-10-17 17:19:27 +08:00
q
322f173104
parser v10.1.17发布到maven central 允许开发者依赖
...
1. 添加自定义解析器扩展和相关示例
2. 优化pom结构
2025-10-17 15:50:45 +08:00