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
f3da45bb16
fix(lz): port Lanzou parser to wwww.lanzoux.com flow
...
Use the new share/ajax/verify pipeline (arg1 retry, regex ajax extract, delayed CDN verify) on the open-source PanBase client, keeping proxy support and complete() for downloadUrl.
Bump version to 0.4.4.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-18 00:25:49 +08:00
q
e103003b7a
Merge branch 'main' of github.com:qaiu/netdisk-fast-download
2026-08-18 00:21:51 +08:00
q
e853365fe4
fix(lz): adapt new Lanzou pages and stop duplicate release notes
...
Complete the fake jQuery/document sandbox for cookie, location, querySelector and chained APIs, extract ajax params by regex first with JS fallback, and generate GitHub release notes in a single job so matrix OS uploads no longer append What's Changed twice.
Bump version to 0.4.3.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-18 00:21:03 +08:00
Claude
6c709fde65
fix(parser): fix FangCloud share validity check and h5 share link regex
...
Root cause confirmed against a live share link: FcTool never actually
checked share validity against the info API — it read a top-level
"is_valid" field that the endpoint doesn't return. The real validity
flags (process.is_closed / process.is_expired) live under "process",
so an invalid share fell through to HTML scraping and surfaced a
confusing "未匹配到文件id(typed_id)" error instead of a clear
"分享已失效" message. parse() now checks share_links/info first and
fails fast with a clear message when the share is closed/expired.
Also widen PanDomainTemplate's FC regex to accept the mobile H5
landing page path (/h5/share/{key}), which previously didn't match
at all.
Updated verify_fangcloud_share.py to reflect the confirmed API
response shape instead of the earlier incorrect guess.
2026-08-13 07:46:29 +00:00
Cursor Agent
efbadde4ed
fix(security): harden GHSA-997r Cloudreve SSRF residual paths
...
Disable redirect following on CE/Ce4 attacker-controlled requests and stop
echoing upstream response bodies in client-facing JSON errors. Add
assertPublicHost regression coverage for the advisory PoC hosts.
Co-authored-by: qaiu <qaiu@vip.qq.com >
2026-07-26 12:05:16 +00: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
q
4995173de2
feat: add Yongshuo E-pan (ysepan) share parser
...
Support space shares like https://xxx.ysepan.com/ with password auth,
directory/file listing, and direct download URL construction.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-07-26 12:37:38 +08:00
qaiu
aeb4394cf8
fix GHSA-997r-7xx2-p9x6
2026-07-22 10:25:10 +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
q
5e20ed5050
fix: 123网盘(YE)支持authorization别名配置并修复auth临时参数登录被覆盖问题, 更新README认证说明, bump version to 0.3.7
...
引用 #201 #198 #116
说明: 123解析仅限于本地部署(可Windows一键运行 run.bat),公共/云端服务因风控限制不保证可用
2026-07-18 12:28:00 +08:00
q
24bf98bca9
fix: support 123pan redirected share links
2026-07-06 08:50:18 +08:00
yukaidi
0edc057347
docs: update parser and custom script docs
2026-06-10 21:23:05 +08:00
yukaidi
0103841fb5
fix(parser): harden built-in pan parsers
2026-06-10 21:20:40 +08:00
yukaidi
b6b7f0d8b7
fix(parser): harden runtime resource handling
2026-06-10 21:19:56 +08:00
yukaidi
bca4da4b6c
feat: 乐云 directDownload 接口支持 & 缓存配置补充完善
...
- 新增 directDownload (GET) 接口,比 packageDownloadWithFileIds 少一次请求
- 每次随机选择下载方式,失败自动 fallback 到另一种
- 统一所有下载方法的 Promise 参数传递
- 添加 HTTP 状态码日志便于调试
- 优化 app-dev.yml 缓存配置注释,补充所有缺失的网盘类型
2026-06-05 22:48:01 +08:00
qaiu
0fd78defcb
feat(ct): 升级城通网盘接口并实现目录分享解析
...
- 移除token参数,新增url参数至API1请求
- API2新增start_time/wait_seconds/verifycode/share_id/acheck=1参数
- parse()中从API1响应提取FileInfo(file_name/file_id/file_size/file_time/username)
- 新增parseFileList()实现目录分享解析,通过getdir.php+file_list API获取文件列表
- 新增CTD枚举项匹配城通网盘目录分享链接(/d/路径)
2026-06-03 09:46:16 +00:00
q
1a5fc8d1ef
feat: truncate long error msg, fix lanzou folder regex, bump version to 0.3.4
2026-05-30 01:16:17 +08:00
yukaidi
13f83e8795
fix(QQwTool): 改用 POST JSON API 解析 QQ 邮箱云盘链接
...
旧实现通过 GET 请求获取 HTML 并正则提取 JS 变量,但接口已改为返回 JSON,
导致 NumberFormatException。改为 POST 请求 `https://wx.mail.qq.com/s `,
body 为 `f=json&k={shareKey}`,解析 JSON 响应中的 body.url/name/size。
- 使用 postAbs() 替代 request() 以正确处理 HTTPS
- 使用 asJson() 兼容 gzip 响应
- 使用 complete() 正确存储 downloadUrl
- 添加 User-Agent、URL 编码 shareKey
2026-05-29 22:26:44 +08:00
yukaidi
37abebf8f8
fix(QQscTool): 简化 filesetId 正则,避免反斜杠转义问题
2026-05-29 13:58:13 +08:00
yukaidi
79fab8c0d6
fix: 修复前端错误信息丢失 & QQscTool filesetId 提取失败
...
- 前端 axios 对 HTTP 非2xx直接reject,catch块丢失后端错误信息,从 error.response.data.msg 提取实际错误展示给用户
- QQscTool extractFilesetId 正则未适配 Nuxt 转义JSON格式
2026-05-29 13:46:25 +08:00
yukaidi
9b70fb2778
feat(QQscTool): 支持多文件和目录解析,通过 GetFileList API 实现递归目录导航
2026-05-29 13:22:12 +08:00
yukaidi
1f47bf13b5
fix(QQscTool): 检测被和谐文件,避免返回无效直链
2026-05-29 12:56:28 +08:00
yukaidi
0e14c9a925
refactor: 统一版本号管理,消除硬编码
...
项目版本(pom.xml revision)和parser版本(parserVersion)统一为单一来源,
前端构建时自动同步,发版只需改根pom.xml的两个属性。
2026-05-29 10:57:49 +08:00
yukaidi
cf7d64916e
fix: Groovy 正则改为字符串形式避免斜杠解析问题
2026-05-29 10:37:31 +08:00
yukaidi
4ac80bbfe8
fix: gmavenplus-plugin 添加 Groovy 依赖
2026-05-29 10:34:24 +08:00
yukaidi
cfe8352d45
refactor: GitHub URL 改为构建时自动从 git remote origin 识别
...
前端:vue.config.js 通过 DefinePlugin 注入 VUE_APP_GITHUB_REPO_URL,
Home.vue/Playground.vue 中硬编码的 GitHub URL 全部改为动态变量。
后端:parser/pom.xml 添加 gmavenplus-plugin 在 initialize 阶段从
git remote origin 解析 github.owner/github.repo,SCM 字段引用 property。
2026-05-29 10:29:44 +08:00
yukaidi
4a0fe61d30
fix: ParserCreate 正则匹配 PWD 组时捕获 IllegalArgumentException
...
matcher.group(PWD) 在正则未定义 PWD 命名组时抛出
IllegalArgumentException 而非 IllegalStateException,原 catch 未覆盖
导致无提取码的链接(如QQ文件分享)返回 500。
2026-05-29 10:13:22 +08:00
yukaidi
c62e109aff
fix: 将硬编码的上游 GitHub URL 改为 fork 地址
...
Home.vue、Playground.vue、parser/pom.xml 中的 qaiu/netdisk-fast-download
URL 全部替换为 yukaidi1220/netdisk-fast-download。
2026-05-29 10:09:49 +08:00
yukaidi
dd4027c931
fix: LzTool/IzToolWithAuth 最后两处 .get().toString() NPE 风险
...
- LzTool:221 — obj.get("url").toString() 改为 String.valueOf()
- IzToolWithAuth:434 — get("uuid").toString() 添加 null 检查
2026-05-29 07:54:33 +08:00
yukaidi
cf7fc4f502
fix: FjTool login() 中 token.substring 添加 null 保护
...
token 脱敏日志在 token 可能为 null 时会抛 NPE,添加 null 检查。
2026-05-29 06:58:09 +08:00
yukaidi
0ea31d631a
fix: 移除 IzTool/IzToolWithAuth login() 中未使用的 h 变量(死代码)
...
并发安全修复引入的 h 变量创建后从未使用,后续请求仍通过
setTemplateParam("appToken", token) 传递 token。删除死代码并为
同一行的 token.substring 添加 null 保护。
2026-05-29 06:57:44 +08:00
yukaidi
74840ab63f
fix(FsTool): 收窄 parseFileNameFromContentDisposition 中的 catch 异常类型
...
将 catch(Exception) 改为 catch(IllegalArgumentException),
只捕获 URLDecoder.decode 在遇到非法百分比编码时抛出的具体异常。
2026-05-29 06:38:35 +08:00
yukaidi
31f33339f1
fix(FsTool): 修复 parseById 中 get("paramJson") 可能导致的 NPE
...
当 otherParam 中缺少 "paramJson" 键时,后续 getString 调用会抛出 NPE。
添加 null 检查并提前返回失败。
2026-05-29 06:37:53 +08:00
yukaidi
c0a0d0dc47
fix(FjTool): 修复 parseById 中 get("paramJson") 可能导致的 NPE
...
当 otherParam 中缺少 "paramJson" 键时,后续 getString 调用会抛出 NPE。
添加 null 检查并提前返回失败。
2026-05-29 06:37:12 +08:00
yukaidi
0cd77ee9b9
fix(IzTool): 修复 parseFileList 中 get("uuid") 可能导致的 NPE
...
当 otherParam 中缺少 "uuid" 键时,原代码直接调用 .toString() 会抛出
NullPointerException。改为先取出 Object 再做 null 检查。
2026-05-29 06:36:43 +08:00
yukaidi
d06a80dc73
fix: narrow catch exception type in LzTool.java
...
Replace 2 instances of `catch (Exception ignored)` with
`catch (MalformedURLException ignored)` around `new java.net.URL(url)`
calls, since that constructor only throws MalformedURLException.
2026-05-29 06:28:20 +08:00
yukaidi
86b9c43b8b
fix: narrow catch exception type in ParserCreate.java
...
Replace 5 instances of `catch (Exception ignored)` with
`catch (IllegalStateException ignored)` around matcher.group() calls,
since that method only throws IllegalStateException when a named group
does not exist.
2026-05-29 06:27:51 +08:00
yukaidi
06416a4e5f
fix(test): JsFetchBridgeTest Vertx 资源泄漏修复
...
将各 @Test 方法中局部创建的 Vertx.vertx() 统一为成员变量,
通过 @Before 创建并初始化,@After 关闭,避免资源泄漏。
2026-05-29 04:06:13 +08:00
yukaidi
88739e8d1a
fix(test): JsParserTest Vertx 资源泄漏修复
...
将各 @Test 方法中局部创建的 Vertx.vertx() 统一为成员变量,
通过 @Before 创建并初始化,@After 关闭,避免资源泄漏。
2026-05-29 04:04:52 +08:00
yukaidi
ffaba4f496
fix(test): BaiduPhotoParserTest Vertx 资源泄漏修复
...
将各 @Test 方法中局部创建的 Vertx.vertx() 统一为成员变量,
通过 @Before 创建并初始化,@After 关闭,避免资源泄漏。
2026-05-29 04:03:37 +08:00
yukaidi
c4f94a2bc7
fix: replace printStackTrace/System.out.println with logger in JsHttpClient, PlaygroundApi, LogStatistics, CacheServiceImpl, JsPlaygroundExecutor, JsPlaygroundLogger
2026-05-29 03:48:11 +08:00
yukaidi
caddff567f
fix: replace System.out.println with logger in IpExtractor
2026-05-29 03:39:36 +08:00
yukaidi
aed9e9f10d
fix: replace System.out.println/printStackTrace with logger in ReqIpUtil; add final to static fields
2026-05-29 03:39:11 +08:00
yukaidi
6557b49383
fix: replace System.out.println with log.debug in MkgsTool
2026-05-29 03:38:36 +08:00
yukaidi
082cc4c743
fix: replace System.out.println with log in PodTool; mask token in log output
2026-05-29 03:38:07 +08:00
yukaidi
e261ebe698
fix: replace System.out.println with log.debug in WsTool
2026-05-29 03:37:32 +08:00
yukaidi
07a330cfd4
fix: LocalConstant 改用 ConcurrentHashMap 保证线程安全,LzTool 方法名拼写修正
...
- LocalConstant: HashMap → ConcurrentHashMap,put() 改用 putIfAbsent 消除 check-then-act 竞态
- LzTool: 私有方法 setDateAndComplate → setDateAndComplete(拼写修正,仅内部调用)
2026-05-29 03:14:10 +08:00
yukaidi
2bb9912cf5
fix(security): 升级 Vert.x 版本 4.5.24 -> 4.5.27 (parser 模块)
...
修复 SslContext 缓存 DoS 漏洞
2026-05-29 03:08:43 +08:00