From 068efd0503c0fc090b49b75a3b661a718781ac6d Mon Sep 17 00:00:00 2001
From: qaiu <736226400@qq.com>
Date: Tue, 9 Apr 2024 12:13:26 +0800
Subject: [PATCH] =?UTF-8?q?-=20=E5=8D=87=E7=BA=A7vertx=E5=88=B04.5.6=20-?=
=?UTF-8?q?=20=E6=B7=BB=E5=8A=A0Cloudreve=20-=20=E8=93=9D=E5=A5=8F?=
=?UTF-8?q?=E4=BA=91=E4=BC=98=E4=BA=AB=E5=92=8C=E5=B0=8F=E9=A3=9E=E6=9C=BA?=
=?UTF-8?q?=E8=A7=84=E5=88=99=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 73 ++++++++++++-------
core-database/pom.xml | 2 +-
.../main/java/cn/qaiu/parser/IPanTool.java | 4 +
.../src/main/java/cn/qaiu/parser/PanBase.java | 6 ++
.../main/java/cn/qaiu/parser/impl/CeTool.java | 73 +++++++++++++++++++
.../main/java/cn/qaiu/parser/impl/FjTool.java | 11 ++-
.../main/java/cn/qaiu/parser/impl/IzTool.java | 10 ++-
.../main/java/cn/qaiu/util/CommonUtils.java | 6 ++
pom.xml | 2 +-
.../java/cn/qaiu/lz/web/http/ServerApi.java | 26 +++----
.../src/main/resources/http-tools/pan-ce.http | 19 +++++
.../src/main/resources/http-tools/pan-fj.http | 23 +++++-
.../src/main/resources/http-tools/pan-iz.http | 9 +++
.../src/main/resources/http-tools/pan-jg.http | 17 +++++
.../src/main/resources/http-tools/test.http | 14 ++++
web-service/src/main/resources/logback.xml | 2 +-
16 files changed, 246 insertions(+), 51 deletions(-)
create mode 100644 parser/src/main/java/cn/qaiu/parser/impl/CeTool.java
create mode 100644 web-service/src/main/resources/http-tools/pan-ce.http
create mode 100644 web-service/src/main/resources/http-tools/pan-jg.http
diff --git a/README.md b/README.md
index 8fc7e6f..990030f 100644
--- a/README.md
+++ b/README.md
@@ -1,15 +1,15 @@
云盘解析服务 (nfd云解析)
-预览地址 https://lz.qaiu.top
-注意: lz.qaiu.top因解析量过大IP已被123和小飞机禁止访问,
-请不要过度依赖预览地址服务,建议本地搭建或者云服务器自行搭建
+预览地址 https://lz.qaiu.top
+**注意: 请不要过度依赖lz.qaiu.top预览地址服务,建议本地搭建或者云服务器自行搭建。
+解析次数过多IP会被部分网盘厂商限制,不推荐做公共解析。**
[![Java CI with Maven](https://github.com/qaiu/netdisk-fast-download/actions/workflows/maven.yml/badge.svg)](https://github.com/qaiu/netdisk-fast-download/actions/workflows/maven.yml)
[![jdk](https://img.shields.io/badge/jdk-%3E%3D17-blue)](https://www.oracle.com/cn/java/technologies/downloads/)
-[![vert.x](https://img.shields.io/badge/vert.x-4.5.0-blue)](https://vertx-china.github.io/)
+[![vert.x](https://img.shields.io/badge/vert.x-4.5.6-blue)](https://vertx-china.github.io/)
[![GitHub release (latest by date)](https://img.shields.io/github/v/release/qaiu/netdisk-fast-download)](https://github.com/qaiu/netdisk-fast-download/releases/tag/0.1.6-releases)
## 项目介绍
-网盘直链解析工具能把网盘分享下载链接转化为直链,已支持蓝奏云/蓝奏云优享/奶牛快传/移动云云空间/小飞机盘/亿方云/123云盘等,支持私密分享。
+网盘直链解析工具能把网盘分享下载链接转化为直链,已支持蓝奏云/蓝奏云优享/奶牛快传/移动云云空间/小飞机盘/亿方云/123云盘/Cloudreve等,支持加密分享。
*重要声明:本项目仅供学习参考;请不要将此项目用于任何商业用途,否则可能带来严重的后果。*
@@ -33,9 +33,6 @@
- [移动云空间 (ec)](https://www.ecpan.cn/web)
- [ ] 登录, 上传, 下载, 分享
- [X] 直链解析
-- [UC网盘 (uc)似乎已经失效,需要登录](https://fast.uc.cn/)
- - [ ] 登录, 上传, 下载, 分享
- - [X] 直链解析
- [小飞机网盘 (fj)](https://www.feijipan.com/)
- [ ] 登录, 上传, 下载, 分享
- [X] 直链解析
@@ -45,42 +42,57 @@
- [123云盘 (ye)](https://www.123pan.com/)
- [ ] 登录, 上传, 下载, 分享
- [X] 直链解析
-- [文叔叔 (ws) 开发中](https://www.wenshushu.cn/)
+- [文叔叔 (ws)](https://www.wenshushu.cn/)
- [ ] 登录, 上传, 下载, 分享
- [X] 直链解析
-- [QQ邮箱 (qq) 开发中](https://wx.mail.qq.com/)
+- [Cloudreve自建网盘 (ce)](https://github.com/cloudreve/Cloudreve)
+ - [ ] 登录, 上传, 下载, 分享
+ - [X] 直链解析
+- [QQ邮箱 (qq) 暂不可用-存在cookie问题](https://wx.mail.qq.com/)
- [ ] 登录, 上传, 下载, 分享
- [X] 直链解析(用户无法直接使用直链)
-- [夸克网盘 (qk) 开发中](https://pan.quark.cn/)
+- [夸克网盘 (qk) 寄了](https://pan.quark.cn/)
+- [UC网盘 (uc) 寄了](https://fast.uc.cn/)
**TODO:**
- 登录接口, 文件上传/下载/分享后端接口
- 短地址服务
- 前端界面(建设中...)
-**技术栈:**
-Jdk17+Vert.x4.4.1
-Core模块集成Vert.x实现类似spring的注解式路由API
-
-API接口
-
+### API接口说明
+your_host指的是您的域名或者IP,实际使用时替换为实际域名或者IP。
+解析方式分为两种类型直接跳转下载链接和获取下载链接(JSON),每一种都提供了两种接口形式parser和网盘标志/分享key拼接的短地址(标志短链),所有规则参考示例。
+- 通用接口: `/parser?url=分享链接`,加密分享需要加上参数pwd=密码;
+- 标志短链: `/网盘标识/分享key` 在分享Key后面加上@密码;
+- 直链JSON: `通用接口`和`标志短链`前加上`/json` 加密分享的密码规则同上;
+- 网盘标识参考上面网盘支持情况
+- 括号内是可选内容: 表示当带有分享密码时需要加上密码参数
+- 移动云空间,小飞机网盘的加密分享的密码可以忽略
+
+规则示例:
```
-网盘标识参考上面网盘支持情况, 括号内是可选内容: 表示当带有分享密码时需要加上密码参数
-parser接口可以直接解析分享链接: 加密分享需要加上参数pwd=密码;
-其他接口在分享Key后面加上@密码;
1. 解析并自动302跳转 :
- http(s)://your_host/parser?url=分享链接(&pwd=xxx)
- http(s)://your_host/网盘标识/分享key(@分享密码)
+ http://your_host/parser?url=分享链接(&pwd=xxx)
+ http://your_host/网盘标识/分享key(@分享密码)
2. 获取解析后的直链--JSON格式
- http(s)://your_host/json/parser?url=分享链接(&pwd=xxx)
- http(s)://your_host/json/网盘标识/分享key(@分享密码)
-3. 特别注意的地方:
- - 有些网盘的加密分享的密码可以忽略: 如移动云空间,小飞机网盘
- - 移动云空间(ec)使用parser?url= 解析时因为分享链接比较特殊(链接带有参数且含有#符号)所以要么对#进行转义%23要么直接去掉# 或者URL直接是主机名+'/'跟一个data参数
+ http://your_host/json/parser?url=分享链接(&pwd=xxx)
+ http://your_host/json/网盘标识/分享key(@分享密码)
+3. 需要特殊处理的网盘分享:
+ 1. 移动云空间(ec)使用parser?url= 解析时因为分享链接比较特殊(链接带有参数且含有#符号)所以要么对#进行转义%23要么直接去掉# 或者URL直接是主机名+'/'跟一个data参数
比如 http://your_host/parser?url=https://www.ecpan.cn/web//yunpanProxy?path=%2F%23%2Fdrive%2Foutside&data=81027a5c99af5b11ca004966c945cce6W9Bf2&isShare=1
http://your_host/parser?url=https://www.ecpan.cn/web/%23/yunpanProxy?path=%2F%23%2Fdrive%2Foutside&data=81027a5c99af5b11ca004966c945cce6W9Bf2&isShare=1
http://your_host/parser?url=https://www.ecpan.cn/&data=81027a5c99af5b11ca004966c945cce6W9Bf2&isShare=1
+
+ 2. Cloudreve自建网盘解析规则:
+ 1. 标志短链: 根据网盘使用https和http选择 http://your_host/ce/https_网盘域名_s_wDz5TK 或 http://your_host/ce/http_网盘域名_s_wDz5TK
+ 网盘域名指的是Cloudreve搭建网盘的主域名比如pan.huang1111.cn,如果存在子路径需要将/替换为_,是否存在子路径看分享链接格式是否是://网盘域名/子路径/s/xxx,一般不存在子路径:网盘域名/s/xxx,
+ 比如: http://127.0.0.1:6400/ce/https_pan.huang1111.cn_s_wDz5TK
+ 2. parser接口 -> http://your_host/parser?url=分享链接(&pwd=xxx)
+ 比如: http://127.0.0.1:6400/parser?url=https://pan.huang1111.cn/s/wDz5TK
+
+
+
```
json返回数据格式示例:
```json
@@ -205,6 +217,12 @@ bash service-install.sh
- 直链缓存
- 日志优化
+
+**技术栈:**
+Jdk17+Vert.x4.4.1
+Core模块集成Vert.x实现类似spring的注解式路由API
+
+
## Star History
[![Star History Chart](https://api.star-history.com/svg?repos=qaiu/netdisk-fast-download&type=Date)](https://star-history.com/#qaiu/netdisk-fast-download&Date)
@@ -212,7 +230,6 @@ bash service-install.sh
## 支持该项目
本项目长期维护如果觉得有帮助, 可以请作者喝杯咖啡, 感谢支持
-支付宝发大额红包了...就这几天, 不要错过哦
![image](https://github.com/qaiu/netdisk-fast-download/assets/29825328/54276aee-cc3f-4ebd-8973-2e15f6295819)
[手机端支付宝打赏跳转链接](https://qr.alipay.com/fkx01882dnoxxtjenhlxt53)
diff --git a/core-database/pom.xml b/core-database/pom.xml
index 09cf41f..281d980 100644
--- a/core-database/pom.xml
+++ b/core-database/pom.xml
@@ -16,7 +16,7 @@
UTF-8
2.0.5
3.12.0
- 4.5.0
+ 4.5.6
diff --git a/parser/src/main/java/cn/qaiu/parser/IPanTool.java b/parser/src/main/java/cn/qaiu/parser/IPanTool.java
index 283e17f..d01a57e 100644
--- a/parser/src/main/java/cn/qaiu/parser/IPanTool.java
+++ b/parser/src/main/java/cn/qaiu/parser/IPanTool.java
@@ -20,6 +20,7 @@ static IPanTool typeMatching(String type, String key, String pwd) {
case "ws" -> new WsTool(key, pwd);
case "qq" -> new QQTool(key, pwd);
case "iz" -> new IzTool(key, pwd);
+ case "ce" -> new CeTool(key, pwd);
default -> {
throw new UnsupportedOperationException("未知分享类型");
}
@@ -50,6 +51,9 @@ static IPanTool shareURLPrefixMatching(String url, String pwd) {
return new WsTool(url, pwd);
} else if (url.contains(QQTool.SHARE_URL_PREFIX)) {
return new QQTool(url, pwd);
+ } else if (url.contains("/s/")) {
+ // Cloudreve 网盘通用解析
+ return new CeTool(url, pwd);
}
throw new UnsupportedOperationException("未知分享类型");
diff --git a/parser/src/main/java/cn/qaiu/parser/PanBase.java b/parser/src/main/java/cn/qaiu/parser/PanBase.java
index 5102fd5..8d8faa1 100644
--- a/parser/src/main/java/cn/qaiu/parser/PanBase.java
+++ b/parser/src/main/java/cn/qaiu/parser/PanBase.java
@@ -6,6 +6,7 @@
import io.vertx.core.Promise;
import io.vertx.ext.web.client.WebClient;
import io.vertx.ext.web.client.WebClientOptions;
+import io.vertx.ext.web.client.WebClientSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -23,6 +24,11 @@ public abstract class PanBase {
*/
protected WebClient client = WebClient.create(WebClientVertxInit.get());
+ /**
+ * Http client session (会话管理, 带cookie请求)
+ */
+ protected WebClientSession clientSession = WebClientSession.create(client);
+
/**
* Http client 不自动跳转
*/
diff --git a/parser/src/main/java/cn/qaiu/parser/impl/CeTool.java b/parser/src/main/java/cn/qaiu/parser/impl/CeTool.java
new file mode 100644
index 0000000..c147cc8
--- /dev/null
+++ b/parser/src/main/java/cn/qaiu/parser/impl/CeTool.java
@@ -0,0 +1,73 @@
+package cn.qaiu.parser.impl;
+
+import cn.qaiu.parser.IPanTool;
+import cn.qaiu.parser.PanBase;
+import io.vertx.core.Future;
+import io.vertx.core.buffer.Buffer;
+import io.vertx.core.json.JsonObject;
+import io.vertx.ext.web.client.HttpRequest;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+
+/**
+ * Cloudreve网盘解析
+ * 暮希云盘
+ * huang1111
+ */
+public class CeTool extends PanBase implements IPanTool {
+
+ private static final String DOWNLOAD_API_PATH = "/api/v3/share/download/";
+
+ // api/v3/share/info/g31PcQ?password=qaiu
+ private static final String SHARE_API_PATH = "/api/v3/share/info/";
+
+ public CeTool(String key, String pwd) {
+ super(key, pwd);
+ }
+
+ public Future parse() {
+ // https://pan.huang1111.cn/s/wDz5TK
+ // https://pan.huang1111.cn/s/y12bI6 -> https://pan.huang1111
+ // .cn/api/v3/share/download/y12bI6?path=undefined%2Fundefined;
+ // 类型解析 -> /ce/https_pan.huang1111.cn_s_wDz5TK
+ // parser接口 -> /parser?url=https://pan.huang1111.cn/s/wDz5TK
+ try {
+ if (key.startsWith("https_") || key.startsWith("http_")) {
+ key = key.replace("https_", "https://")
+ .replace("http_", "http://")
+ .replace("_", "/");
+ }
+ // 处理URL
+ URL url = new URL(key);
+ String path = url.getPath();
+ String shareKey = path.substring(3);
+ String downloadApiUrl = url.getProtocol() + "://" + url.getHost() + DOWNLOAD_API_PATH + shareKey + "?path" +
+ "=undefined/undefined;";
+ String shareApiUrl = url.getProtocol() + "://" + url.getHost() + SHARE_API_PATH + shareKey;
+
+ // 设置cookie
+ HttpRequest httpRequest = clientSession.getAbs(shareApiUrl);
+ if (pwd != null) {
+ httpRequest.addQueryParam("password", pwd);
+ }
+ // 获取下载链接
+ httpRequest.send().onSuccess(res -> getDownURL(downloadApiUrl)).onFailure(handleFail(shareApiUrl));
+ } catch (MalformedURLException e) {
+ fail(e, "URL解析错误");
+ }
+ return promise.future();
+ }
+
+ private void getDownURL(String apiUrl) {
+ clientSession.putAbs(apiUrl).send().onSuccess(res -> {
+ JsonObject jsonObject = res.bodyAsJsonObject();
+ System.out.println(jsonObject.encodePrettily());
+ if (jsonObject.containsKey("code") && jsonObject.getInteger("code") == 0) {
+ promise.complete(jsonObject.getString("data"));
+ } else {
+ fail("JSON解析失败: {}", jsonObject.encodePrettily());
+ }
+ }).onFailure(handleFail(apiUrl));
+ }
+}
diff --git a/parser/src/main/java/cn/qaiu/parser/impl/FjTool.java b/parser/src/main/java/cn/qaiu/parser/impl/FjTool.java
index 634a333..97c15d2 100644
--- a/parser/src/main/java/cn/qaiu/parser/impl/FjTool.java
+++ b/parser/src/main/java/cn/qaiu/parser/impl/FjTool.java
@@ -20,7 +20,8 @@
public class FjTool extends PanBase implements IPanTool {
public static final String SHARE_URL_PREFIX = "https://www.feijix.com/s/";
- public static final String SHARE_URL_PREFIX2 = "https://share.feijipan.com/s/";
+ public static final String REFERER_URL = "https://share.feijipan.com/";
+ public static final String SHARE_URL_PREFIX2 = REFERER_URL + "s/";
private static final String API_URL_PREFIX = "https://api.feijipan.com/ws/";
private static final String FIRST_REQUEST_URL = API_URL_PREFIX + "recommend/list?devType=6&devModel=Chrome&extra" +
@@ -57,15 +58,21 @@ public Future parse() {
return;
}
// 文件Id
- String fileId = resJson.getJsonArray("list").getJsonObject(0).getString("fileIds");
+ JsonObject fileInfo = resJson.getJsonArray("list").getJsonObject(0);
+ String fileId = fileInfo.getString("fileIds");
+ String userId = fileInfo.getString("userId");
// 其他参数
long nowTs = System.currentTimeMillis();
String tsEncode = AESUtils.encrypt2Hex(Long.toString(nowTs));
String uuid = UUID.randomUUID().toString();
String fidEncode = AESUtils.encrypt2Hex(fileId + "|");
String auth = AESUtils.encrypt2Hex(fileId + "|" + nowTs);
+
+ MultiMap headers0 = MultiMap.caseInsensitiveMultiMap();
+ headers0.set("referer", REFERER_URL);
// 第二次请求
client.getAbs(UriTemplate.of(SECOND_REQUEST_URL))
+ .putHeaders(headers0)
.setTemplateParam("fidEncode", fidEncode)
.setTemplateParam("uuid", uuid)
.setTemplateParam("ts", tsEncode)
diff --git a/parser/src/main/java/cn/qaiu/parser/impl/IzTool.java b/parser/src/main/java/cn/qaiu/parser/impl/IzTool.java
index 0980e57..f101736 100644
--- a/parser/src/main/java/cn/qaiu/parser/impl/IzTool.java
+++ b/parser/src/main/java/cn/qaiu/parser/impl/IzTool.java
@@ -13,9 +13,8 @@
import java.util.UUID;
/**
- * 小飞机网盘
+ * 蓝奏云优享
*
- * @version V016_230609
*/
public class IzTool extends PanBase implements IPanTool {
@@ -51,12 +50,15 @@ public Future parse() {
return;
}
// 文件Id
- String fileId = resJson.getJsonArray("list").getJsonObject(0).getString("fileIds");
+ JsonObject fileInfo = resJson.getJsonArray("list").getJsonObject(0);
+ String fileId = fileInfo.getString("fileIds");
+ String userId = fileInfo.getString("userId");
// 其他参数
long nowTs = System.currentTimeMillis();
String tsEncode = AESUtils.encrypt2HexIz(Long.toString(nowTs));
String uuid = UUID.randomUUID().toString();
- String fidEncode = AESUtils.encrypt2HexIz(fileId + "|");
+// String fidEncode = AESUtils.encrypt2HexIz(fileId + "|");
+ String fidEncode = AESUtils.encrypt2HexIz(fileId + "|" + userId);
String auth = AESUtils.encrypt2HexIz(fileId + "|" + nowTs);
// 第二次请求
client.getAbs(UriTemplate.of(SECOND_REQUEST_URL))
diff --git a/parser/src/main/java/cn/qaiu/util/CommonUtils.java b/parser/src/main/java/cn/qaiu/util/CommonUtils.java
index 4879b18..1baf994 100644
--- a/parser/src/main/java/cn/qaiu/util/CommonUtils.java
+++ b/parser/src/main/java/cn/qaiu/util/CommonUtils.java
@@ -7,6 +7,12 @@
public class CommonUtils {
+ /**
+ * 获取分享key 比如: https://www.ilanzou.com/s/xxx -> xxx
+ * @param urlPrefix 不包含key的URL前缀
+ * @param url 完整URL
+ * @return 分享key
+ */
public static String adaptShortPaths(String urlPrefix, String url) {
if (url.endsWith(".html")) {
url = url.substring(0, url.length() - 5);
diff --git a/pom.xml b/pom.xml
index ec6a4ce..190129d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,7 +25,7 @@
${project.basedir}/web-service/target/package
2.0.5
- 4.5.0
+ 4.5.6
0.10.2
1.18.12
2.0.5
diff --git a/web-service/src/main/java/cn/qaiu/lz/web/http/ServerApi.java b/web-service/src/main/java/cn/qaiu/lz/web/http/ServerApi.java
index 6643ac0..103a5ce 100644
--- a/web-service/src/main/java/cn/qaiu/lz/web/http/ServerApi.java
+++ b/web-service/src/main/java/cn/qaiu/lz/web/http/ServerApi.java
@@ -37,9 +37,9 @@ public Future parse(HttpServerResponse response, HttpServerRequest request
"&code=" + request.getParam("code") + "&k=" + request.getParam("k") +
"&fweb=" + request.getParam("fweb") + "&cl=" + request.getParam("cl");
}
- IPanTool.shareURLPrefixMatching(url, pwd).parse().onSuccess(resUrl -> {
- ResponseUtil.redirect(response, resUrl, promise);
- }).onFailure(t -> promise.fail(t.fillInStackTrace()));
+ IPanTool.shareURLPrefixMatching(url, pwd).parse()
+ .onSuccess(resUrl -> ResponseUtil.redirect(response, resUrl, promise))
+ .onFailure(t -> promise.fail(t.fillInStackTrace()));
return promise.future();
}
@@ -52,6 +52,16 @@ public Future parseJson(HttpServerRequest request, String url, String pw
return IPanTool.shareURLPrefixMatching(url, pwd).parse();
}
+ @RouteMapping(value = "/json/:type/:key", method = RouteMethod.GET, order = 2)
+ public Future parseKeyJson(String type, String key) {
+ String code = "";
+ if (key.contains("@")) {
+ String[] keys = key.split("@");
+ key = keys[0];
+ code = keys[1];
+ }
+ return IPanTool.typeMatching(type, key, code).parse();
+ }
@RouteMapping(value = "/:type/:key", method = RouteMethod.GET, order = 1)
public Future parseKey(HttpServerResponse response, String type, String key) {
@@ -69,14 +79,4 @@ public Future parseKey(HttpServerResponse response, String type, String ke
return promise.future();
}
- @RouteMapping(value = "/json/:type/:key", method = RouteMethod.GET, order = 2)
- public Future parseKeyJson(String type, String key) {
- String code = "";
- if (key.contains("@")) {
- String[] keys = key.split("@");
- key = keys[0];
- code = keys[1];
- }
- return IPanTool.typeMatching(type, key, code).parse();
- }
}
diff --git a/web-service/src/main/resources/http-tools/pan-ce.http b/web-service/src/main/resources/http-tools/pan-ce.http
new file mode 100644
index 0000000..c0da41d
--- /dev/null
+++ b/web-service/src/main/resources/http-tools/pan-ce.http
@@ -0,0 +1,19 @@
+###
+https://5jmpj3-my.sharepoint.com/personal/pan2_xiaomuxi_cn/_layouts/15/download.aspx?UniqueId=cf123281-44cd-4745-b3c3-49a18934044d&Translate=false&tempauth=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiIwMDAwMDAwMy0wMDAwLTBmZjEtY2UwMC0wMDAwMDAwMDAwMDAvNWptcGozLW15LnNoYXJlcG9pbnQuY29tQGY4MTk4OWJiLWViNDAtNGZhYi05NzA5LTQ0ODFhMDM0ZjNiNCIsImlzcyI6IjAwMDAwMDAzLTAwMDAtMGZmMS1jZTAwLTAwMDAwMDAwMDAwMCIsIm5iZiI6IjE3MDY0MzIyNDciLCJleHAiOiIxNzA2NDM1ODQ3IiwiZW5kcG9pbnR1cmwiOiJNMWVwZ3VjamFKU081MXB4WW5IKzZ6bzZBQlVyc0N1T3MwOVRGbnZJVlRvPSIsImVuZHBvaW50dXJsTGVuZ3RoIjoiMTQ2IiwiaXNsb29wYmFjayI6IlRydWUiLCJjaWQiOiJKM0JzNzloTy8wYW1GZGh1WUFjTjR3PT0iLCJ2ZXIiOiJoYXNoZWRwcm9vZnRva2VuIiwic2l0ZWlkIjoiWkRkaVptRTBNRFl0TXpWall5MDBZamMxTFRsbU16TXRNRGc0TlRCbVkyRmlPVE0yIiwiYXBwX2Rpc3BsYXluYW1lIjoiMuWPt-WtmOWCqOehrOebmCIsImdpdmVuX25hbWUiOiIy5Y-3IiwiZmFtaWx5X25hbWUiOiLnvZHnm5giLCJhcHBpZCI6ImJkZDRjOTA5LTA0ZjItNDU4NS04MjZlLTY0MDQzNDljN2JiZiIsInRpZCI6ImY4MTk4OWJiLWViNDAtNGZhYi05NzA5LTQ0ODFhMDM0ZjNiNCIsInVwbiI6InBhbjJAeGlhb211eGkuY24iLCJwdWlkIjoiMTAwMzIwMDJBRTUyNDMwRCIsImNhY2hla2V5IjoiMGguZnxtZW1iZXJzaGlwfDEwMDMyMDAyYWU1MjQzMGRAbGl2ZS5jb20iLCJzY3AiOiJhbGxmaWxlcy53cml0ZSIsInR0IjoiMiIsImlwYWRkciI6IjIwLjE5MC4xNDQuMTcxIn0.WY--gv_Ac1pwhj3XTOdIddaj643CHoOqBeFFpdSa4-w&ApiVersion=2.0
+
+###
+#@no-redirect
+PUT https://pan.xiaomuxi.cn/api/v3/share/download/Ag4Uy
+
+###
+PUT https://pan.huang1111.cn/api/v3/share/download/m1Mlt1
+
+
+###
+https://pan.huang1111.cn/api/v3/share/info/g31PcQ?password=qaiu
+
+###
+https://pan.huang1111.cn/api/v3/share/info/m1Mlt1?password=
+
+###
+PUT https://pan.huang1111.cn/api/v3/share/download/g31PcQ?path=undefined%2Fundefined
diff --git a/web-service/src/main/resources/http-tools/pan-fj.http b/web-service/src/main/resources/http-tools/pan-fj.http
index 0d99411..753cb9f 100644
--- a/web-service/src/main/resources/http-tools/pan-fj.http
+++ b/web-service/src/main/resources/http-tools/pan-fj.http
@@ -11,7 +11,7 @@
# offset: 1
# limit: 60
# @no-cookie-jar
-POST https://api.feijipan.com/ws/recommend/list?devType=6&devModel=Chrome&extra=2&shareId=193186&type=0&offset=1&limit=60
+POST https://api.feijipan.com/ws/recommend/list?devType=6&devModel=Chrome&extra=2&shareId=146731&type=0&offset=1&limit=60
# 654488C79332E7279F9A38367BD72D3B
# 4703B103BD6871F83441233393695EF3
@@ -37,4 +37,25 @@ https://web.feejii.com/ee433d6e5102ad79af58a2aa0e6cf758/1686279412/files/2023/05
+### 7jy0zlv
+https://api.feijipan.com/ws/recommend/list?devType=6&devModel=Chrome&extra=2&shareId=146731
+
###
+# @no-redirect
+https://api.feijipan.com/ws/file/redirect?downloadId=4703B103BD6871F83441233393695EF3&enable=1&devType=6&uuid=ZIdOV27C5dHvd3aUUXoiP×tamp=4FDB14DD6441E581458CD2750EAF188A&auth=42965E158C74872285C5A3F545118CAAF417B148DBEEBF90B0969E08950830E5
+Referer: https://share.feijipan.com/
+
+###
+# @no-redirect
+https://api.feijipan.com/ws/file/redirect?uuid=6591af86-5464-4c8d-a100-44f6cb859e9b&devType=6&devCode=6591af86-5464-4c8d-a100-44f6cb859e9b&devModel=chrome&devVersion=122&appVersion=×tamp=77d605733113552383e2626fe134cfc3&appToken=9a253a6202bc1095030a8e8d76fe7f38-1&enable=1&downloadId=79d91c3dc8b578d4c69b04b8251f04e029de3c08240dc9ceab77f7f656cbba23&auth=ccfd80a4787abfb1b86970902e3156ff155ae85ef80ebd661d3bc33de20659a1
+Referer: https://share.feijipan.com/
+
+
+###
+POST https://api.feijipan.com/ws/login?uuid=6591af86-5464-4c8d-a100-44f6cb859e9b&devType=6&devCode=6591af86-5464-4c8d-a100-44f6cb859e9b&devModel=chrome&devVersion=122&appVersion=×tamp=2e6932b46c0bc20d9cbcdb6c5f0e9bee&appToken=&extra=2
+Accept:application/json, text/plain, */*
+Content-Type:application/json
+Origin:https://www.feijipan.com
+Referer:https://www.feijipan.com/
+
+{"loginName":"15687886400","loginPwd":"4458225ff"}
diff --git a/web-service/src/main/resources/http-tools/pan-iz.http b/web-service/src/main/resources/http-tools/pan-iz.http
index 34a4af8..14a2dfe 100644
--- a/web-service/src/main/resources/http-tools/pan-iz.http
+++ b/web-service/src/main/resources/http-tools/pan-iz.http
@@ -16,3 +16,12 @@ https://api.ilanzou.com/unproved/file/redirect?downloadId=DC3D647979EE315935D168
#@no-redirect
https://dl.lanosso.com/disk/2024/01/28/9/14733029/1706414002788330.gz?attname=testgles.c&sign=9ef76e9a270dbe5e9401c8f4c2ae0d68&t=65b5f826
+###
+#@no-redirect
+https://api.ilanzou.com/unproved/file/redirect?uuid=0&devType=6×tamp=4532409118d790651b6b50823bf6a555&downloadId=d16fcb8f3e00da0eb956db9a0541f97277437b80f7fe61438b7fba55856e050f&auth=a4c567681b3ba556b5d70cff93e909774a6695647300260c5f0abfe3c188f1a0
+
+
+###
+https://www.ilanzou.com/s/zHkna1S
+
+### fileId: 145042258
diff --git a/web-service/src/main/resources/http-tools/pan-jg.http b/web-service/src/main/resources/http-tools/pan-jg.http
new file mode 100644
index 0000000..89ed2f7
--- /dev/null
+++ b/web-service/src/main/resources/http-tools/pan-jg.http
@@ -0,0 +1,17 @@
+
+
+### 坚果云直链
+GET https://www.jianguoyun.com/c/dl-file/bin.zip?dt=s80etr&sd=ekfj3&kv=NzM2MjI2NDAwQHFxLmNvbQ&vr=1&ud=Ai4TqB3nzfSF6iR0zapyvKGPYKP_cUqKIhtziVb1dRA
+
+
+###
+
+https://www.jianguoyun.com/d/ajax/dlink?sndId=175599f&sndMagic=2d8381e894e47b39&path=%2Fbin.zip&forwin=true&_=1706507895357
+Cookie:umn=736226400%40qq.com; ta=G0RPJtiW0%2FEqRmv4amZpcXTLHhuOxhQCSTJX3IU5HVo%3D;
+
+###
+https://www.jianguoyun.com/d/ajax/fileops/pubFileLink?k=DSBBfXkQn7PVCxjz24cFIAA
+Cookie:umn=736226400%40qq.com; ta=G0RPJtiW0%2FEqRmv4amZpcXTLHhuOxhQCSTJX3IU5HVo%3D;
+
+###
+https://www.jianguoyun.com/d/signup?next=%2Fp%2FDSBBfXkQn7PVCxjz24cFIAA&msg=%E7%99%BB%E5%BD%95%E5%90%8E%E7%AB%8B%E5%8D%B3%E4%B8%8B%E8%BD%BD%E6%96%87%E4%BB%B6
diff --git a/web-service/src/main/resources/http-tools/test.http b/web-service/src/main/resources/http-tools/test.http
index 015c5eb..4f66dc8 100644
--- a/web-service/src/main/resources/http-tools/test.http
+++ b/web-service/src/main/resources/http-tools/test.http
@@ -25,6 +25,10 @@ GET http://127.0.0.1:6400/json/iz/lGFndCM
###
GET http://127.0.0.1:6400/json/parser?url=https://www.ilanzou.com/s/lGFndCM
+###
+GET http://127.0.0.1:6400/json/parser?url=https://www.ilanzou.com/s/6XwnC4X
+###
+GET http://127.0.0.1:6400/json/parser?url=https://www.ilanzou.com/s/zHkna1S
### 奶牛
GET http://127.0.0.1:6400/json/cow/9a644fe3e3a748
@@ -71,8 +75,13 @@ GET http://127.0.0.1:6400/parser?url=https://fast.uc.cn/s/33197dd53ace4
# @no-redirect
GET http://127.0.0.1:6400/parser?url=https://share.feijipan.com/s/nMtCOXL
+### 小飞机盘 https://share.feijipan.com/s/laUshYGk
+# @no-redirect
+GET http://127.0.0.1:6400/parser?url=https://share.feijipan.com/s/laUshYGk
### 小飞机盘
GET http://127.0.0.1:6400/json/fj/tIfhRqH
+### 小飞机盘 https://share.feijipan.com/s/7jy0zlv
+GET http://127.0.0.1:6400/json/fj/7jy0zlv
### 小飞机盘
# @no-redirect
@@ -133,6 +142,11 @@ GET http://127.0.0.1:6400/le/2RkKbLP9BrppS9b43@ex2b
### 联想乐云
GET http://127.0.0.1:6400/json/le/2RkKbLP9BrppS9b43@ex2b
+### Cloudreve
+GET http://127.0.0.1:6400/json/ce/https_pan.huang1111.cn_s_wDz5TK
+
+### Cloudreve
+GET http://127.0.0.1:6400/json/parser?url=https://pan.huang1111.cn/s/g31PcQ&pwd=qaiu
###
GET http://127.0.0.1:6400/v2/statisticsInfo
diff --git a/web-service/src/main/resources/logback.xml b/web-service/src/main/resources/logback.xml
index 4b05965..2e7a0e8 100644
--- a/web-service/src/main/resources/logback.xml
+++ b/web-service/src/main/resources/logback.xml
@@ -46,7 +46,7 @@
- true
+ false
${CUSTOMER_PATTERN2}