From c4b35d9a276cccb1cb26957c56bbb2301694522c Mon Sep 17 00:00:00 2001 From: Cp0204 Date: Wed, 3 Apr 2024 03:07:30 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=84=E8=8C=83=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/run.py | 2 +- quark_auto_save.py | 34 +++++++++++++++++++++------------- 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/app/run.py b/app/run.py index 40c82a8..aa02ea3 100644 --- a/app/run.py +++ b/app/run.py @@ -25,7 +25,7 @@ script_path = os.environ.get("SCRIPT_PATH", "./quark_auto_save.py") config_path = os.environ.get("CONFIG_PATH", "./config/quark_config.json") app = Flask(__name__) -app.config["APP_VERSION"] = "0.2.7" +app.config["APP_VERSION"] = "0.2.7.1" app.secret_key = "ca943f6db6dd34823d36ab08d8d6f65d" app.json.ensure_ascii = False app.json.sort_keys = False diff --git a/quark_auto_save.py b/quark_auto_save.py index 1ce3aee..8c44ef1 100644 --- a/quark_auto_save.py +++ b/quark_auto_save.py @@ -92,12 +92,20 @@ class Quark: self.index = index + 1 self.is_active = False self.nickname = "" + self.st = self.match_st_form_cookie(cookie) + + def match_st_form_cookie(self, cookie): + st = re.findall(r"st[a-zA-Z0-9]+", cookie) + return st[0] if st else False def common_headers(self): - return { + headers = { "cookie": self.cookie, "content-type": "application/json", } + if self.st: + headers["x-clouddrive-st"] = self.st + return headers def init(self): account_info = self.get_account_info() @@ -172,7 +180,7 @@ class Quark: # 可验证资源是否失效 def get_stoken(self, pwd_id): - url = "https://pan.quark.cn/1/clouddrive/share/sharepage/token" + url = "https://drive-m.quark.cn/1/clouddrive/share/sharepage/token" querystring = {"pr": "ucpro", "fr": "h5"} payload = {"pwd_id": pwd_id, "passcode": ""} headers = self.common_headers() @@ -188,7 +196,7 @@ class Quark: file_list = [] page = 1 while True: - url = "https://pan.quark.cn/1/clouddrive/share/sharepage/detail" + url = "https://drive-m.quark.cn/1/clouddrive/share/sharepage/detail" querystring = { "pr": "ucpro", "fr": "pc", @@ -219,7 +227,7 @@ class Quark: def get_fids(self, file_paths): fids = [] while True: - url = "https://drive.quark.cn/1/clouddrive/file/info/path_list" + url = "https://drive-m.quark.cn/1/clouddrive/file/info/path_list" querystring = {"pr": "ucpro", "fr": "pc"} payload = {"file_path": file_paths[:50], "namespace": "0"} headers = self.common_headers() @@ -240,7 +248,7 @@ class Quark: file_list = [] page = 1 while True: - url = "https://drive.quark.cn/1/clouddrive/file/sort" + url = "https://drive-m.quark.cn/1/clouddrive/file/sort" querystring = { "pr": "ucpro", "fr": "pc", @@ -266,14 +274,16 @@ class Quark: return file_list def save_file(self, fid_list, fid_token_list, to_pdir_fid, pwd_id, stoken): - url = "https://drive.quark.cn/1/clouddrive/share/sharepage/save" + url = "https://drive-m.quark.cn/1/clouddrive/share/sharepage/save" querystring = { "pr": "ucpro", "fr": "pc", "uc_param_str": "", + "app": "clouddrive", "__dt": int(random.uniform(1, 5) * 60 * 1000), "__t": datetime.now().timestamp(), } + querystring["fr"] = "h5" if self.st else "pc" payload = { "fid_list": fid_list, "fid_token_list": fid_token_list, @@ -290,7 +300,7 @@ class Quark: return response def mkdir(self, dir_path): - url = "https://drive-pc.quark.cn/1/clouddrive/file" + url = "https://drive-m.quark.cn/1/clouddrive/file" querystring = {"pr": "ucpro", "fr": "pc", "uc_param_str": ""} payload = { "pdir_fid": "0", @@ -305,7 +315,7 @@ class Quark: return response def rename(self, fid, file_name): - url = "https://drive-pc.quark.cn/1/clouddrive/file/rename" + url = "https://drive-m.quark.cn/1/clouddrive/file/rename" querystring = {"pr": "ucpro", "fr": "pc", "uc_param_str": ""} payload = {"fid": fid, "file_name": file_name} headers = self.common_headers() @@ -315,7 +325,7 @@ class Quark: return response def delete(self, filelist): - url = "https://drive-pc.quark.cn/1/clouddrive/file/delete" + url = "https://drive-m.quark.cn/1/clouddrive/file/delete" querystring = {"pr": "ucpro", "fr": "pc", "uc_param_str": ""} payload = {"action_type": 2, "filelist": filelist, "exclude_fids": []} headers = self.common_headers() @@ -525,7 +535,7 @@ class Quark: return False def query_task(self, task_id): - url = "https://drive-pc.quark.cn/1/clouddrive/task" + url = "https://drive-m.quark.cn/1/clouddrive/task" querystring = { "pr": "ucpro", "fr": "pc", @@ -637,9 +647,7 @@ def save_check(account): "https://mirror.ghproxy.com/https://gist.githubusercontent.com/Cp0204/4764fd0110d5f5bd875eb9a9ff77ccd0/raw/quark_save_check.json" ).json() if check_data.get("pwd_id"): - return account.do_save_check( - check_data["pwd_id"], check_data["savepath"] - ) + return account.do_save_check(check_data["pwd_id"], check_data["savepath"]) def verify_account(account):