From 3e1f29c12e4915f050619654776045164281491a Mon Sep 17 00:00:00 2001 From: QAIU <736226400@qq.com> Date: Mon, 24 Jul 2023 10:41:25 +0800 Subject: [PATCH] =?UTF-8?q?123=E7=BD=91=E7=9B=98=E8=A7=A3=E6=9E=90?= =?UTF-8?q?=E8=A7=84=E5=88=99=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/qaiu/lz/common/parser/impl/YeTool.java | 41 +++++++++++++++---- .../java/cn/qaiu/lz/common/util/AESUtils.java | 3 +- .../src/main/resources/http-tools/pan-ws.http | 6 +-- .../src/main/resources/http-tools/test.http | 2 + .../java/cn/qaiu/web/test/TestAESUtil.java | 6 +-- 5 files changed, 41 insertions(+), 17 deletions(-) diff --git a/web-service/src/main/java/cn/qaiu/lz/common/parser/impl/YeTool.java b/web-service/src/main/java/cn/qaiu/lz/common/parser/impl/YeTool.java index 905586b..35693c8 100644 --- a/web-service/src/main/java/cn/qaiu/lz/common/parser/impl/YeTool.java +++ b/web-service/src/main/java/cn/qaiu/lz/common/parser/impl/YeTool.java @@ -26,9 +26,11 @@ import java.util.regex.Pattern; public class YeTool implements IPanTool { public static final String SHARE_URL_PREFIX = "https://www.123pan.com/s/"; public static final String FIRST_REQUEST_URL = SHARE_URL_PREFIX + "{key}.html"; - private static final String GET_FILE_INFO_URL = "https://www.123pan.com/a/api/share/get?limit=100&next=1&orderBy" + - "=file_name&orderDirection=asc&shareKey={shareKey}&SharePwd={pwd}&ParentFileId=0&Page=1&event" + - "=homeListFile&operateType=1"; +// private static final String GET_FILE_INFO_URL = "https://www.123pan.com/a/api/share/get?limit=100&next=1&orderBy" + +// "=file_name&orderDirection=asc&shareKey={shareKey}&SharePwd={pwd}&ParentFileId=0&Page=1&event" + +// "=homeListFile&operateType=1"; + private static final String GET_FILE_INFO_URL="https://www.123pan.com/b/api/share/get?limit=100&next=1&orderBy=file_name&orderDirection=asc" + + "&shareKey={shareKey}&SharePwd={pwd}&ParentFileId=0&Page=1&event=homeListFile&operateType=1&auth-key={authKey}"; private static final String DOWNLOAD_API_URL = "https://www.123pan.com/b/api/share/download/info?auth-key={authKey}"; @@ -64,6 +66,9 @@ public class YeTool implements IPanTool { client.getAbs(UriTemplate.of(GET_FILE_INFO_URL)) .setTemplateParam("shareKey", shareKey) .setTemplateParam("pwd", code) + .setTemplateParam("authKey", AESUtils.getAuthKey("/b/api/share/get")) + .putHeader("Platform", "web") + .putHeader("App-Version", "3") .send().onSuccess(res2 -> { JsonObject infoJson = res2.bodyAsJsonObject(); if (infoJson.getInteger("code") != 0) { @@ -91,15 +96,27 @@ public class YeTool implements IPanTool { private static void getDownUrl(Promise promise, WebClient client, JsonObject reqBodyJson) { log.info(reqBodyJson.encodePrettily()); + JsonObject jsonObject = new JsonObject(); + // {"ShareKey":"iaKtVv-6OECd","FileID":2193732,"S3keyFlag":"1811834632-0","Size":4203111,"Etag":"69c94adbc0b9190cf23c4e958d8c7c53"} + jsonObject.put("ShareKey", reqBodyJson.getString("ShareKey")); + jsonObject.put("FileID", reqBodyJson.getInteger("FileID")); + jsonObject.put("S3keyFlag", reqBodyJson.getString("S3keyFlag")); + jsonObject.put("Size", reqBodyJson.getInteger("Size")); + jsonObject.put("Etag", reqBodyJson.getString("Etag")); client.postAbs(UriTemplate.of(DOWNLOAD_API_URL)) - .setTemplateParam("authKey", AESUtils.getAuthKey()) + .setTemplateParam("authKey", AESUtils.getAuthKey("/b/api/share/download/info")) .putHeader("Platform", "web") .putHeader("App-Version", "3") - .sendJsonObject(reqBodyJson).onSuccess(res2 -> { + .sendJsonObject(jsonObject).onSuccess(res2 -> { JsonObject downURLJson = res2.bodyAsJsonObject(); - if (downURLJson.getInteger("code") != 0) { - promise.fail("Ye: downURLJson返回值异常->" + downURLJson); + try { + if (downURLJson.getInteger("code") != 0) { + promise.fail("Ye: downURLJson返回值异常->" + downURLJson); + return; + } + } catch(Exception ignored) { + promise.fail("Ye: downURLJson格式异常->" + downURLJson); return; } String downURL = downURLJson.getJsonObject("data").getString("DownloadURL"); @@ -112,10 +129,16 @@ public class YeTool implements IPanTool { // 获取直链 client.getAbs(downUrl2).send().onSuccess(res3 -> { JsonObject res3Json = res3.bodyAsJsonObject(); - if (res3Json.getInteger("code") != 0) { - promise.fail("Ye: downUrl2返回值异常->" + res3Json); + try { + if (res3Json.getInteger("code") != 0) { + promise.fail("Ye: downUrl2返回值异常->" + res3Json); + return; + } + } catch(Exception ignored) { + promise.fail("Ye: downUrl2格式异常->" + downURLJson); return; } + promise.complete(res3Json.getJsonObject("data").getString("redirect_url")); }).onFailure(t -> promise.fail(PanExceptionUtils.fillRunTimeException("Ye", diff --git a/web-service/src/main/java/cn/qaiu/lz/common/util/AESUtils.java b/web-service/src/main/java/cn/qaiu/lz/common/util/AESUtils.java index f837cc5..dcabba2 100644 --- a/web-service/src/main/java/cn/qaiu/lz/common/util/AESUtils.java +++ b/web-service/src/main/java/cn/qaiu/lz/common/util/AESUtils.java @@ -274,8 +274,7 @@ public class AESUtils { return new BigInteger(1, digest).toString(16); } - public static String getAuthKey() { - String _0x2207af = "/b/api/share/download/info"; + public static String getAuthKey(String _0x2207af) { String _0x467baa = "web"; int _0x4965f1 = 3; diff --git a/web-service/src/main/resources/http-tools/pan-ws.http b/web-service/src/main/resources/http-tools/pan-ws.http index db45fe2..397146c 100644 --- a/web-service/src/main/resources/http-tools/pan-ws.http +++ b/web-service/src/main/resources/http-tools/pan-ws.http @@ -37,9 +37,9 @@ Accept: application/json, text/plain, */* ### 获取下载文件URL POST https://www.wenshushu.cn/ap/dl/sign Accept: application/json, text/plain, */* -X-Token:wss:bekzdwsfwwf +X-Token:wss:br57uq0qg03 -{"ufileid":"bekoe5n508z","consumeCode":0,"type":1} +{"ufileid":"br4t1rst6xb","consumeCode":0,"type":1} ### # { @@ -49,5 +49,5 @@ X-Token:wss:bekzdwsfwwf # "url": "https://down.wss.show/zkrk4th/9/yj/9yjvzkrk4th?cdn_sign=1686211254-31-0-6edd2e228a030be23210158daeb2c4a1&exp=4800&response-content-disposition=attachment%3B%20filename%3D%22supervision.sql%22%3B%20filename%2A%3Dutf-8%27%27supervision.sql", ### 直接下载 -https://down.wss.show/zkrk4th/9/yj/9yjvzkrk4th?cdn_sign=1686211254-31-0-6edd2e228a030be23210158daeb2c4a1&exp=4800&response-content-disposition=attachment%3B%20filename%3D%22supervision.sql%22%3B%20filename%2A%3Dutf-8%27%27supervision.sql +https://down.wss.show/zkrk4th/9/yj/9yjvzkrk4th?cdn_sign=1690012643-63-0-f7761ba9a500a0b300a3b5573693f9ce&exp=4800&response-content-disposition=attachment%3B%20filename%3D%22supervision.sql%22%3B%20filename%2A%3Dutf-8%27%27supervision.sql diff --git a/web-service/src/main/resources/http-tools/test.http b/web-service/src/main/resources/http-tools/test.http index e9b50a8..70af644 100644 --- a/web-service/src/main/resources/http-tools/test.http +++ b/web-service/src/main/resources/http-tools/test.http @@ -80,6 +80,8 @@ GET http://127.0.0.1:6400/fc/e5079007dc31226096628870c7@QAIU # https://www.123pan.com/s/iaKtVv-ICECd.html ### 123 GET http://127.0.0.1:6400/json/ye/iaKtVv-ICECd +### 123 +GET http://127.0.0.1:6400/json/ye/iaKtVv-6OECd@DcGe ### 123 # @no-redirect diff --git a/web-service/src/test/java/cn/qaiu/web/test/TestAESUtil.java b/web-service/src/test/java/cn/qaiu/web/test/TestAESUtil.java index 92c5c80..d9bae26 100644 --- a/web-service/src/test/java/cn/qaiu/web/test/TestAESUtil.java +++ b/web-service/src/test/java/cn/qaiu/web/test/TestAESUtil.java @@ -65,9 +65,9 @@ public class TestAESUtil { @Test public void testKeyAuth(){ - System.out.println(AESUtils.getAuthKey()); - System.out.println(AESUtils.getAuthKey()); - System.out.println(AESUtils.getAuthKey()); + System.out.println(AESUtils.getAuthKey("/b/api/share/download/info")); + System.out.println(AESUtils.getAuthKey("/b/api/share/download/info")); + System.out.println(AESUtils.getAuthKey("/b/api/share/get")); }