Compare commits

..

4 Commits

2 changed files with 22 additions and 26 deletions

View File

@@ -58,7 +58,6 @@ https://nfd-parser.github.io/nfd-preview/preview.html?src=https%3A%2F%2Flz.qaiu.
**注意⚠小飞机解析有IP限制多数云服务商的大陆IP会被拦截可以自行配置代理和本程序无关**
**注意⚠️收到很多用户反馈,小飞机近期封号频繁,请尽可能选择其他网盘分享**
**注意⚠123云盘解析可能受账号地区、访问区域、出口IP等因素影响即使已配置登录认证跨区域访问仍可能失败通常更接近网盘侧限制/风控,和本程序无关**
**注意⚠️请不要过度依赖 lz.qaiu.top建议本地搭建或者云服务器自行搭建。请求量过多的话服务器可能会被云盘厂商限制遇到解析失败的分享链接不要着急提issues请先检查分享是否有效。**
## 网盘支持情况:
@@ -94,13 +93,6 @@ https://nfd-parser.github.io/nfd-preview/preview.html?src=https%3A%2F%2Flz.qaiu.
- Onedrive-pod
- Dropbox-pdp
- iCloud-pic
### 专业版提供
- 迅雷网盘-xl
- [夸克云盘-qk](https://pan.quark.cn/)
- [UC云盘-uc](https://fast.uc.cn/)
- [移动云盘-p139](https://yun.139.com/)
- [联通云盘-pwo](https://pan.wo.cn/)
- [天翼云盘-p189](https://cloud.189.cn/)
## API接口
@@ -335,7 +327,7 @@ json返回数据格式示例:
| 移动云云空间(个人版) | √ | √(密码可忽略) | 5G(个人) | 不限大小 |
| 小飞机网盘 | √ | √ | 10G | 不限大小 |
| 360亿方云 | √ | √ | 100G(须实名) | 不限大小 |
| 123云盘 | x | √ | 2T | 100G>100M需要登录 |
| 123云盘 | | √ | 2T | 100G>100M需要登录 |
| 文叔叔 | √ | √ | 10G | 5GB |
| WPS云文档 | √ | X | 5G(免费) | 10M(免费)/2G(会员) |
| 夸克网盘 | x | √ | 10G | 不限大小 |
@@ -493,8 +485,6 @@ auths:
**注意:** 目前仅支持 123ye的认证配置。
**补充说明:** 123ye登录认证是必要条件之一但不保证所有部署环境都稳定可用若公网云服务器解析异常而本地/NAS环境正常通常更可能与123侧跨区域访问限制或风控相关。建议优先在本地、家庭宽带或NAS环境部署必要时再结合代理。
**技术栈:**
Jdk17+Vert.x4
@@ -519,3 +509,6 @@ Core模块集成Vert.x实现类似spring的注解式路由API
</p>

View File

@@ -37,6 +37,9 @@ public class WsTool extends PanBase {
MultiMap headers = MultiMap.caseInsensitiveMultiMap();
headers.set("User-Agent", userAgent2);
headers.set("Accept", "application/json, text/plain, */*");
headers.set("Content-Type", "application/json;charset=utf-8");
headers.set("Prod", "com.wenshushu.web.pc");
headers.set("sec-ch-ua-platform", "Android");
headers.set("Accept-Language", "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2");
headers.set("sec-ch-ua-mobile", "sec-ch-ua-mobile");
@@ -50,7 +53,7 @@ public class WsTool extends PanBase {
try {
// 设置匿名登录token
String token = asJson(res).getJsonObject("data").getString("token");
headers.set("X-Token", token);
headers.set("X-TOKEN", token);
// 获取文件夹信息
httpClient.postAbs(SHARE_URL_API + "task/mgrtask").putHeaders(headers)
@@ -68,10 +71,10 @@ public class WsTool extends PanBase {
String filebid = asJson(res2).getJsonObject("data").getString("boxid"); // 文件夹bid
// 调试输出文件夹信息
System.out.println("文件夹期限: " + filetime);
System.out.println("文件夹大小: " + filesize);
System.out.println("文件夹pid: " + filepid);
System.out.println("文件夹bid: " + filebid);
log.debug("文件夹期限: {}", filetime);
log.debug("文件夹大小: {}", filesize);
log.debug("文件夹pid: {}", filepid);
log.debug("文件夹bid: {}", filebid);
// 获取文件信息
httpClient.postAbs(SHARE_URL_API + "ufile/list").putHeaders(headers)
@@ -92,21 +95,21 @@ public class WsTool extends PanBase {
if (res3.statusCode() == 200) {
try {
// 获取文件信息
String filename = asJson(res3).getJsonObject("data")
.getJsonArray("fileList").getJsonObject(0).getString("fname"); // 文件名称
String filefid = asJson(res3).getJsonObject("data")
.getJsonArray("fileList").getJsonObject(0).getString("fid"); // 文件fid
JsonObject fileInfo = asJson(res3).getJsonObject("data")
.getJsonArray("fileList").getJsonObject(0);
String filename = fileInfo.getString("fname"); // 文件名称
String fileUfileid = fileInfo.getString("ufileid", fileInfo.getString("fid")); // 文件ufileid
// 调试输出文件信息
System.out.println("文件名称: " + filename);
System.out.println("文件fid: " + filefid);
log.debug("文件名称: {}", filename);
log.debug("文件ufileid: {}", fileUfileid);
// 检查文件是否失效
httpClient.postAbs(SHARE_URL_API + "dl/sign").putHeaders(headers)
.sendJsonObject(JsonObject.of(
"consumeCode", 0,
"type", 1,
"ufileid", filefid
"ufileid", fileUfileid,
// 新版接口不再需要consumeCode
"type", 1
)).onSuccess(res4 -> {
if (res4.statusCode() == 200) {
@@ -115,7 +118,7 @@ public class WsTool extends PanBase {
String fileurl = asJson(res4).getJsonObject("data").getString("url");
// 调试输出文件直链
System.out.println("文件直链: " + fileurl);
log.debug("文件直链: {}", fileurl);
if (!fileurl.equals("")) {
promise.complete(URLDecoder.decode(fileurl, StandardCharsets.UTF_8));