Skip to content

Commit 76fc7ca

Browse files
author
Hiram
committed
[bug] fix quark & uc cookie is incorrect
1 parent c7da427 commit 76fc7ca

File tree

1 file changed

+72
-9
lines changed
  • apps/cookie-butler/static/js

1 file changed

+72
-9
lines changed

Diff for: apps/cookie-butler/static/js/core.js

+72-9
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,3 @@
1-
// import axios from 'axios';
2-
// import QRCode from 'qrcode';
3-
// import { Buffer } from 'buffer';
4-
// import { v4 as uuidv4 } from 'uuid';
5-
61
class QRCodeHandler {
72
// 状态常量
83
static STATUS_NEW = "NEW"; // 待扫描
@@ -46,6 +41,52 @@ class QRCodeHandler {
4641
});
4742
}
4843

44+
formatCookiesToList(cookieString) {
45+
const result = [];
46+
let currentCookie = '';
47+
let inExpires = false;
48+
49+
for (let i = 0; i < cookieString.length; i++) {
50+
const char = cookieString[i];
51+
52+
// 判断是否进入或退出 `expires` 属性
53+
if (cookieString.slice(i, i + 8).toLowerCase() === 'expires=') {
54+
inExpires = true;
55+
}
56+
if (inExpires && char === ';') {
57+
inExpires = false;
58+
}
59+
60+
// 检测到逗号分隔符并且不在 `expires` 属性中,表示一个 Cookie 条目结束
61+
if (char === ',' && !inExpires) {
62+
result.push(currentCookie.trim());
63+
currentCookie = '';
64+
} else {
65+
currentCookie += char;
66+
}
67+
}
68+
69+
// 添加最后一个 Cookie 条目
70+
if (currentCookie.trim()) {
71+
result.push(currentCookie.trim());
72+
}
73+
74+
return result;
75+
};
76+
77+
formatCookie(cookies) {
78+
if (!Array.isArray(cookies)) cookies = [cookies];
79+
if (cookies.length === 0) return '';
80+
81+
let mainCookies = [];
82+
for (const cookie of cookies) {
83+
if (cookie && typeof cookie === 'string' && cookie.trim()) {
84+
mainCookies.push(cookie.split('; ')[0]);
85+
}
86+
}
87+
return mainCookies.join(';');
88+
}
89+
4990
async startScan(platform) {
5091
switch (platform) {
5192
case QRCodeHandler.PLATFORM_QUARK:
@@ -158,10 +199,30 @@ class QRCodeHandler {
158199
}
159200
});
160201
const cookieResData = cookieRes.data;
161-
const cookies = Array.isArray(cookieResData.headers['set-cookie']) ? cookieResData.headers['set-cookie'].join('; '):cookieResData.headers['set-cookie'];
202+
const cookies = Array.isArray(cookieResData.headers['set-cookie']) ? cookieResData.headers['set-cookie'].join('; ') : cookieResData.headers['set-cookie'];
203+
const cookies2array = this.formatCookiesToList(cookies);
204+
let mainCookies = this.formatCookie(cookies2array);
205+
const cookieSelfRes = await axios({
206+
url: "/http",
207+
method: "POST",
208+
data: {
209+
url: "https://drive-pc.quark.cn/1/clouddrive/file/sort?pr=ucpro&fr=pc&uc_param_str=&pdir_fid=0&_page=1&_size=50&_fetch_total=1&_fetch_sub_dirs=0&_sort=file_type:asc,updated_at:desc",
210+
headers: {
211+
...QRCodeHandler.HEADERS,
212+
Origin: 'https://pan.quark.cn',
213+
Referer: 'https://pan.quark.cn/',
214+
Cookie: mainCookies
215+
}
216+
}
217+
});
218+
const cookieResDataSelf = cookieSelfRes.data;
219+
const cookiesSelf = Array.isArray(cookieResDataSelf.headers['set-cookie']) ? cookieResDataSelf.headers['set-cookie'].join('; ') : cookieResDataSelf.headers['set-cookie'];
220+
const cookies2arraySelf = this.formatCookiesToList(cookiesSelf);
221+
const mainCookiesSelf = this.formatCookie(cookies2arraySelf);
222+
if (mainCookiesSelf) mainCookies += ';' + mainCookiesSelf;
162223
return {
163224
status: QRCodeHandler.STATUS_CONFIRMED,
164-
cookie: cookies
225+
cookie: mainCookies
165226
};
166227
} else if (resData.data.status === 50004002) { // token过期
167228
this.platformStates[QRCodeHandler.PLATFORM_QUARK] = null;
@@ -370,11 +431,13 @@ class QRCodeHandler {
370431
}
371432
});
372433
const cookieResData = cookieRes.data;
373-
const cookies = Array.isArray(cookieResData.headers['set-cookie']) ? cookieResData.headers['set-cookie'].join('; '):cookieResData.headers['set-cookie'];
434+
const cookies = cookieResData.headers['set-cookie'];
435+
const cookies2array = this.formatCookiesToList(cookies);
436+
const mainCookies = this.formatCookie(cookies2array);
374437
this.platformStates[QRCodeHandler.PLATFORM_UC] = null;
375438
return {
376439
status: QRCodeHandler.STATUS_CONFIRMED,
377-
cookie: cookies
440+
cookie: mainCookies
378441
};
379442
} else if (resData.data.status === 50004002) { // token过期
380443
this.platformStates[QRCodeHandler.PLATFORM_UC] = null;

0 commit comments

Comments
 (0)