Compare commits

..

356 Commits

Author SHA1 Message Date
q
ecb60b1fae Fixed 蓝奏云目录解析cookie验证问题 2026-02-03 13:26:40 +08:00
q
1b357de2f3 Fixed 蓝奏优享解析,v019b21 2026-02-02 16:02:36 +08:00
q
cf76a5ddd6 fixed: 修复蓝奏优享 #159, #158 2026-02-02 15:59:44 +08:00
q
4e27bf0dc4 蓝奏云规则更新 2026-02-01 10:33:25 +08:00
qaiu
39c082e4ee Clean up launch configurations in launch.json,run AppMain
Removed unused Java launch configurations from launch.json.
2026-01-27 07:53:20 +08:00
qaiu
95193fc8f9 更新 README.md, 添加接口文档https://nfdparser.apifox.cn 2026-01-27 00:05:56 +08:00
qaiu
4f3131979f 189.qaiu.top 大文件解析体验版,支持天翼云盘,移动云盘等
#153 #156 #119 #92
2026-01-26 13:47:37 +08:00
qaiu
ad9a8ab0b0 更新 README.md
天翼云盘演示站限时体验
2026-01-26 13:09:49 +08:00
q
1f3161216a fix(LeTool): 修复子目录 fileId URL 编码问题
- 在构建 parserUrl 时对 fileId 进行 URL 编码
- 避免 %2B 等特殊字符被前端 axios 自动解码导致请求失败
- 添加异常处理和降级方案
2026-01-23 17:59:19 +08:00
q
e5f7b164a3 fix(LeTool): 修复联想乐云目录解析失败问题
- 添加统一的 HEADERS 定义,包含完整的浏览器请求头
- 修复 API_URL_PREFIX 路径(share -> mshare)
- 添加 getCleanShareId() 方法处理 URL 中的查询参数
- 所有请求统一使用 putHeaders(HEADERS)
- 增加调试日志输出
2026-01-23 13:24:11 +08:00
q
7974c92382 联想乐云文件夹解析 2026-01-23 12:45:51 +08:00
qaiu
b51add45f1 LeTool乐云目录解析 2026-01-23 03:26:35 +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
9f25aca242 Merge branch 'main' of github.com:qaiu/netdisk-fast-download 2026-01-04 09:30:54 +08:00
q
343c017c79 fixed. 演练场静态打包问题 2026-01-04 09:29:20 +08:00
qaiu
83af09cf58 升级前端版本 2026-01-04 01:14:26 +08:00
qaiu
449475785f Update README.md 2026-01-03 21:20:54 +08:00
q
047a8eab89 更新代码和文档 2026-01-03 21:11:04 +08:00
q
93835bd990 Add functional test report
- Document all completed tests and fixes
- Verify BUG1, BUG2, BUG3 fixes
- Confirm TypeScript removal
- Confirm text updates (JS演练场 → 脚本演练场)
- Service startup verification
2026-01-02 19:40:26 +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
de7703be83 Merge branch 'copilot/add-playground-enhancements' 2026-01-02 19:25:05 +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
qaiu
c60d9fdd61 更新 README.md 2025-12-23 07:55:59 +08:00
qaiu
2033542f49 更新 README.md 2025-12-08 23:46:58 +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]
2ada2fddf7 Add implementation summary in Chinese
Co-authored-by: qaiu <29825328+qaiu@users.noreply.github.com>
2025-12-07 04:57:03 +00:00
copilot-swe-agent[bot]
66ba8b7ee8 Address code review feedback - improve code quality
Co-authored-by: qaiu <29825328+qaiu@users.noreply.github.com>
2025-12-07 04:52:22 +00:00
copilot-swe-agent[bot]
2edf235941 Complete TypeScript compiler integration with examples and documentation
Co-authored-by: qaiu <29825328+qaiu@users.noreply.github.com>
2025-12-07 04:48:38 +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
copilot-swe-agent[bot]
366658b471 Add comprehensive implementation summary
Co-authored-by: qaiu <29825328+qaiu@users.noreply.github.com>
2025-12-06 22:56:10 +00:00
copilot-swe-agent[bot]
2a3244a8fa Address code review feedback: fix Promise.race, improve statusText, use English error messages
Co-authored-by: qaiu <29825328+qaiu@users.noreply.github.com>
2025-12-06 22:52:37 +00:00
copilot-swe-agent[bot]
9912e6fef1 Complete backend implementation with comprehensive documentation
Co-authored-by: qaiu <29825328+qaiu@users.noreply.github.com>
2025-12-06 22:51:08 +00:00
copilot-swe-agent[bot]
d475dcbcdc Add fetch polyfill tests and documentation
Co-authored-by: qaiu <29825328+qaiu@users.noreply.github.com>
2025-12-06 22:49:32 +00:00
copilot-swe-agent[bot]
5ffe94e3a4 Implement fetch polyfill and Promise for ES5 backend
Co-authored-by: qaiu <29825328+qaiu@users.noreply.github.com>
2025-12-06 22:44:52 +00:00
qaiu
5809d3b664 Merge pull request #140 from rensumo/main
增加快速部署方式
2025-12-02 17:21:05 +08:00
rensumo
2bed42a088 增加快速部署 2025-12-02 14:43:29 +08:00
rensumo
97e912c216 增加快速部署 2025-12-02 14:42:07 +08:00
rensumo
f657aa183c 增加快速部署
Add quick deployment instructions and Docker deployment section.
2025-12-02 14:40:53 +08:00
qaiu
cf634c4464 Merge pull request #139 from Edakerx/main
Update README.md
2025-11-30 12:30:26 +08:00
Edakerx
a9b5d9ab57 Update README.md
添加赞助商
2025-11-30 12:20:07 +08:00
q
f82267f8a7 js演练场漏洞修复 2025-11-30 02:07:56 +08:00
q
46bd5819b3 js演练场,ye2 2025-11-29 03:44:47 +08:00
q
d10a55d8cb Merge remote-tracking branch 'origin/main' 2025-11-29 03:42:25 +08:00
q
e74d5ea97e js演练场 2025-11-29 03:41:51 +08:00
q
1dfdff7024 js演练场 2025-11-29 02:56:25 +08:00
qaiu
f5c81e1b8e 更新 README.md 2025-11-28 20:33:07 +08:00
q
804b8853d9 front ver 0.1.9.b12 2025-11-28 19:50:29 +08:00
q
f87a66bc79 fixed. 123跨区下载错误 2025-11-28 19:48:19 +08:00
q
74b9cc438c 客户端链接(实验性),js解析器插件,汽水音乐,一刻相册,咪咕音乐 2025-11-25 16:34:24 +08:00
qaiu
7829174cc0 更新 README.md 2025-11-17 23:06:54 +08:00
q
2e558df96b Merge remote-tracking branch 'origin/main' 2025-11-15 21:50:45 +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
qaiu
fc50d1f5ba Update README with new links and information 2025-11-14 06:33:16 +08:00
q
3b63f48dfa ce盘优化 2025-11-13 19:32:44 +08:00
q
95697de1d0 Merge remote-tracking branch 'origin/main' 2025-11-13 18:20:32 +08:00
qaiu
1aa9ecdc45 Merge pull request #136 from qaiu/copilot/add-ce4tool-parser
Add Cloudreve 4.x API support with Ce4Tool parser
2025-11-13 18:18:30 +08:00
q
0a3dbc6342 Merge remote-tracking branch 'origin/main'
# Conflicts:
#	parser/src/test/java/cn/qaiu/parser/clientlink/impl/CurlLinkGeneratorTest.java
2025-11-13 17:58:59 +08:00
copilot-swe-agent[bot]
72f215c301 Simplify and optimize Ce4Tool and CeTool version detection logic
Co-authored-by: qaiu <29825328+qaiu@users.noreply.github.com>
2025-11-10 09:59:48 +00:00
copilot-swe-agent[bot]
add90984a5 Add Ce4Tool for Cloudreve 4.x API support and update CeTool with version detection
Co-authored-by: qaiu <29825328+qaiu@users.noreply.github.com>
2025-11-10 09:57:41 +00:00
copilot-swe-agent[bot]
857ac7a2c9 Initial planning for Cloudreve 4.x API support
Co-authored-by: qaiu <29825328+qaiu@users.noreply.github.com>
2025-11-10 09:53:58 +00:00
qaiu
b807223614 更新 README.md 2025-11-08 00:23:22 +08:00
qaiu
c775dabd7e 更新 README.md 2025-11-08 00:20:30 +08:00
qaiu
5ee0aae6e1 更新 README.md 2025-11-08 00:19:16 +08:00
qaiu
5c8e4d7754 更新 README.md
测试下载链接更新
2025-11-04 15:44:17 +08:00
qaiu
79123448f6 更新 README.md
接口参考优化
2025-10-30 22:42:28 +08:00
qaiu
8e4328f1eb Merge pull request #135 from qaiu/copilot/remove-test-filelist
[WIP] Remove test filelist from repository
2025-10-30 20:24:45 +08:00
copilot-swe-agent[bot]
63c810dcbb Remove accidentally committed test-filelist.java file
Co-authored-by: qaiu <29825328+qaiu@users.noreply.github.com>
2025-10-30 12:21:01 +00: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
2b17567a1d 修复WPS域名匹配正则表达式
- 修复PWPS正则表达式,支持子域名匹配
- 从 https://www\.kdocs\.cn/l/(?<KEY>.+) 修改为 https://(?:[a-zA-Z\d-]+\.)?kdocs\.cn/l/(?<KEY>.+)
- 现在可以正确匹配带子域名的WPS链接,如 www.kdocs.cn
- 测试通过:WPS云文档解析功能正常工作
2025-10-23 09:20:26 +08:00
q
ba5f88af43 feat: 完善JavaScript解析器功能
- 优化JsScriptLoader,支持JAR包内和文件系统的自动资源文件发现
- 移除预定义文件列表,完全依赖自动检测
- 添加getNoRedirect方法支持重定向处理
- 添加sendMultipartForm方法支持文件上传
- 添加代理配置支持
- 修复JSON解析的压缩处理问题
- 添加默认请求头支持(Accept-Encoding、User-Agent、Accept-Language)
- 更新文档,修正导出方式说明
- 优化README.md结构,删除不符合模块定位的内容
- 升级parser版本到10.2.1
2025-10-22 17:34:19 +08:00
qaiu
782f47c7c5 更新 README.md 2025-10-22 12:27:01 +08:00
q
8f92ce9292 feat: 添加getNoRedirect方法支持302重定向处理
- 在JsHttpClient中添加getNoRedirect方法,支持不自动跟随重定向的HTTP请求
- 修改baidu-photo.js解析器,使用getNoRedirect获取真实的下载链接
- 更新测试用例断言,验证重定向处理功能正常工作
- 修复百度一刻相册解析器302重定向问题,现在能正确获取真实下载链接
2025-10-21 17:47:59 +08:00
qaiu
1c3b5082a2 更新 README.md 2025-10-21 12:49:10 +08:00
q
8535f49786 优化工作流 2025-10-20 13:45:26 +08:00
q
92043cf415 忽略package-lock.json 2025-10-20 13:42:44 +08:00
q
c97a235e23 Merge branch 'main' of github.com:qaiu/netdisk-fast-download 2025-10-20 13:38:07 +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
qaiu
1baa6e36b8 Merge pull request #134 from qaiu/copilot/update-parser-documentation
更新parser文档:开发者应继承PanBase并添加WebClient请求流程说明
2025-10-18 07:11:52 +08:00
copilot-swe-agent[bot]
9dbc8718a8 Update parser documentation with PanBase inheritance and WebClient flow
Co-authored-by: qaiu <29825328+qaiu@users.noreply.github.com>
2025-10-17 23:03:39 +00:00
q
3107281cdc web展示内部版本号 2025-10-17 17:19:27 +08:00
q
c5b2340fe6 版本号,123文件信息解析支持 2025-10-17 16:41:02 +08:00
q
2f6f977adb parser v10.1.17发布到maven central 允许开发者依赖
1. 添加自定义解析器扩展和相关示例
2. 优化pom结构
2025-10-17 15:51:52 +08:00
q
902443b511 parser v10.1.17发布到maven central 允许开发者依赖
1. 添加自定义解析器扩展和相关示例
2. 优化pom结构
2025-10-17 15:51:41 +08:00
q
322f173104 parser v10.1.17发布到maven central 允许开发者依赖
1. 添加自定义解析器扩展和相关示例
2. 优化pom结构
2025-10-17 15:50:45 +08:00
q
c61ba45d59 parser发布到maven central方便开发者依赖, pom文件结构调整 2025-10-16 18:08:03 +08:00
qaiu
684e8d4c84 更新 README.md 2025-10-11 00:23:41 +08:00
qaiu
a96bde812d 更新 README.md
远期规划
2025-10-11 00:19:07 +08:00
qaiu
c0276f97d6 Merge pull request #132 from rensumo/main
更新linux部署的下载链接
2025-10-10 09:23:36 +08:00
rensumo
f60d2573e6 更新linux部署的下载链接 2025-10-09 20:32:22 +08:00
qaiu
7e746ded60 Merge pull request #131 from rensumo/main
修复命令行部署自启动命令的错误
2025-10-08 21:42:47 +08:00
rensumo
11669c07ed 修复命令行部署自启动命令的错误 2025-10-08 15:31:04 +08:00
q
0c0e4c9cc1 web version 2025-09-28 13:44:07 +08:00
q
a3ab467c74 Fixed: lz规则更新 #129 #128 2025-09-28 13:38:58 +08:00
q
acb646ee2d 升级netty依赖 2025-09-15 10:10:30 +08:00
q
5a02c38d57 fixed. ye解析,去除正则匹配, 分享key去除后缀, #123, #125 2025-09-15 09:44:32 +08:00
q
bd9ac79ec9 fixed. ye解析,去除正则匹配, #124,#125 2025-09-15 09:25:39 +08:00
qaiu
d6c8b2f476 Merge pull request #124 from qaiu/dependabot/npm_and_yarn/web-front/axios-1.12.0
Bump axios from 1.11.0 to 1.12.0 in /web-front
2025-09-12 17:41:37 +08:00
dependabot[bot]
b616c59f1b Bump axios from 1.11.0 to 1.12.0 in /web-front
Bumps [axios](https://github.com/axios/axios) from 1.11.0 to 1.12.0.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.11.0...v1.12.0)

---
updated-dependencies:
- dependency-name: axios
  dependency-version: 1.12.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-12 09:37:49 +00:00
q
c6603c0d83 修复123解析 #123 2025-09-12 17:34:07 +08:00
q
ae0a5644b5 优化docker脚本5 2025-09-10 18:23:58 +08:00
q
d87ab43a9b 优化docker脚本4 2025-09-10 18:16:37 +08:00
q
cfe084cb07 优化docker脚本3 2025-09-10 18:10:51 +08:00
q
75521c87ba 优化docker脚本2 2025-09-10 18:05:14 +08:00
q
67042b39b3 优化docker脚本 2025-09-10 17:53:49 +08:00
q
c65b55d0c6 docker多平台支持,add 树莓派 2025-09-10 17:45:27 +08:00
q
8e938acdb2 docker多平台支持 2025-09-10 17:27:44 +08:00
q
5db5b3c75a docker多平台支持 2025-09-10 17:21:33 +08:00
q
291df9d984 Merge remote-tracking branch 'origin/main' 2025-09-10 17:10:52 +08:00
q
323c62f4e6 icloud国际版支持,QQ邮箱文件信息获取 2025-09-10 17:10:39 +08:00
qaiu
03e2bbbb91 添加docker多平台支持 2025-09-10 17:06:40 +08:00
q
4b8660932a Merge remote-tracking branch 'origin/main' 2025-08-19 18:57:00 +08:00
q
35c7746e38 直链API添加文件信息
修复蓝奏目录文件大小处理报错问题 #120
2025-08-19 18:56:42 +08:00
qaiu
e2155aec45 更新 README.md 2025-08-14 19:36:09 +08:00
qaiu
aaf34a460e 更新 README.md 2025-08-14 19:28:44 +08:00
q
1bb30a9ed2 更新文档 2025-08-14 15:27:03 +08:00
q
b1c68aa865 Merge remote-tracking branch 'origin/main' 2025-08-12 13:32:09 +08:00
q
8b57d04a2e 1. iz match fixed
2. redirect res content add "text/html; charset=utf-8"
2025-08-12 13:29:59 +08:00
qaiu
1a57bddef7 Update README.md 2025-08-11 13:32:33 +08:00
q
1d30716aa6 build status 2025-08-11 13:26:06 +08:00
q
a2aabfc601 Merge remote-tracking branch 'origin/main' 2025-08-11 13:23:59 +08:00
q
f7040a3c1c 用户API 2025-08-11 13:23:30 +08:00
qaiu
40d4a1fcb5 Update README.md 2025-08-11 13:18:00 +08:00
q
e01bb2d8d7 Merge remote-tracking branch 'origin/main' 2025-08-11 13:14:59 +08:00
q
d8a4d2e39f 添加支持 QQ闪传,微雨云,优化前端逻辑 2025-08-11 13:14:43 +08:00
qaiu
dbbd5759ab Update README.md 2025-08-08 12:33:46 +08:00
q
0a59ff2357 Merge remote-tracking branch 'origin/main' 2025-08-05 15:50:50 +08:00
q
4e1eb6654d fixed p118 link 2025-08-05 15:50:32 +08:00
qaiu
b588ba740f 更新 README.md 2025-08-05 13:14:09 +08:00
qaiu
af605a2be7 Merge pull request #113 from qaiu/dependabot/maven/org.apache.commons-commons-lang3-3.18.0
Bump org.apache.commons:commons-lang3 from 3.12.0 to 3.18.0
2025-07-30 09:17:42 +08:00
dependabot[bot]
b2630a7e35 Bump org.apache.commons:commons-lang3 from 3.12.0 to 3.18.0
Bumps org.apache.commons:commons-lang3 from 3.12.0 to 3.18.0.

---
updated-dependencies:
- dependency-name: org.apache.commons:commons-lang3
  dependency-version: 3.18.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-21 09:05:14 +00:00
qaiu
211fe92a35 Merge pull request #110 from qaiu/dependabot/maven/core-database/org.apache.commons-commons-lang3-3.18.0
Bump org.apache.commons:commons-lang3 from 3.12.0 to 3.18.0 in /core-database
2025-07-21 17:02:12 +08:00
q
be168a9f0d Merge remote-tracking branch 'origin/main' 2025-07-18 13:00:33 +08:00
q
977f5dc6dd 1. 默认缓存时间修改
2. 文件夹解析异常处理
3. 首页优化
2025-07-18 13:00:12 +08:00
qaiu
131cb7085d 更新 README.md
联系方式更新
2025-07-16 13:30:47 +08:00
q
7fbd446a2a 首页样式优化 2025-07-15 18:09:11 +08:00
q
7b64699782 Merge remote-tracking branch 'origin/main' 2025-07-14 16:16:13 +08:00
q
bad56037c4 启动参数优化 2025-07-14 16:16:00 +08:00
qaiu
180e54f278 更新 README.md 2025-07-12 13:47:03 +08:00
dependabot[bot]
ae89e0be26 Bump org.apache.commons:commons-lang3 in /core-database
Bumps org.apache.commons:commons-lang3 from 3.12.0 to 3.18.0.

---
updated-dependencies:
- dependency-name: org.apache.commons:commons-lang3
  dependency-version: 3.18.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-12 01:16:21 +00:00
q
f19b366b1b 移动端布局优化 2025-07-11 11:51:08 +08:00
q
6b1bd573c8 优化构建流v0.1.9b6b 2025-07-10 19:17:22 +08:00
q
43c82f2f16 优化构建流 2025-07-10 19:12:15 +08:00
q
e478486d73 del 2025-07-10 19:07:02 +08:00
q
32e5c69735 目录解析支持优化 v0.1.9b6 2025-07-10 18:59:59 +08:00
q
4ec5b491c5 目录解析支持优化 v0.1.9b5 2025-07-10 18:58:12 +08:00
qaiu
6a0e4a695d Merge remote-tracking branch 'origin/main' 2025-07-09 07:58:10 +08:00
qaiu
e6d69331be ye目录解析 2025-07-09 07:57:47 +08:00
qaiu
f16e196040 Update maven.yml 2025-07-09 07:09:58 +08:00
qaiu
2f67e3b04d lz目录解析预览 2025-07-09 07:06:12 +08:00
q
4663751924 目录解析支持优化 v0.1.9b2 2025-07-08 18:58:38 +08:00
q
e6ae7e2545 Merge remote-tracking branch 'origin/main' 2025-07-08 18:57:17 +08:00
q
74ec248b8c 目录解析支持优化 v0.1.9b2 2025-07-08 18:55:19 +08:00
qaiu
cd04eead07 更新 README.md 2025-07-08 04:03:42 +08:00
qaiu
2b4340a5d6 更新 README.md 2025-07-08 04:02:50 +08:00
qaiu
ff6913264f 更新 README.md 2025-07-08 03:51:46 +08:00
qaiu
ffd88841d5 更新 README.md 2025-07-08 03:51:00 +08:00
qaiu
0ed0d2ed82 更新 README.md 2025-07-08 03:48:19 +08:00
qaiu
c2387c47ee 更新 README.md 2025-07-08 03:47:09 +08:00
qaiu
65cc78de7d 更新 README.md 2025-07-08 03:46:19 +08:00
qaiu
8bedfcf794 更新 README.md
docker镜像更新
2025-07-08 03:20:18 +08:00
qaiu
1cd059f842 Update README.md 2025-07-08 02:23:01 +08:00
qaiu
42438f2bbd 更新 README.md 2025-07-04 19:38:18 +08:00
qaiu
1fb6e5d660 更新 README.md 2025-07-04 19:34:53 +08:00
q
3fa0588e03 目录解析支持 2025-07-04 19:20:06 +08:00
q
5a008f4ddd Merge remote-tracking branch 'origin/main' 2025-07-04 19:17:35 +08:00
q
1a0b3a75c3 目录解析支持 2025-07-04 19:16:36 +08:00
q
c5ad19881c 目录解析支持 2025-07-04 19:11:39 +08:00
qaiu
6188e5f2c6 Create update-release-badge.yml 2025-07-04 09:34:22 +08:00
q
6f19fbd300 start 2025-07-02 18:40:32 +08:00
qaiu
5307da24ed Update maven.yml
提交任意tag 触发工作流
2025-07-02 18:36:45 +08:00
qaiu
e65da6fe4a Update AppMain.java 2025-07-02 18:29:46 +08:00
qaiu
7ed83e9437 Update maven.yml
构建docker添加tag版本
2025-07-02 18:26:48 +08:00
qaiu
f008f490d9 Update AppMain.java 2025-07-02 18:20:30 +08:00
qaiu
01109dedbd Update maven.yml
docker镜像构建添加版本号
2025-07-02 18:19:01 +08:00
qaiu
f2a78d8937 Update AppMain.java 2025-07-02 18:13:19 +08:00
yyzy-official
eef56b308c Update maven.yml
修改工作流版本号问题
2025-07-02 18:09:48 +08:00
yyzy-official
c9ca47b27d Update README.md
收款码隐藏
2025-07-02 17:41:23 +08:00
yyzy-official
35e54f5ad5 Update README.md
1. 微信联系方式
2. 预览地址
2025-07-02 17:39:14 +08:00
qaiu
310d516aac Update README.md 2025-07-02 15:50:29 +08:00
qaiu
aee84e3cb3 Update README.md 2025-07-02 15:46:55 +08:00
q
f9fd68c0f4 jdk24适配 2025-06-17 15:48:52 +08:00
qaiu
9761a9e2d9 更新 README.md 2025-06-06 07:17:49 +08:00
qaiu
8bed7487de Update README.md 2025-06-04 16:28:50 +08:00
qaiu
2b084a3cc8 Update README.md 2025-06-04 16:26:56 +08:00
QAIU
1caabd1368 1. 修改docker构建失败 2025-06-04 15:37:50 +08:00
qaiu
b5397ba303 Update README.md 2025-06-04 15:27:21 +08:00
qaiu
36f9b53f9b Update README.md 文件夹解析说明 2025-06-04 15:25:26 +08:00
QAIU
26fcbaa9a6 1. 修复 小飞机解析错误#106
2. 添加 123云盘文件夹分享下解析为压缩包下载直链
3. 添加 123云盘全部域名支持: "www.123pan.com","www.123pan.cn","www.123865.com","www.123684.com","www.123912.com","www.123pan.cn"
2025-06-04 15:13:05 +08:00
QAIU
a8a5b6e3ab 1. 蓝奏云域名适配 2025-05-28 17:01:50 +08:00
QAIU
588e087941 0 2025-05-08 18:18:52 +08:00
QAIU
fe71db0967 remove yarn.lock 2025-05-08 18:18:15 +08:00
qaiu
9436575dcb Update README.md 2025-04-23 14:41:52 +08:00
qaiu
4ea380d28e Update nfd-service-template.xml 2025-04-23 14:31:56 +08:00
qaiu
1f46b477e3 Update README.md 2025-04-07 13:29:43 +08:00
QAIU
f7e17a10b5 115域名变动,360pan暂不可用,ctfile域名变动 2025-04-03 10:57:28 +08:00
QAIU
6e19e29857 城通分享格式适配, 优化日志打印 2025-03-28 17:59:28 +08:00
QAIU
f6b5d72784 json异常时, 快速失败 2025-03-24 13:35:40 +08:00
qaiu
68f1334907 蓝奏云随机404 问题修复 2025-03-22 12:53:33 +08:00
qaiu
a83f4e9a2f 更新 README.md 2025-03-17 19:24:38 +08:00
QAIU
fcd8709c7d Merge remote-tracking branch 'origin/main' 2025-03-14 14:03:47 +08:00
QAIU
854d0ea241 微信版QQ邮箱中转站解析优化(已改名为QQ邮箱云盘) 2025-03-14 14:03:29 +08:00
qaiu
cff223ecd2 Update README.md 2025-02-25 10:29:25 +08:00
qaiu
8f14762f43 Update README.md 2025-02-25 10:26:47 +08:00
qaiu
c37ae638d2 Update README.md 2025-02-25 10:25:35 +08:00
qaiu
bcfa46ec43 Update README.md 2025-02-25 10:02:23 +08:00
QAIU
42cfe4aacf md 2025-02-24 17:39:23 +08:00
QAIU
64dba88881 add 超星盘,360盘 2025-02-22 16:55:00 +08:00
QAIU
3f300ded96 Merge remote-tracking branch 'origin/main' 2025-02-21 18:28:08 +08:00
QAIU
1ceafc5c08 优化细节 2025-02-21 18:27:52 +08:00
qaiu
93adb06083 更新 README.md 2025-02-20 18:11:39 +08:00
qaiu
3ef1c81d13 Update README.md 2025-02-20 18:06:58 +08:00
qaiu
84b4deffc6 Update README.md 2025-02-20 17:47:00 +08:00
qaiu
2e7f1a7e52 更新 README.md 2025-02-13 12:14:59 +08:00
qaiu
59bea226e5 Update README.md 2025-02-12 16:25:16 +08:00
QAIU
0bbef0c7a9 新增文件列表解析接口/redirectUrl/:type/:param 2025-02-10 14:19:18 +08:00
QAIU
fc91192d0e 新增文件列表解析接口/v2/getFileList?url= 2025-02-07 19:28:09 +08:00
QAIU
8dbcaed813 新增文件列表解析接口/v2/getFileList?url= 2025-02-07 19:27:48 +08:00
QAIU
577ec46f71 MySQL支持, 其他优化 2025-02-06 16:54:54 +08:00
QAIU
65bf4534c7 MySQL支持, 其他优化 2025-02-06 16:52:22 +08:00
QAIU
5b666e1fec MySQL支持, 其他优化 2025-02-06 16:52:06 +08:00
qaiu
e839f56a91 Update README.md 2025-02-06 15:51:46 +08:00
qaiu
c5a327e2e0 Update README.md 2025-02-06 15:50:26 +08:00
qaiu
5b5a11ac36 Create FUNDING.yml 2025-02-05 11:11:01 +08:00
qaiu
0c3efe326f 更新 README.md 2025-01-26 16:26:50 +08:00
qaiu
b9100fb934 更新 README.md 2025-01-26 16:09:45 +08:00
qaiu
74a98713c1 更新 README.md 2025-01-26 15:31:43 +08:00
qaiu
339b80bbea 优化内核, QQ邮箱微信账户分享,添加123请求header 2025-01-24 19:21:58 +08:00
qaiu
ce0c3b3a1e add: 网易云音乐云盘分享URL支持 2025-01-23 17:23:58 +08:00
qaiu
1e611dd85b Update README.md 2025-01-10 14:33:30 +08:00
qaiu
0791114e92 Update README.md 2025-01-10 14:21:00 +08:00
qaiu
c85b9a01fd Update README.md 2025-01-10 14:19:59 +08:00
qaiu
9c2a0e7f46 Update README.md 2025-01-10 14:14:20 +08:00
qaiu
8699aef0da Update README.md 2025-01-10 14:12:55 +08:00
qaiu
749bc67212 Update README.md 2025-01-10 14:12:04 +08:00
QAIU
67e24e846b Merge remote-tracking branch 'origin/main' 2025-01-07 15:04:07 +08:00
QAIU
091def569a remove yarn.lock 2025-01-07 15:03:53 +08:00
qaiu
fb0cf9102b Update maven.yml 2025-01-07 15:00:18 +08:00
QAIU
69ce48adb4 remove yarn.lock 2025-01-07 14:48:16 +08:00
QAIU
6c3ab975cc 优化解析器链接识别 2025-01-07 13:19:40 +08:00
QAIU
f501935365 115pan 2025-01-07 11:13:52 +08:00
QAIU
c3593f335e 115pan分享识别优化 2025-01-06 18:01:23 +08:00
QAIU
351bdd9c58 代理服务配置优化 2025-01-04 17:38:33 +08:00
QAIU
812042b95e 修复蓝奏优享解析失败, gz压缩的json解析 2025-01-04 15:21:15 +08:00
QAIU
9957fcbce8 修复蓝奏优享解析失败 2025-01-04 14:21:32 +08:00
QAIU
acb2c00cca Merge remote-tracking branch 'origin/main' 2025-01-04 14:18:46 +08:00
QAIU
9655b8715e 常规测试 2024-12-30 18:11:53 +08:00
qaiu
13de30e8b5 Update README.md
add docker加速地址
2024-12-23 13:05:25 +08:00
qaiu
1cfeae2ad2 Update maven.yml 2024-12-23 13:02:51 +08:00
qaiu
31b4190eaf Update maven.yml 2024-12-23 13:00:28 +08:00
qaiu
380e1c7482 Update README.md 2024-12-18 13:05:16 +08:00
QAIU
f202800a0a 1. onedrive
常规测试
2024-12-18 11:46:06 +08:00
qaiu
96d246e64f Merge pull request #78 from xrgzs/add-ghcr
增加 ghcr.io 容器构建
2024-12-17 16:24:03 +08:00
xrgzs
75b460f4b0 PR时不更新依赖图 2024-12-17 16:15:59 +08:00
xrgzs
1ba7af485d 增加 ghcr.io 容器构建 2024-12-17 15:47:05 +08:00
QAIU
76c16c6312 1. 代理配置 2024-12-17 15:21:59 +08:00
qaiu
66a09a8f1c 更新 P115Tool.java
UA问题说明
2024-12-17 09:37:48 +08:00
QAIU
235fed1b4e 1. 动态UA 2024-12-16 19:01:55 +08:00
QAIU
f75921ba03 1. 动态UA 2024-12-16 18:52:02 +08:00
QAIU
202b261a53 1. P115网盘解析BUG
2. 完善onedrive支持
2024-12-16 15:54:06 +08:00
QAIU
95c39d258e API 2024-12-16 13:19:15 +08:00
QAIU
71b35e4651 添加115网盘支持(测试中)#75 2024-12-16 13:15:53 +08:00
QAIU
2465a4d6d3 修复小飞机解析失败 2024-12-16 12:31:34 +08:00
QAIU
30d4ce4781 处理编译失败问题 2024-11-29 11:50:44 +08:00
QAIU
27be70ea00 修复蓝奏优享#71 2024-11-26 13:02:02 +08:00
qaiu
0c22267eaa Merge pull request #70 from qaiu/dependabot/npm_and_yarn/web-front/eslint/plugin-kit-0.2.3
Bump @eslint/plugin-kit from 0.2.2 to 0.2.3 in /web-front
2024-11-18 12:12:25 +08:00
dependabot[bot]
d4f4ec67c3 Bump @eslint/plugin-kit from 0.2.2 to 0.2.3 in /web-front
Bumps [@eslint/plugin-kit](https://github.com/eslint/rewrite) from 0.2.2 to 0.2.3.
- [Release notes](https://github.com/eslint/rewrite/releases)
- [Changelog](https://github.com/eslint/rewrite/blob/main/release-please-config.json)
- [Commits](https://github.com/eslint/rewrite/compare/plugin-kit-v0.2.2...plugin-kit-v0.2.3)

---
updated-dependencies:
- dependency-name: "@eslint/plugin-kit"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-15 21:50:27 +00:00
qaiu
df74d9a117 Update README.md 2024-11-13 13:59:54 +08:00
QAIU
2fc7556f39 IP互助计划, 添加正向代理服务(TODO) 2024-11-12 19:05:43 +08:00
QAIU
418dcde15f . 2024-11-07 18:37:08 +08:00
QAIU
59db290cae web file package config 2024-11-07 12:34:24 +08:00
QAIU
2992d3586f pod update 2024-11-05 18:42:32 +08:00
qaiu
7b8eea4865 Merge pull request #67 from qaiu/dependabot/npm_and_yarn/web-front/http-proxy-middleware-2.0.7
Bump http-proxy-middleware from 2.0.6 to 2.0.7 in /web-front
2024-11-04 19:13:24 +08:00
dependabot[bot]
6b2bba2854 Bump http-proxy-middleware from 2.0.6 to 2.0.7 in /web-front
Bumps [http-proxy-middleware](https://github.com/chimurai/http-proxy-middleware) from 2.0.6 to 2.0.7.
- [Release notes](https://github.com/chimurai/http-proxy-middleware/releases)
- [Changelog](https://github.com/chimurai/http-proxy-middleware/blob/v2.0.7/CHANGELOG.md)
- [Commits](https://github.com/chimurai/http-proxy-middleware/compare/v2.0.6...v2.0.7)

---
updated-dependencies:
- dependency-name: http-proxy-middleware
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-04 10:58:07 +00:00
QAIU
4666e942b4 升级vue3 2024-11-04 18:56:49 +08:00
QAIU
daa3c940ee 1. add iCloud解析 2024-11-04 14:18:56 +08:00
qaiu
e54c15dad1 手残 又不小心提交了 ads代码 2024-11-02 18:59:33 +08:00
qaiu
054024e3e8 里程碑版本前奏: 1. 添加google云盘解析(需要联网), 2. web页面人工智障自动解析URL, 3. 优化一堆细节问题, 4: git换行配置(待验证), 5. 酷我解析可用 2024-11-02 18:58:15 +08:00
QAIU
5be8c4548f 1. 优化123pan日志, 2. 微博短链测试, 3. 分享类添加其他参数Map(Cookie支持准备) 2024-11-01 18:18:29 +08:00
qaiu
60bd8ecf21 更新 urltool.py 2024-10-29 18:59:23 +08:00
QAIU
25edeaf709 .. 2024-10-29 18:36:51 +08:00
QAIU
1e7525f908 .. 2024-10-28 18:59:18 +08:00
QAIU
341e33a845 .. 2024-10-28 18:58:37 +08:00
QAIU
f5ef8c07a5 add onedrive 2024-10-28 18:57:26 +08:00
qaiu
76da12da65 0.0 前端优化,302标识短链添加/d前缀 2024-10-28 14:36:39 +08:00
QAIU
dacf93bd06 add 118, 微雨云 2024-10-26 16:04:49 +08:00
QAIU
498bce5255 idea run Main. 2024-10-25 18:18:42 +08:00
QAIU
d67df58bc6 Merge remote-tracking branch 'origin/main' 2024-10-25 18:18:34 +08:00
QAIU
751c7163fe idea run Main. 2024-10-25 18:18:17 +08:00
qaiu
9bd5da8ac3 Update README.md 2024-10-25 14:54:19 +08:00
qaiu
769e8545b6 Update README.md 2024-10-25 14:52:36 +08:00
qaiu
a30c037138 Update README.md 2024-10-25 14:49:09 +08:00
QAIU
3c7fc752fc add 酷狗音乐, 酷我音乐, 网易云音乐, QQ音乐 2024-10-25 14:38:57 +08:00
QAIU
54576e8cbc 一处SQL语法错误 2024-10-24 10:48:36 +08:00
QAIU
f2bac57ed3 0..0 2024-10-23 18:08:10 +08:00
qaiu
a3220c36c1 0.0 2024-10-23 18:04:34 +08:00
QAIU
821fc945cf 1. add music parser 2024-10-21 19:14:29 +08:00
QAIU
784b3334f4 1. add 网易云音乐解析 2024-10-20 18:16:51 +08:00
qaiu
57c3355d3e 更新 app-dev.yml 蓝奏设置合理缓存时间 2024-10-11 08:15:10 +08:00
qaiu
9275e28e15 Update README.md 2024-10-09 15:38:29 +08:00
QAIU
a82596dc70 1. add 城通网盘解析(慢速) https://www.ctfile.com
2. 优化解析接口的实现
2024-10-09 15:33:33 +08:00
qaiu
add27186bc 前端打包说明 2024-10-08 03:01:29 +08:00
qaiu
087ad0c120 前端打包说明 2024-10-08 02:13:50 +08:00
qaiu
5cd1db7e4b 1. 启用内嵌静态页面, 2. 蓝奏域名规则优化, 3. 反向代理优化, 4. 修复一堆细节问题 2024-10-08 02:06:37 +08:00
qaiu
3cdbac1603 更新 README.md 2024-10-07 19:32:22 +08:00
qaiu
7402dd76cc 更新 PanDomainTemplate.java
蓝奏匹配正则优化
2024-10-06 15:19:51 +08:00
qaiu
de2e47628a 更新 PanDomainTemplate.java 2024-10-06 15:04:13 +08:00
qaiu
aad0098169 1. add:123云盘的新域名
2. update: 统计API支持ce盘
3. 缓存时长
2024-10-01 17:38:57 +08:00
QAIU
922ce84000 国庆快乐 ^ ^ #59 2024-09-30 17:42:38 +08:00
QAIU
aabfcd8c8b 国庆快乐 ^ ^ #59 2024-09-30 17:38:36 +08:00
qaiu
0e15d9f309 更新 README.md 2024-09-29 22:11:04 +08:00
qaiu
5ac89ac085 更新 README.md 2024-09-29 22:10:23 +08:00
qaiu
b3ec433d33 更新 README.md 2024-09-29 22:09:58 +08:00
QAIU
207b4cf6b3 update 支持Cloudreve任意https的80端口的域名, 修复因json异常解析导致的解析时间超时的问题 2024-09-25 20:01:10 +08:00
QAIU
03fbb3ef15 update web-front README.md 2024-09-24 18:05:30 +08:00
QAIU
4ce62d6b98 1. 修改文叔叔链接匹配规则 2024-09-24 17:55:18 +08:00
QAIU
1f504a8cd5 1. 前端页面优化, 增强统计功能, 支持生成二维码
2. 添加统计接口
2024-09-24 17:08:29 +08:00
qaiu
dd52f5a61f Update README.md 2024-09-24 10:07:25 +08:00
qaiu
8369212bd3 Merge pull request #56 from qaiu/dependabot/npm_and_yarn/web-front/micromatch-4.0.8
Bump micromatch from 4.0.5 to 4.0.8 in /web-front
2024-09-24 00:09:00 +08:00
QAIU
c67911f1bb 修复移动云空间无法解析的前端问题, 更新前端依赖 2024-09-23 18:33:09 +08:00
dependabot[bot]
af95de8d15 Bump micromatch from 4.0.5 to 4.0.8 in /web-front
Bumps [micromatch](https://github.com/micromatch/micromatch) from 4.0.5 to 4.0.8.
- [Release notes](https://github.com/micromatch/micromatch/releases)
- [Changelog](https://github.com/micromatch/micromatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/micromatch/compare/4.0.5...4.0.8)

---
updated-dependencies:
- dependency-name: micromatch
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-23 08:46:39 +00:00
QAIU
ba2bfbd11a 修复移动云空间无法解析的前端问题, 更新前端依赖 2024-09-23 16:45:30 +08:00
qaiu
cc4b0ae90e Update README.md add 宝塔安装教程 2024-09-22 17:27:54 +08:00
qaiu
399f55cae6 . 2024-09-19 05:34:34 +00:00
qaiu
981513a557 . 2024-09-19 05:31:24 +00:00
qaiu
326cfa838c 依赖更新 2024-09-19 05:26:31 +00:00
qaiu
b576e06099 web-front add yarn.lock 2024-09-19 05:22:55 +00:00
qaiu
1ad788c63f Update devcontainer.json 2024-09-19 09:37:01 +08:00
qaiu
faf4d8e7ef Merge pull request #47 from qaiu/dependabot/npm_and_yarn/web-front/webpack-5.94.0
Bump webpack from 5.88.2 to 5.94.0 in /web-front
2024-09-19 09:01:53 +08:00
qaiu
d77095fe87 Merge pull request #51 from qaiu/dependabot/npm_and_yarn/web-front/multi-d66d039ac5
Bump serve-static and express in /web-front
2024-09-19 09:01:04 +08:00
qaiu
1bd1f611fe Merge pull request #52 from qaiu/dependabot/npm_and_yarn/web-front/express-4.21.0
Bump express from 4.19.2 to 4.21.0 in /web-front
2024-09-19 09:00:27 +08:00
dependabot[bot]
38f13524a1 Bump express from 4.19.2 to 4.21.0 in /web-front
Bumps [express](https://github.com/expressjs/express) from 4.19.2 to 4.21.0.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/4.21.0/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.19.2...4.21.0)

---
updated-dependencies:
- dependency-name: express
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-19 00:59:00 +00:00
dependabot[bot]
d5588e3850 Bump serve-static and express in /web-front
Bumps [serve-static](https://github.com/expressjs/serve-static) and [express](https://github.com/expressjs/express). These dependencies needed to be updated together.

Updates `serve-static` from 1.15.0 to 1.16.2
- [Release notes](https://github.com/expressjs/serve-static/releases)
- [Changelog](https://github.com/expressjs/serve-static/blob/v1.16.2/HISTORY.md)
- [Commits](https://github.com/expressjs/serve-static/compare/v1.15.0...v1.16.2)

Updates `express` from 4.19.2 to 4.21.0
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/4.21.0/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.19.2...4.21.0)

---
updated-dependencies:
- dependency-name: serve-static
  dependency-type: indirect
- dependency-name: express
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-19 00:58:59 +00:00
qaiu
b7c2887d0c Merge pull request #48 from qaiu/dependabot/npm_and_yarn/web-front/axios-1.7.4
Bump axios from 1.6.0 to 1.7.4 in /web-front
2024-09-19 08:57:43 +08:00
qaiu
1cba9df571 更新 PanDomainTemplate.java 2024-09-19 06:20:12 +08:00
qaiu
32fc530a17 示例下载链接修改 2024-09-19 05:43:54 +08:00
qaiu
c9436f0a47 Create devcontainer.json 2024-09-18 17:40:52 +08:00
qaiu
b8174a16f4 Update README.md 2024-09-18 16:58:27 +08:00
qaiu
2a44a55764 Update README.md 2024-09-18 16:58:02 +08:00
qaiu
0ad72c9108 1. .. 2024-09-18 15:45:49 +08:00
qaiu
b8340949d5 1. 123后缀处理 2. 修复缓存时间戳格式问题 2024-09-18 15:41:56 +08:00
qaiu
6c3433595f Update README.md 2024-09-18 13:34:53 +08:00
qaiu
3e5e42fef9 Update README.md 2024-09-18 13:34:26 +08:00
qaiu
c19f584b0d 1. 缓存优化 2024-09-18 13:28:20 +08:00
qaiu
0bbf022c5d 1. 缓存优化 2024-09-18 13:24:33 +08:00
qaiu
4516aa8300 1. remove error update 2024-09-15 06:54:55 +08:00
qaiu
30a53dd47c 1. 添加缓存
2. 优化解析架构
3. 优化核心模块
2024-09-15 06:53:11 +08:00
dependabot[bot]
6e77c21021 Bump axios from 1.6.0 to 1.7.4 in /web-front
Bumps [axios](https://github.com/axios/axios) from 1.6.0 to 1.7.4.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.6.0...v1.7.4)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-30 18:09:12 +00:00
dependabot[bot]
f035cf4088 Bump webpack from 5.88.2 to 5.94.0 in /web-front
Bumps [webpack](https://github.com/webpack/webpack) from 5.88.2 to 5.94.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.88.2...v5.94.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-30 18:07:43 +00:00
qaiu
af5cba5ed6 Update README.md 2024-07-13 12:50:02 +08:00
qaiu
8bb3d26b4c Update README.md 2024-06-19 10:04:04 +08:00
qaiu
ef0829ab8f Update README.md 2024-06-19 10:03:53 +08:00
qaiu
13f3546700 Merge pull request #45 from qaiu/dependabot/npm_and_yarn/web-front/multi-d7cccafd4e
Bump braces and filemanager-webpack-plugin in /web-front
2024-06-14 12:14:05 +08:00
dependabot[bot]
0cccba7b3b Bump braces and filemanager-webpack-plugin in /web-front
Bumps [braces](https://github.com/micromatch/braces) to 3.0.3 and updates ancestor dependency [filemanager-webpack-plugin](https://github.com/gregnb/filemanager-webpack-plugin). These dependencies need to be updated together.


Updates `braces` from 3.0.2 to 3.0.3
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3)

Updates `filemanager-webpack-plugin` from 2.0.5 to 8.0.0
- [Release notes](https://github.com/gregnb/filemanager-webpack-plugin/releases)
- [Changelog](https://github.com/gregnb/filemanager-webpack-plugin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gregnb/filemanager-webpack-plugin/compare/v2.0.5...v8.0.0)

---
updated-dependencies:
- dependency-name: braces
  dependency-type: indirect
- dependency-name: filemanager-webpack-plugin
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-11 06:54:54 +00:00
6 changed files with 301 additions and 216 deletions

52
.vscode/launch.json vendored
View File

@@ -1,7 +1,4 @@
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
@@ -10,61 +7,12 @@
"request": "launch",
"mainClass": "${file}"
},
{
"type": "java",
"name": "StringCase",
"request": "launch",
"mainClass": "cn.qaiu.vx.core.util.StringCase",
"projectName": "core"
},
{
"type": "java",
"name": "FCURLParser",
"request": "launch",
"mainClass": "cn.qaiu.parser.FCURLParser",
"projectName": "parser"
},
{
"type": "java",
"name": "QkTool",
"request": "launch",
"mainClass": "cn.qaiu.parser.impl.QkTool",
"projectName": "parser"
},
{
"type": "java",
"name": "WebClientExample",
"request": "launch",
"mainClass": "qaiu.web.test.WebClientExample",
"projectName": "parser"
},
{
"type": "java",
"name": "AppMain",
"request": "launch",
"mainClass": "cn.qaiu.lz.AppMain",
"projectName": "web-service"
},
{
"type": "java",
"name": "TestJs",
"request": "launch",
"mainClass": "cn.qaiu.web.test.TestJs",
"projectName": "web-service"
},
{
"type": "java",
"name": "TestOS",
"request": "launch",
"mainClass": "cn.qaiu.web.test.TestOS",
"projectName": "web-service"
},
{
"type": "java",
"name": "WebProxyExamples",
"request": "launch",
"mainClass": "cn.qaiu.web.test.WebProxyExamples",
"projectName": "web-service"
}
]
}

View File

@@ -14,7 +14,7 @@
# netdisk-fast-download 网盘分享链接云解析服务
QQ群1017480890
QQ交流1017480890
netdisk-fast-download网盘直链云解析(nfd云解析)能把网盘分享下载链接转化为直链,支持多款云盘,已支持蓝奏云/蓝奏云优享/奶牛快传/移动云云空间/小飞机盘/亿方云/123云盘/Cloudreve等支持加密分享以及部分网盘文件夹分享。
@@ -45,7 +45,7 @@ https://nfd-parser.github.io/nfd-preview/preview.html?src=https%3A%2F%2Flz.qaiu.
## 预览地址
[预览地址1](https://lz.qaiu.top)
[预览地址2](https://lz0.qaiu.top)
[移动/联通/天翼云盘大文件试用](https://189.qaiu.top)
[天翼云盘/移动云盘限时体验](https://189.qaiu.top)
main分支依赖JDK17, 提供了JDK11分支[main-jdk11](https://github.com/qaiu/netdisk-fast-download/tree/main-jdk11)
**0.1.8及以上版本json接口格式有调整 参考json返回数据格式示例**
@@ -95,6 +95,8 @@ main分支依赖JDK17, 提供了JDK11分支[main-jdk11](https://github.com/qaiu/
## API接口
[api接口文档](https://nfdparser.apifox.cn/)
### 服务端口
- **6400**: API 服务端口(建议使用 Nginx 代理)
- **6401**: 内置 Web 解析工具(个人使用可直接开放此端口)

View File

@@ -104,7 +104,7 @@ public enum PanDomainTemplate {
"lanzoug|" +
"lanzoum" +
")\\.com/(.+/)?(?<KEY>.+)"),
"https://lanzoux.com/{shareKey}",
"https://w1.lanzn.com/{shareKey}",
LzTool.class),
// https://www.feijix.com/s/

View File

@@ -4,13 +4,15 @@ import cn.qaiu.entity.FileInfo;
import cn.qaiu.entity.ShareLinkInfo;
import cn.qaiu.parser.PanBase;
import cn.qaiu.util.AESUtils;
import cn.qaiu.util.AcwScV2Generator;
import cn.qaiu.util.FileSizeConverter;
import cn.qaiu.util.UUIDUtil;
import io.netty.handler.codec.http.cookie.DefaultCookie;
import io.vertx.core.Future;
import io.vertx.core.MultiMap;
import io.vertx.core.Promise;
import io.vertx.core.json.JsonArray;
import io.vertx.core.json.JsonObject;
import io.vertx.ext.web.client.WebClientSession;
import io.vertx.uritemplate.UriTemplate;
import org.apache.commons.lang3.StringUtils;
@@ -18,10 +20,12 @@ import java.util.*;
/**
* 蓝奏云优享
*
* v019b22
*/
public class IzTool extends PanBase {
WebClientSession webClientSession = WebClientSession.create(clientNoRedirects);
private static final String API_URL_PREFIX = "https://api.ilanzou.com/unproved/";
private static final String FIRST_REQUEST_URL = API_URL_PREFIX + "recommend/list?devType=6&devModel=Chrome" +
@@ -70,6 +74,19 @@ public class IzTool extends PanBase {
super(shareLinkInfo);
}
private void setCookie(String html) {
int beginIndex = html.indexOf("arg1='") + 6;
String arg1 = html.substring(beginIndex, html.indexOf("';", beginIndex));
String acw_sc__v2 = AcwScV2Generator.acwScV2Simple(arg1);
// 创建一个 Cookie 并放入 CookieStore
DefaultCookie nettyCookie = new DefaultCookie("acw_sc__v2", acw_sc__v2);
nettyCookie.setDomain(".ilanzou.com"); // 设置域名
nettyCookie.setPath("/"); // 设置路径
nettyCookie.setSecure(false);
nettyCookie.setHttpOnly(false);
webClientSession.cookieStore().put(nettyCookie);
}
public Future<String> parse() {
String shareId = shareLinkInfo.getShareKey();
@@ -80,70 +97,100 @@ public class IzTool extends PanBase {
// POST https://api.ilanzou.com/ws/recommend/list?devType=6&devModel=Chrome&extra=2&shareId=146731&type=0&offset=1&limit=60
String url = StringUtils.isBlank(shareLinkInfo.getSharePassword()) ? FIRST_REQUEST_URL
: (FIRST_REQUEST_URL + "&code=" + shareLinkInfo.getSharePassword());
client.postAbs(UriTemplate.of(VIP_REQUEST_URL))
webClientSession.postAbs(UriTemplate.of(VIP_REQUEST_URL))
.setTemplateParam("uuid", uuid)
.setTemplateParam("ts", tsEncode)
.send().onSuccess(r0 -> { // 忽略res
// 第一次请求 获取文件信息
// POST https://api.feijipan.com/ws/recommend/list?devType=6&devModel=Chrome&extra=2&shareId=146731&type=0&offset=1&limit=60
client.postAbs(UriTemplate.of(url))
webClientSession.postAbs(UriTemplate.of(url))
.putHeaders(header)
.setTemplateParam("shareId", shareId)
.setTemplateParam("uuid", uuid)
.setTemplateParam("ts", tsEncode)
.send().onSuccess(res -> {
JsonObject resJson = asJson(res);
if (resJson.getInteger("code") != 200) {
fail(FIRST_REQUEST_URL + " 返回异常: " + resJson);
String resBody = asText(res);
// 检查是否包含 cookie 验证
if (resBody.contains("var arg1='")) {
webClientSession = WebClientSession.create(clientNoRedirects);
setCookie(resBody);
// 重新请求
webClientSession.postAbs(UriTemplate.of(url))
.putHeaders(header)
.setTemplateParam("shareId", shareId)
.setTemplateParam("uuid", uuid)
.setTemplateParam("ts", tsEncode)
.send().onSuccess(res2 -> {
handleParseResponse(asText(res2), shareId);
}).onFailure(handleFail(FIRST_REQUEST_URL));
return;
}
if (resJson.getJsonArray("list").isEmpty()) {
fail(FIRST_REQUEST_URL + " 解析文件列表为空: " + resJson);
return;
}
if (!resJson.containsKey("list") || resJson.getJsonArray("list").isEmpty()) {
fail(FIRST_REQUEST_URL + " 解析文件列表为空: " + resJson);
return;
}
// 文件Id
JsonObject fileInfo = resJson.getJsonArray("list").getJsonObject(0);
// 如果是目录返回目录ID
if (!fileInfo.containsKey("fileList") || fileInfo.getJsonArray("fileList").isEmpty()) {
fail(FIRST_REQUEST_URL + " 文件列表为空: " + fileInfo);
return;
}
JsonObject fileList = fileInfo.getJsonArray("fileList").getJsonObject(0);
if (fileList.getInteger("fileType") == 2) {
promise.complete(fileList.getInteger("folderId").toString());
return;
}
String fileId = fileInfo.getString("fileIds");
String userId = fileInfo.getString("userId");
// 其他参数
// String fidEncode = AESUtils.encrypt2HexIz(fileId + "|");
String fidEncode = AESUtils.encrypt2HexIz(fileId + "|" + userId);
String auth = AESUtils.encrypt2HexIz(fileId + "|" + nowTs);
// 第二次请求
clientNoRedirects.getAbs(UriTemplate.of(SECOND_REQUEST_URL))
.setTemplateParam("fidEncode", fidEncode)
.setTemplateParam("uuid", uuid)
.setTemplateParam("ts", tsEncode)
.setTemplateParam("auth", auth)
.setTemplateParam("shareId", shareId)
.putHeaders(header).send().onSuccess(res2 -> {
MultiMap headers = res2.headers();
if (!headers.contains("Location")) {
fail(SECOND_REQUEST_URL + " 未找到重定向URL: \n" + headers);
return;
}
promise.complete(headers.get("Location"));
}).onFailure(handleFail(SECOND_REQUEST_URL));
handleParseResponse(resBody, shareId);
}).onFailure(handleFail(FIRST_REQUEST_URL));
});
return promise.future();
}
private void handleParseResponse(String resBody, String shareId) {
JsonObject resJson;
try {
resJson = new JsonObject(resBody);
} catch (Exception e) {
fail(FIRST_REQUEST_URL + " 解析JSON失败: " + resBody);
return;
}
if (resJson.isEmpty()) {
fail(FIRST_REQUEST_URL + " 返回内容为空");
return;
}
if (resJson.getInteger("code") != 200) {
fail(FIRST_REQUEST_URL + " 返回异常: " + resJson);
return;
}
if (resJson.getJsonArray("list").isEmpty()) {
fail(FIRST_REQUEST_URL + " 解析文件列表为空: " + resJson);
return;
}
if (!resJson.containsKey("list") || resJson.getJsonArray("list").isEmpty()) {
fail(FIRST_REQUEST_URL + " 解析文件列表为空: " + resJson);
return;
}
// 文件Id
JsonObject fileInfo = resJson.getJsonArray("list").getJsonObject(0);
// 如果是目录返回目录ID
if (!fileInfo.containsKey("fileList") || fileInfo.getJsonArray("fileList").isEmpty()) {
fail(FIRST_REQUEST_URL + " 文件列表为空: " + fileInfo);
return;
}
JsonObject fileList = fileInfo.getJsonArray("fileList").getJsonObject(0);
if (fileList.getInteger("fileType") == 2) {
promise.complete(fileList.getInteger("folderId").toString());
return;
}
String fileId = fileInfo.getString("fileIds");
String userId = fileInfo.getString("userId");
// 其他参数
// String fidEncode = AESUtils.encrypt2HexIz(fileId + "|");
String fidEncode = AESUtils.encrypt2HexIz(fileId + "|" + userId);
String auth = AESUtils.encrypt2HexIz(fileId + "|" + nowTs);
// 第二次请求
webClientSession.getAbs(UriTemplate.of(SECOND_REQUEST_URL))
.setTemplateParam("fidEncode", fidEncode)
.setTemplateParam("uuid", uuid)
.setTemplateParam("ts", tsEncode)
.setTemplateParam("auth", auth)
.setTemplateParam("shareId", shareId)
.putHeaders(header).send().onSuccess(res2 -> {
MultiMap headers = res2.headers();
if (!headers.contains("Location")) {
fail(SECOND_REQUEST_URL + " 未找到重定向URL: \n" + headers);
return;
}
promise.complete(headers.get("Location"));
}).onFailure(handleFail(SECOND_REQUEST_URL));
}
@Override
public Future<List<FileInfo>> parseFileList() {
Promise<List<FileInfo>> promise = Promise.promise();
@@ -174,7 +221,7 @@ public class IzTool extends PanBase {
log.debug("开始解析目录: {}, shareId: {}, uuid: {}, ts: {}", id, shareId, uuid, tsEncode);
// 开始解析目录: 164312216, shareId: bPMsbg5K, uuid: 0fmVWTx2Ea4zFwkpd7KXf, ts: 20865d7b7f00828279f437cd1f097860
// 拿到目录ID
client.postAbs(UriTemplate.of(FILE_LIST_URL))
webClientSession.postAbs(UriTemplate.of(FILE_LIST_URL))
.putHeaders(header)
.setTemplateParam("shareId", shareId)
.setTemplateParam("uuid", uuid)
@@ -264,7 +311,7 @@ public class IzTool extends PanBase {
public Future<String> parseById() {
// 第二次请求
JsonObject paramJson = (JsonObject)shareLinkInfo.getOtherParam().get("paramJson");
clientNoRedirects.getAbs(UriTemplate.of(SECOND_REQUEST_URL))
webClientSession.getAbs(UriTemplate.of(SECOND_REQUEST_URL))
.setTemplateParam("fidEncode", paramJson.getString("fidEncode"))
.setTemplateParam("uuid", paramJson.getString("uuid"))
.setTemplateParam("ts", paramJson.getString("ts"))

View File

@@ -10,6 +10,8 @@ import io.vertx.core.Promise;
import io.vertx.core.json.JsonArray;
import io.vertx.core.json.JsonObject;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Base64;
import java.util.List;
@@ -202,12 +204,21 @@ public class LeTool extends PanBase {
fileInfo.setFileType("folder");
fileInfo.setSize(0L);
fileInfo.setSizeStr("0B");
// 设置目录解析的URL - 注意从API返回的fileId已经是URL编码的,直接使用
// 不需要再次编码,避免双重编码导致解析失败
fileInfo.setParserUrl(String.format("%s/v2/getFileList?url=%s&dirId=%s",
getDomainName(),
shareLinkInfo.getShareUrl(),
fileId));
// 设置目录解析的URL - fileId 需要进行 URL 编码以保持特殊字符的编码状态
try {
String encodedFileId = URLEncoder.encode(fileId, "UTF-8");
fileInfo.setParserUrl(String.format("%s/v2/getFileList?url=%s&dirId=%s",
getDomainName(),
shareLinkInfo.getShareUrl(),
encodedFileId));
} catch (UnsupportedEncodingException e) {
log.error("URL编码失败: {}", e.getMessage());
// 降级方案:直接使用原始 fileId
fileInfo.setParserUrl(String.format("%s/v2/getFileList?url=%s&dirId=%s",
getDomainName(),
shareLinkInfo.getShareUrl(),
fileId));
}
} else {
// 文件类型
fileInfo.setFileType(fileType != null ? String.valueOf(fileType) : DEFAULT_FILE_TYPE);

View File

@@ -11,14 +11,12 @@ import io.vertx.core.Promise;
import io.vertx.core.json.JsonObject;
import io.vertx.ext.web.client.WebClient;
import io.vertx.ext.web.client.WebClientSession;
import org.apache.commons.lang3.RegExUtils;
import org.openjdk.nashorn.api.scripting.ScriptObjectMirror;
import javax.script.ScriptException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -29,13 +27,14 @@ import java.util.regex.Pattern;
*/
public class LzTool extends PanBase {
public static final String SHARE_URL_PREFIX = "https://wwwwp.lanzoup.com";
WebClientSession webClientSession = WebClientSession.create(clientNoRedirects);
public static final String SHARE_URL_PREFIX = "https://w1.lanzn.com/";
MultiMap headers0 = HeaderUtils.parseHeaders("""
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Cache-Control: max-age=0
Cookie: codelen=1; pc_ad1=1
DNT: 1
Priority: u=0, i
Sec-CH-UA: "Chromium";v="140", "Not=A?Brand";v="24", "Microsoft Edge";v="140"
@@ -63,53 +62,100 @@ public class LzTool extends PanBase {
.putHeaders(headers0)
.send().onSuccess(res -> {
String html = asText(res);
try {
setFileInfo(html, shareLinkInfo);
} catch (Exception e) {
e.printStackTrace();
}
// 匹配iframe
Pattern compile = Pattern.compile("src=\"(/fn\\?[a-zA-Z\\d_+/=]{16,})\"");
Matcher matcher = compile.matcher(html);
// 没有Iframe说明是加密分享, 匹配sign通过密码请求下载页面
if (!matcher.find()) {
try {
String jsText = getJsByPwd(pwd, html, "document.getElementById('rpt')");
ScriptObjectMirror scriptObjectMirror = JsExecUtils.executeDynamicJs(jsText, "down_p");
getDownURL(sUrl, client, scriptObjectMirror);
} catch (Exception e) {
fail(e, "js引擎执行失败");
}
} else {
// 没有密码
String iframePath = matcher.group(1);
client.getAbs(SHARE_URL_PREFIX + iframePath).send().onSuccess(res2 -> {
String html2 = res2.bodyAsString();
if (html.contains("var arg1='")) {
webClientSession = WebClientSession.create(clientNoRedirects);
setCookie(html);
webClientSession.getAbs(sUrl)
.putHeaders(headers0)
.send().onSuccess(res2 -> {
String html2 = asText(res2);
doParser(html2, pwd, sUrl);
});
// 去TMD正则
// Matcher matcher2 = Pattern.compile("'sign'\s*:\s*'(\\w+)'").matcher(html2);
String jsText = getJsText(html2);
if (jsText == null) {
fail(SHARE_URL_PREFIX + iframePath + " -> " + sUrl + ": js脚本匹配失败, 可能分享已失效");
return;
}
try {
ScriptObjectMirror scriptObjectMirror = JsExecUtils.executeDynamicJs(jsText, null);
getDownURL(sUrl, client, scriptObjectMirror);
} catch (ScriptException | NoSuchMethodException e) {
fail(e, "js引擎执行失败");
}
}).onFailure(handleFail(SHARE_URL_PREFIX));
} else {
doParser(html, pwd, sUrl);
}
}).onFailure(handleFail(sUrl));
return promise.future();
}
private void doParser(String html, String pwd, String sUrl) {
try {
setFileInfo(html, shareLinkInfo);
} catch (Exception e) {
e.printStackTrace();
}
// 匹配iframe
Pattern compile = Pattern.compile("src=\"(/fn\\?[a-zA-Z\\d_+/=]{16,})\"");
Matcher matcher = compile.matcher(html);
// 没有Iframe说明是加密分享, 匹配sign通过密码请求下载页面
if (!matcher.find()) {
try {
String jsText = getJsByPwd(pwd, html, "document.getElementById('rpt')");
ScriptObjectMirror scriptObjectMirror = JsExecUtils.executeDynamicJs(jsText, "down_p");
getDownURL(sUrl, scriptObjectMirror);
} catch (Exception e) {
fail(e, "js引擎执行失败");
}
}
else {
// 没有密码
String iframePath = matcher.group(1);
String absoluteURI = SHARE_URL_PREFIX + iframePath;
webClientSession.getAbs(absoluteURI).putHeaders(headers0).send().onSuccess(res2 -> {
String html2= asText(res2);
// Matcher matcher2 = Pattern.compile("'sign'\s*:\s*'(\\w+)'").matcher(html2);
String jsText = getJsText(html2);
if (jsText == null) {
headers0.add("Referer", absoluteURI);
setCookie(html2);
webClientSession.getAbs(absoluteURI).send().onSuccess(res3 -> {
String html3= asText(res3);
String jsText3 = getJsText(html3);
if (jsText3 != null) {
try {
ScriptObjectMirror scriptObjectMirror = JsExecUtils.executeDynamicJs(jsText3, null);
getDownURL(sUrl, scriptObjectMirror);
} catch (ScriptException | NoSuchMethodException e) {
fail(e, "引擎执行失败");
}
} else {
fail(SHARE_URL_PREFIX + iframePath + " -> " + sUrl + ": 获取失败0, 可能分享已失效");
return;
}
});
} else {
try {
ScriptObjectMirror scriptObjectMirror = JsExecUtils.executeDynamicJs(jsText, null);
getDownURL(sUrl, scriptObjectMirror);
} catch (ScriptException | NoSuchMethodException e) {
fail(e, "js引擎执行失败");
}
}
}).onFailure(handleFail(SHARE_URL_PREFIX));
}
}
private void setCookie(String html2) {
int beginIndex = html2.indexOf("arg1='") + 6;
String arg1 = html2.substring(beginIndex, html2.indexOf("';", beginIndex));
String acw_sc__v2 = AcwScV2Generator.acwScV2Simple(arg1);
// 创建一个 Cookie 并放入 CookieStore
DefaultCookie nettyCookie = new DefaultCookie("acw_sc__v2", acw_sc__v2);
nettyCookie.setDomain(".lanzn.com"); // 设置域名
nettyCookie.setPath("/"); // 设置路径
nettyCookie.setSecure(false);
nettyCookie.setHttpOnly(false);
webClientSession.cookieStore().put(nettyCookie);
}
private String getJsByPwd(String pwd, String html, String subText) {
String jsText = getJsText(html);
if (jsText == null) {
throw new RuntimeException("js脚本匹配失败, 可能分享已失效");
throw new RuntimeException("获取失败1, 可能分享已失效");
}
jsText = jsText.replace("document.getElementById('pwd').value", "\"" + pwd + "\"");
int i = jsText.indexOf(subText);
@@ -131,7 +177,7 @@ public class LzTool extends PanBase {
return html.substring(startPos, endPos).replaceAll("<!--.*-->", "");
}
private void getDownURL(String key, WebClient client, Map<String, ?> obj) {
private void getDownURL(String key, Map<String, ?> obj) {
if (obj == null) {
fail("需要访问密码");
return;
@@ -163,7 +209,7 @@ public class LzTool extends PanBase {
headers.set("referer", key);
// action=downprocess&signs=%3Fctdf&websignkey=I5gl&sign=BWMGOF1sBTRWXwI9BjZdYVA7BDhfNAIyUG9UawJtUGMIPlAhACkCa1UyUTAAYFxvUj5XY1E7UGFXaFVq&websign=&kd=1&ves=1
String url = SHARE_URL_PREFIX + url0;
client.postAbs(url).putHeaders(headers).sendForm(map).onSuccess(res2 -> {
webClientSession.postAbs(url).putHeaders(headers).sendForm(map).onSuccess(res2 -> {
try {
JsonObject urlJson = asJson(res2);
String name = urlJson.getString("inf");
@@ -178,7 +224,6 @@ public class LzTool extends PanBase {
String downUrl = urlJson.getString("dom") + "/file/" + urlJson.getString("url");
headers.remove("Referer");
WebClientSession webClientSession = WebClientSession.create(client);
webClientSession.getAbs(downUrl).putHeaders(headers).send()
.onSuccess(res3 -> {
String location = res3.headers().get("Location");
@@ -195,12 +240,13 @@ public class LzTool extends PanBase {
nettyCookie.setPath("/"); // 设置路径
nettyCookie.setSecure(false);
nettyCookie.setHttpOnly(false);
webClientSession.cookieStore().put(nettyCookie);
webClientSession.getAbs(downUrl).putHeaders(headers).send()
WebClientSession webClientSession2 = WebClientSession.create(clientNoRedirects);
webClientSession2.cookieStore().put(nettyCookie);
webClientSession2.getAbs(downUrl).putHeaders(headers).send()
.onSuccess(res4 -> {
String location0 = res4.headers().get("Location");
if (location0 == null) {
fail(downUrl + " -> 直链获取失败, 可能分享已失效");
fail(downUrl + " -> 直链获取失败2, 可能分享已失效");
} else {
setDateAndComplate(location0);
}
@@ -248,67 +294,98 @@ public class LzTool extends PanBase {
String sUrl = shareLinkInfo.getShareUrl();
String pwd = shareLinkInfo.getSharePassword();
WebClient client = clientNoRedirects;
client.getAbs(sUrl).send().onSuccess(res -> {
webClientSession.getAbs(sUrl).send().onSuccess(res -> {
String html = res.bodyAsString();
try {
String jsText = getJsByPwd(pwd, html, "var urls =window.location.href");
ScriptObjectMirror scriptObjectMirror = JsExecUtils.executeDynamicJs(jsText, "file");
Map<String, Object> data = CastUtil.cast(scriptObjectMirror.get("data"));
MultiMap map = MultiMap.caseInsensitiveMultiMap();
data.forEach((k, v) -> map.set(k, v.toString()));
log.debug("解析参数: {}", map);
MultiMap headers = getHeaders(sUrl);
String url = SHARE_URL_PREFIX + "/filemoreajax.php?file=" + data.get("fid");
client.postAbs(url).putHeaders(headers).sendForm(map).onSuccess(res2 -> {
JsonObject fileListJson = asJson(res2);
if (fileListJson.getInteger("zt") != 1) {
promise.fail(baseMsg() + fileListJson.getString("info"));
return;
}
List<FileInfo> list = new ArrayList<>();
fileListJson.getJsonArray("text").forEach(item -> {
/*
{
"icon": "apk",
"t": 0,
"id": "iULV2n4361c",
"name_all": "xx.apk",
"size": "49.8 M",
"time": "2021-03-19",
"duan": "in4361",
"p_ico": 0
}
*/
JsonObject fileJson = (JsonObject) item;
FileInfo fileInfo = new FileInfo();
String size = fileJson.getString("size");
Long sizeNum = FileSizeConverter.convertToBytes(size);
String panType = shareLinkInfo.getType();
String id = fileJson.getString("id");
fileInfo.setFileName(fileJson.getString("name_all"))
.setFileId(id)
.setCreateTime(fileJson.getString("time"))
.setFileType(fileJson.getString("icon"))
.setSizeStr(fileJson.getString("size"))
.setSize(sizeNum)
.setPanType(panType)
.setParserUrl(getDomainName() + "/d/" + panType + "/" + id)
.setPreviewUrl(String.format("%s/v2/view/%s/%s", getDomainName(),
shareLinkInfo.getType(), id));
log.debug("文件信息: {}", fileInfo);
list.add(fileInfo);
});
promise.complete(list);
});
} catch (ScriptException | NoSuchMethodException e) {
promise.fail(e);
// 检查是否需要 cookie 验证
if (html.contains("var arg1='")) {
webClientSession = WebClientSession.create(clientNoRedirects);
setCookie(html);
// 重新请求
webClientSession.getAbs(sUrl).send().onSuccess(res2 -> {
handleFileListParse(res2.bodyAsString(), pwd, sUrl, promise);
}).onFailure(err -> promise.fail(err));
return;
}
});
handleFileListParse(html, pwd, sUrl, promise);
}).onFailure(err -> promise.fail(err));
return promise.future();
}
private void handleFileListParse(String html, String pwd, String sUrl, Promise<List<FileInfo>> promise) {
try {
String jsText = getJsByPwd(pwd, html, "var urls =window.location.href");
ScriptObjectMirror scriptObjectMirror = JsExecUtils.executeDynamicJs(jsText, "file");
Map<String, Object> data = CastUtil.cast(scriptObjectMirror.get("data"));
MultiMap map = MultiMap.caseInsensitiveMultiMap();
data.forEach((k, v) -> map.set(k, v.toString()));
log.debug("解析参数: {}", map);
MultiMap headers = getHeaders(sUrl);
String url = SHARE_URL_PREFIX + "/filemoreajax.php?file=" + data.get("fid");
webClientSession.postAbs(url).putHeaders(headers).sendForm(map).onSuccess(res2 -> {
String resBody = asText(res2);
// 再次检查是否需要 cookie 验证
if (resBody.contains("var arg1='")) {
setCookie(resBody);
// 重新请求
webClientSession.postAbs(url).putHeaders(headers).sendForm(map).onSuccess(res3 -> {
handleFileListResponse(asText(res3), promise);
}).onFailure(err -> promise.fail(err));
return;
}
handleFileListResponse(resBody, promise);
}).onFailure(err -> promise.fail(err));
} catch (ScriptException | NoSuchMethodException e) {
promise.fail(e);
}
}
private void handleFileListResponse(String responseBody, Promise<List<FileInfo>> promise) {
try {
JsonObject fileListJson = new JsonObject(responseBody);
if (fileListJson.getInteger("zt") != 1) {
promise.fail(baseMsg() + fileListJson.getString("info"));
return;
}
List<FileInfo> list = new ArrayList<>();
fileListJson.getJsonArray("text").forEach(item -> {
/*
{
"icon": "apk",
"t": 0,
"id": "iULV2n4361c",
"name_all": "xx.apk",
"size": "49.8 M",
"time": "2021-03-19",
"duan": "in4361",
"p_ico": 0
}
*/
JsonObject fileJson = (JsonObject) item;
FileInfo fileInfo = new FileInfo();
String size = fileJson.getString("size");
Long sizeNum = FileSizeConverter.convertToBytes(size);
String panType = shareLinkInfo.getType();
String id = fileJson.getString("id");
fileInfo.setFileName(fileJson.getString("name_all"))
.setFileId(id)
.setCreateTime(fileJson.getString("time"))
.setFileType(fileJson.getString("icon"))
.setSizeStr(fileJson.getString("size"))
.setSize(sizeNum)
.setPanType(panType)
.setParserUrl(getDomainName() + "/d/" + panType + "/" + id)
.setPreviewUrl(String.format("%s/v2/view/%s/%s", getDomainName(),
shareLinkInfo.getType(), id));
log.debug("文件信息: {}", fileInfo);
list.add(fileInfo);
});
promise.complete(list);
} catch (Exception e) {
promise.fail(e);
}
}
void setFileInfo(String html, ShareLinkInfo shareLinkInfo) {
// 写入 fileInfo
FileInfo fileInfo = new FileInfo();