mirror of
https://github.com/qaiu/netdisk-fast-download.git
synced 2025-12-17 21:03:03 +00:00
Compare commits
20 Commits
dev-0.1.8
...
v0.1.8.tes
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ade0d34d91 | ||
|
|
56d082eb0b | ||
|
|
795c4529ba | ||
|
|
0f5cfe22ea | ||
|
|
925ad2c3a5 | ||
|
|
f3e96907fe | ||
|
|
75a1e58a7d | ||
|
|
379e889f71 | ||
|
|
40c06f397b | ||
|
|
9e9302436e | ||
|
|
6d816d4193 | ||
|
|
438eda9c08 | ||
|
|
ace39e4633 | ||
|
|
7712391f29 | ||
|
|
65f08dcb02 | ||
|
|
1d332aa6f4 | ||
|
|
ba81641517 | ||
|
|
fb30bdb879 | ||
|
|
fc451d3b41 | ||
|
|
ffee1f3462 |
13
.github/workflows/maven.yml
vendored
13
.github/workflows/maven.yml
vendored
@@ -15,6 +15,8 @@ permissions:
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
|
tags:
|
||||||
|
- '*'
|
||||||
branches: [ "main" ]
|
branches: [ "main" ]
|
||||||
paths-ignore:
|
paths-ignore:
|
||||||
- 'bin/**'
|
- 'bin/**'
|
||||||
@@ -76,6 +78,13 @@ jobs:
|
|||||||
username: ${{ github.actor }}
|
username: ${{ github.actor }}
|
||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
|
||||||
|
- name: Extract git tag
|
||||||
|
id: tag
|
||||||
|
run: |
|
||||||
|
GIT_TAG=$(git tag --points-at HEAD | head -n 1)
|
||||||
|
echo "tag=$GIT_TAG" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
- name: Build and push Docker image
|
- name: Build and push Docker image
|
||||||
if: github.event_name != 'pull_request'
|
if: github.event_name != 'pull_request'
|
||||||
uses: docker/build-push-action@v5
|
uses: docker/build-push-action@v5
|
||||||
@@ -83,5 +92,5 @@ jobs:
|
|||||||
context: .
|
context: .
|
||||||
push: true
|
push: true
|
||||||
tags: |
|
tags: |
|
||||||
ghcr.io/${{ github.repository }}:${{ github.sha }}
|
ghcr.io/qaiu/netdisk-fast-download:${{ steps.tag.outputs.tag }}
|
||||||
ghcr.io/${{ github.repository }}:main
|
ghcr.io/qaiu/netdisk-fast-download:latest
|
||||||
|
|||||||
52
README.md
52
README.md
@@ -1,5 +1,6 @@
|
|||||||
|
<p align="center">
|
||||||
<div align=center><img src="https://bd2.qaiu.cn/blog/lanzou111.403f7881.png" height="160" width="160"></div>
|
<img src="https://github.com/user-attachments/assets/87401aae-b0b6-4ffb-bbeb-44756404d26f" alt="项目预览图" />
|
||||||
|
</p>
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://github.com/qaiu/netdisk-fast-download/actions/workflows/maven.yml"><img src="https://github.com/qaiu/netdisk-fast-download/actions/workflows/maven.yml/badge.svg?style=flat"></a>
|
<a href="https://github.com/qaiu/netdisk-fast-download/actions/workflows/maven.yml"><img src="https://github.com/qaiu/netdisk-fast-download/actions/workflows/maven.yml/badge.svg?style=flat"></a>
|
||||||
@@ -10,12 +11,15 @@
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# netdisk-fast-download 网盘分享链接云解析服务
|
# netdisk-fast-download 网盘分享链接云解析服务
|
||||||
|
|
||||||
netdisk-fast-download网盘直链云解析(nfd云解析)能把网盘分享下载链接转化为直链,支持多款云盘,已支持蓝奏云/蓝奏云优享/奶牛快传/移动云云空间/小飞机盘/亿方云/123云盘/Cloudreve等,支持加密分享。
|
netdisk-fast-download网盘直链云解析(nfd云解析)能把网盘分享下载链接转化为直链,支持多款云盘,已支持蓝奏云/蓝奏云优享/奶牛快传/移动云云空间/小飞机盘/亿方云/123云盘/Cloudreve等,支持加密分享,以及部分网盘文件夹分享。
|
||||||
|
|
||||||
|
[预览地址1](https://lz.qaiu.top)
|
||||||
|
[预览地址2](http://www.722shop.top:6401)
|
||||||
|
|
||||||
预览地址 https://lz.qaiu.top
|
|
||||||
预览地址2(可以解析onedrive) http://8.209.249.88:6402
|
|
||||||
main分支依赖JDK17, 提供了JDK11分支[main-jdk11](https://github.com/qaiu/netdisk-fast-download/tree/main-jdk11)
|
main分支依赖JDK17, 提供了JDK11分支[main-jdk11](https://github.com/qaiu/netdisk-fast-download/tree/main-jdk11)
|
||||||
**0.1.8及以上版本json接口格式有调整 参考json返回数据格式示例**
|
**0.1.8及以上版本json接口格式有调整 参考json返回数据格式示例**
|
||||||
**小飞机解析有IP限制,多数云服务商的大陆IP会被拦截(可以自行配置代理),和本程序无关**
|
**小飞机解析有IP限制,多数云服务商的大陆IP会被拦截(可以自行配置代理),和本程序无关**
|
||||||
@@ -81,6 +85,8 @@ API规则:
|
|||||||
2. 获取解析后的直链--JSON格式
|
2. 获取解析后的直链--JSON格式
|
||||||
http://your_host/json/parser?url=分享链接&pwd=xxx
|
http://your_host/json/parser?url=分享链接&pwd=xxx
|
||||||
http://your_host/json/网盘标识/分享key@分享密码
|
http://your_host/json/网盘标识/分享key@分享密码
|
||||||
|
3. 文件夹解析v0.1.8fixed3新增
|
||||||
|
http://your_host/json/getFileList?url=分享链接&pwd=xxx
|
||||||
```
|
```
|
||||||
json返回数据格式示例:
|
json返回数据格式示例:
|
||||||
`shareKey`: 全局分享key
|
`shareKey`: 全局分享key
|
||||||
@@ -132,7 +138,34 @@ json返回数据格式示例:
|
|||||||
"timestamp": 1736489219402
|
"timestamp": 1736489219402
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
3. 解析次数统计接口 /v2/statisticsInfo
|
3. 文件夹解析(仅支持蓝奏云/蓝奏优享/小飞机网盘)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"code": 200,
|
||||||
|
"msg": "success",
|
||||||
|
"success": true,
|
||||||
|
"data": [
|
||||||
|
{
|
||||||
|
"fileName": "xxx",
|
||||||
|
"fileId": "xxx",
|
||||||
|
"fileIcon": null,
|
||||||
|
"size": 999,
|
||||||
|
"sizeStr": "999 M",
|
||||||
|
"fileType": "apk",
|
||||||
|
"filePath": null,
|
||||||
|
"createTime": "17 小时前",
|
||||||
|
"updateTime": null,
|
||||||
|
"createBy": null,
|
||||||
|
"description": null,
|
||||||
|
"downloadCount": null,
|
||||||
|
"panType": "lz",
|
||||||
|
"parserUrl": "下载链接",
|
||||||
|
"extParameters": null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
4. 解析次数统计接口 /v2/statisticsInfo
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"code": 200,
|
"code": 200,
|
||||||
@@ -351,10 +384,15 @@ Core模块集成Vert.x实现类似spring的注解式路由API
|
|||||||
### 关于专属版
|
### 关于专属版
|
||||||
99元, 提供对小飞机,蓝奏优享大文件解析的支持, 提供天翼云盘,移动云盘,联调云盘的解析支持
|
99元, 提供对小飞机,蓝奏优享大文件解析的支持, 提供天翼云盘,移动云盘,联调云盘的解析支持
|
||||||
199元, 包含部署服务和首页定制, 需提供宝塔环境
|
199元, 包含部署服务和首页定制, 需提供宝塔环境
|
||||||
可以提供功能定制开发, 加v价格详谈: qaiu-cn
|
可以提供功能定制开发, 加v价格详谈:
|
||||||
|
<p>wechat1: qaiu-cn</p>
|
||||||
|
<p>wechat2: imcoding_</p>
|
||||||
|
|
||||||
|
<!--
|
||||||

|

|
||||||
|
|
||||||
[手机端支付宝打赏跳转链接](https://qr.alipay.com/fkx01882dnoxxtjenhlxt53)
|
[手机端支付宝打赏跳转链接](https://qr.alipay.com/fkx01882dnoxxtjenhlxt53)
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
<artifactId>parser</artifactId>
|
<artifactId>parser</artifactId>
|
||||||
|
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
<name>${project.groupId}:${project.artifactId}</name>
|
<name>cn.qaiu:parser</name>
|
||||||
<description>NFD parser</description>
|
<description>NFD parser</description>
|
||||||
<url>https://qaiu.top</url>
|
<url>https://qaiu.top</url>
|
||||||
|
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ public enum PanDomainTemplate {
|
|||||||
WsTool.class),
|
WsTool.class),
|
||||||
// https://www.123pan.com/s/
|
// https://www.123pan.com/s/
|
||||||
YE("123网盘",
|
YE("123网盘",
|
||||||
compile("https://www\\.(123pan|123865|123684)\\.com/s/(?<KEY>.+)(.html)?"),
|
compile("https://www\\.(123pan\\.com|123865\\.com|123684\\.com|123912\\.com|123pan\\.cn)/s/(?<KEY>.+)(.html)?"),
|
||||||
"https://www.123pan.com/s/{shareKey}",
|
"https://www.123pan.com/s/{shareKey}",
|
||||||
YeTool.class),
|
YeTool.class),
|
||||||
// https://www.ecpan.cn/web/#/yunpanProxy?path=%2F%23%2Fdrive%2Foutside&data={code}&isShare=1
|
// https://www.ecpan.cn/web/#/yunpanProxy?path=%2F%23%2Fdrive%2Foutside&data={code}&isShare=1
|
||||||
|
|||||||
@@ -15,15 +15,9 @@ import io.vertx.core.json.JsonObject;
|
|||||||
import io.vertx.ext.web.client.HttpRequest;
|
import io.vertx.ext.web.client.HttpRequest;
|
||||||
import io.vertx.uritemplate.UriTemplate;
|
import io.vertx.uritemplate.UriTemplate;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
|
||||||
import java.io.ByteArrayInputStream;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStreamReader;
|
|
||||||
import java.nio.charset.StandardCharsets;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Base64;
|
import java.util.Base64;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.zip.GZIPInputStream;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 小飞机网盘
|
* 小飞机网盘
|
||||||
@@ -108,33 +102,7 @@ public class FjTool extends PanBase {
|
|||||||
.setTemplateParam("uuid", uuid)
|
.setTemplateParam("uuid", uuid)
|
||||||
.setTemplateParam("ts", tsEncode)
|
.setTemplateParam("ts", tsEncode)
|
||||||
.send().onSuccess(res -> {
|
.send().onSuccess(res -> {
|
||||||
// 处理GZ压缩
|
JsonObject resJson = asJson(res);
|
||||||
// 使用GZIPInputStream来解压数据
|
|
||||||
String decompressedString;
|
|
||||||
try (ByteArrayInputStream bais = new ByteArrayInputStream(res.body().getBytes());
|
|
||||||
GZIPInputStream gzis = new GZIPInputStream(bais);
|
|
||||||
BufferedReader reader = new BufferedReader(new InputStreamReader(gzis, StandardCharsets.UTF_8))) {
|
|
||||||
|
|
||||||
// 用于存储解压后的字符串
|
|
||||||
StringBuilder decompressedData = new StringBuilder();
|
|
||||||
|
|
||||||
// 逐行读取解压后的数据
|
|
||||||
String line;
|
|
||||||
while ((line = reader.readLine()) != null) {
|
|
||||||
decompressedData.append(line);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 此时decompressedData.toString()包含了解压后的字符串
|
|
||||||
decompressedString = decompressedData.toString();
|
|
||||||
|
|
||||||
} catch (IOException e) {
|
|
||||||
// 处理可能的IO异常
|
|
||||||
fail(FIRST_REQUEST_URL + " 响应异常");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// 处理GZ压缩结束
|
|
||||||
|
|
||||||
JsonObject resJson = new JsonObject(decompressedString);
|
|
||||||
if (resJson.getInteger("code") != 200) {
|
if (resJson.getInteger("code") != 200) {
|
||||||
fail(FIRST_REQUEST_URL + " 返回异常: " + resJson);
|
fail(FIRST_REQUEST_URL + " 返回异常: " + resJson);
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -6,7 +6,9 @@ import cn.qaiu.util.CommonUtils;
|
|||||||
import cn.qaiu.util.JsExecUtils;
|
import cn.qaiu.util.JsExecUtils;
|
||||||
import io.vertx.core.Future;
|
import io.vertx.core.Future;
|
||||||
import io.vertx.core.MultiMap;
|
import io.vertx.core.MultiMap;
|
||||||
|
import io.vertx.core.json.JsonArray;
|
||||||
import io.vertx.core.json.JsonObject;
|
import io.vertx.core.json.JsonObject;
|
||||||
|
import io.vertx.core.json.pointer.JsonPointer;
|
||||||
import io.vertx.ext.web.client.WebClient;
|
import io.vertx.ext.web.client.WebClient;
|
||||||
import io.vertx.uritemplate.UriTemplate;
|
import io.vertx.uritemplate.UriTemplate;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
@@ -33,6 +35,7 @@ public class YeTool extends PanBase {
|
|||||||
"&shareKey={shareKey}&SharePwd={pwd}&ParentFileId=0&Page=1&event=homeListFile&operateType=1";
|
"&shareKey={shareKey}&SharePwd={pwd}&ParentFileId=0&Page=1&event=homeListFile&operateType=1";
|
||||||
private static final String DOWNLOAD_API_URL = "https://www.123pan.com/a/api/share/download/info?{authK}={authV}";
|
private static final String DOWNLOAD_API_URL = "https://www.123pan.com/a/api/share/download/info?{authK}={authV}";
|
||||||
|
|
||||||
|
private static final String BATCH_DOWNLOAD_API_URL = "https://www.123pan.com/b/api/file/batch_download_share_info?{authK}={authV}";
|
||||||
private final MultiMap header = MultiMap.caseInsensitiveMultiMap();
|
private final MultiMap header = MultiMap.caseInsensitiveMultiMap();
|
||||||
|
|
||||||
public YeTool(ShareLinkInfo shareLinkInfo) {
|
public YeTool(ShareLinkInfo shareLinkInfo) {
|
||||||
@@ -41,8 +44,8 @@ public class YeTool extends PanBase {
|
|||||||
header.set("App-Version", "3");
|
header.set("App-Version", "3");
|
||||||
header.set("Cache-Control", "no-cache");
|
header.set("Cache-Control", "no-cache");
|
||||||
header.set("Connection", "keep-alive");
|
header.set("Connection", "keep-alive");
|
||||||
header.set("DNT", "1");
|
//header.set("DNT", "1");
|
||||||
header.set("Host", "www.123pan.com");
|
//header.set("Host", "www.123pan.com");
|
||||||
header.set("LoginUuid", gen36String());
|
header.set("LoginUuid", gen36String());
|
||||||
header.set("Pragma", "no-cache");
|
header.set("Pragma", "no-cache");
|
||||||
header.set("Referer", shareLinkInfo.getStandardUrl());
|
header.set("Referer", shareLinkInfo.getStandardUrl());
|
||||||
@@ -103,9 +106,23 @@ public class YeTool extends PanBase {
|
|||||||
fail("{} 状态码异常 {}", dataKey, infoJson);
|
fail("{} 状态码异常 {}", dataKey, infoJson);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonObject getFileInfoJson =
|
JsonObject getFileInfoJson =
|
||||||
infoJson.getJsonObject("data").getJsonArray("InfoList").getJsonObject(0);
|
infoJson.getJsonObject("data").getJsonArray("InfoList").getJsonObject(0);
|
||||||
getFileInfoJson.put("ShareKey", shareKey);
|
getFileInfoJson.put("ShareKey", shareKey);
|
||||||
|
|
||||||
|
// 判断是否为文件夹: data->InfoList->0->Type: 1为文件夹, 0为文件
|
||||||
|
try {
|
||||||
|
int type = (Integer)JsonPointer.from("/data/InfoList/0/Type").queryJson(infoJson);
|
||||||
|
if (type == 1) {
|
||||||
|
getZipDownUrl(client, getFileInfoJson);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} catch (Exception exception) {
|
||||||
|
fail("该分享[{}]解析异常: {}", dataKey, exception.getMessage());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
getDownUrl(client, getFileInfoJson);
|
getDownUrl(client, getFileInfoJson);
|
||||||
}).onFailure(this.handleFail(GET_FILE_INFO_URL));
|
}).onFailure(this.handleFail(GET_FILE_INFO_URL));
|
||||||
} else {
|
} else {
|
||||||
@@ -116,6 +133,11 @@ public class YeTool extends PanBase {
|
|||||||
|
|
||||||
JsonObject reqBodyJson = resListJson.getJsonObject("data").getJsonArray("InfoList").getJsonObject(0);
|
JsonObject reqBodyJson = resListJson.getJsonObject("data").getJsonArray("InfoList").getJsonObject(0);
|
||||||
reqBodyJson.put("ShareKey", shareKey);
|
reqBodyJson.put("ShareKey", shareKey);
|
||||||
|
if (reqBodyJson.getInteger("Type") == 1) {
|
||||||
|
// 文件夹
|
||||||
|
getZipDownUrl(client, reqBodyJson);
|
||||||
|
return;
|
||||||
|
}
|
||||||
getDownUrl(client, reqBodyJson);
|
getDownUrl(client, reqBodyJson);
|
||||||
}).onFailure(this.handleFail(FIRST_REQUEST_URL));
|
}).onFailure(this.handleFail(FIRST_REQUEST_URL));
|
||||||
|
|
||||||
@@ -134,6 +156,21 @@ public class YeTool extends PanBase {
|
|||||||
jsonObject.put("Etag", reqBodyJson.getString("Etag"));
|
jsonObject.put("Etag", reqBodyJson.getString("Etag"));
|
||||||
|
|
||||||
// 调用JS文件获取签名
|
// 调用JS文件获取签名
|
||||||
|
down(client, jsonObject, DOWNLOAD_API_URL);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void getZipDownUrl(WebClient client, JsonObject reqBodyJson) {
|
||||||
|
log.info(reqBodyJson.encodePrettily());
|
||||||
|
JsonObject jsonObject = new JsonObject();
|
||||||
|
// {"ShareKey":"LH3rTd-1ENed","fileIdList":[{"fileId":17525952}]}
|
||||||
|
jsonObject.put("ShareKey", reqBodyJson.getString("ShareKey"));
|
||||||
|
jsonObject.put("fileIdList", new JsonArray().add(JsonObject.of("fileId", reqBodyJson.getInteger("FileId"))));
|
||||||
|
// 调用JS文件获取签名
|
||||||
|
down(client, jsonObject, BATCH_DOWNLOAD_API_URL);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void down(WebClient client, JsonObject jsonObject, String api) {
|
||||||
ScriptObjectMirror getSign;
|
ScriptObjectMirror getSign;
|
||||||
try {
|
try {
|
||||||
getSign = JsExecUtils.executeJs("getSign", "/a/api/share/download/info");
|
getSign = JsExecUtils.executeJs("getSign", "/a/api/share/download/info");
|
||||||
@@ -143,7 +180,7 @@ public class YeTool extends PanBase {
|
|||||||
}
|
}
|
||||||
log.info("ye getSign: {}={}", getSign.get("0").toString(), getSign.get("1").toString());
|
log.info("ye getSign: {}={}", getSign.get("0").toString(), getSign.get("1").toString());
|
||||||
|
|
||||||
client.postAbs(UriTemplate.of(DOWNLOAD_API_URL))
|
client.postAbs(UriTemplate.of(api))
|
||||||
.setTemplateParam("authK", getSign.get("0").toString())
|
.setTemplateParam("authK", getSign.get("0").toString())
|
||||||
.setTemplateParam("authV", getSign.get("1").toString())
|
.setTemplateParam("authV", getSign.get("1").toString())
|
||||||
.putHeader("Platform", "web")
|
.putHeader("Platform", "web")
|
||||||
@@ -160,7 +197,8 @@ public class YeTool extends PanBase {
|
|||||||
fail("Ye: downURLJson格式异常->" + downURLJson);
|
fail("Ye: downURLJson格式异常->" + downURLJson);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
String downURL = downURLJson.getJsonObject("data").getString("DownloadURL");
|
String downURL = downURLJson.getJsonObject("data")
|
||||||
|
.getString(api.contains("batch_download_share_info")? "DownloadUrl" : "DownloadURL");
|
||||||
try {
|
try {
|
||||||
Map<String, String> urlParams = CommonUtils.getURLParams(downURL);
|
Map<String, String> urlParams = CommonUtils.getURLParams(downURL);
|
||||||
String params = urlParams.get("params");
|
String params = urlParams.get("params");
|
||||||
|
|||||||
2
pom.xml
2
pom.xml
@@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
<vertx.version>4.5.6</vertx.version>
|
<vertx.version>4.5.6</vertx.version>
|
||||||
<org.reflections.version>0.10.2</org.reflections.version>
|
<org.reflections.version>0.10.2</org.reflections.version>
|
||||||
<lombok.version>1.18.30</lombok.version>
|
<lombok.version>1.18.38</lombok.version>
|
||||||
<slf4j.version>2.0.5</slf4j.version>
|
<slf4j.version>2.0.5</slf4j.version>
|
||||||
<commons-lang3.version>3.12.0</commons-lang3.version>
|
<commons-lang3.version>3.12.0</commons-lang3.version>
|
||||||
<commons-beanutils2.version>2.0.0</commons-beanutils2.version>
|
<commons-beanutils2.version>2.0.0</commons-beanutils2.version>
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
"qrcode": "^1.5.4",
|
"qrcode": "^1.5.4",
|
||||||
"vue": "^3.5.12",
|
"vue": "^3.5.12",
|
||||||
"vue-clipboard3": "^2.0.0",
|
"vue-clipboard3": "^2.0.0",
|
||||||
"vue3-json-viewer": "^2.2.2"
|
"vue3-json-viewer": "2.2.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.26.0",
|
"@babel/core": "^7.26.0",
|
||||||
|
|||||||
@@ -20,14 +20,15 @@ import static cn.qaiu.vx.core.util.ConfigConstant.LOCAL;
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 程序入口
|
* vertx程序入口
|
||||||
* <br>Create date 2021-05-08 13:00:01
|
|
||||||
*
|
*
|
||||||
* @author qaiu
|
* <br>Create date 2021-05-08 13:00:01
|
||||||
|
* @author qaiu yyzy
|
||||||
*/
|
*/
|
||||||
public class AppMain {
|
public class AppMain {
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
// start
|
||||||
Deploy.instance().start(args, AppMain::exec);
|
Deploy.instance().start(args, AppMain::exec);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -119,3 +119,19 @@ Platform:web
|
|||||||
{"ShareKey":"iaKtVv-6OECd","behavior":1}
|
{"ShareKey":"iaKtVv-6OECd","behavior":1}
|
||||||
|
|
||||||
### eaefamemdead
|
### eaefamemdead
|
||||||
|
https://www.123684.com/b/api/share/get?2393880368=1749017805-9397896-3041863692&limit=100&next=0&orderBy=file_name&orderDirection=asc&shareKey=LH3rTd-pENed&SharePwd=qaiu&ParentFileId=0&Page=1&event=homeListFile&operateType=1
|
||||||
|
Referer: https://www.123684.com/s/LH3rTd-pENed
|
||||||
|
Sec-Fetch-Dest: empty
|
||||||
|
Sec-Fetch-Mode: cors
|
||||||
|
Sec-Fetch-Site: same-origin
|
||||||
|
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 Edg/136.0.0.0
|
||||||
|
platform: web
|
||||||
|
sec-ch-ua: "Chromium";v="136", "Microsoft Edge";v="136", "Not.A/Brand";v="99"
|
||||||
|
sec-ch-ua-mobile: ?0
|
||||||
|
sec-ch-ua-platform: "Windows"
|
||||||
|
|
||||||
|
###
|
||||||
|
POST https://www.123684.com/b/api/file/batch_download_share_info?3697171543=1749019332-221279-1801740277
|
||||||
|
Content-Type: application/json;charset=UTF-8
|
||||||
|
|
||||||
|
{"ShareKey":"LH3rTd-pENed","fileIdList":[{"fileId":17525951}]}
|
||||||
|
|||||||
Reference in New Issue
Block a user