adapt to the new version of cookie

This commit is contained in:
被遗忘的记忆
2024-08-25 09:00:16 +08:00
committed by GitHub
parent e63b43de52
commit f0e9d8e24b
+13 -38
View File
@@ -56,9 +56,7 @@ class YouProvider {
// extract essential jwt session and token from cookie
for (let index = 0; index < config.sessions.length; index++) {
let session = config.sessions[index];
var { jwtSession, jwtToken, ds, dsr, youproSubscription, youSubscription, aiModel } = extractCookie(session.cookie);
let session = config.sessions[index], {jwtSession, jwtToken, ds, dsr} = extractCookie(session.cookie);
if (jwtSession && jwtToken) {
// 旧版cookie处理
try {
@@ -67,9 +65,6 @@ class YouProvider {
configIndex: index,
jwtSession,
jwtToken,
youproSubscription,
youSubscription,
aiModel,
valid: false,
};
console.log(`已添加 #${index} ${jwt.user.name} (旧版cookie)`);
@@ -77,50 +72,31 @@ class YouProvider {
console.error(`解析第${index}个旧版cookie失败: ${e.message}`);
}
} else if (ds) {
// 新版cookie处理,只要有DS就处理
// 新版cookie处理
try {
let jwt = JSON.parse(Buffer.from(ds.split(".")[1], "base64").toString());
this.sessions[jwt.email] = {
configIndex: index,
ds,
dsr, // 即使dsr为null也会被添加
youproSubscription,
youSubscription,
aiModel,
dsr,
valid: false,
};
console.log(`已添加 #${index} ${jwt.email} (新版cookie)`);
if (!dsr) {
console.warn(`警告: 第${index}个cookie缺少DSR字段。程序继续执行。`);
console.warn(`警告: 第${index}个cookie缺少DSR字段。`);
}
} catch (e) {
console.error(`解析第${index}个新版cookie失败: ${e.message}`);
}
} else {
// 无效cookie处理
console.error(`${index}个cookie无效,请重新获取。`);
if (jwtSession || jwtToken) {
console.error(`检测到部分旧版cookie字段,但不完整。`);
if (!jwtSession) console.error(`缺少: stytch_session`);
if (!jwtToken) console.error(`缺少: stytch_session_jwt`);
} else if (ds) {
console.error(`检测到新版cookie的DS字段,但缺少其他必要字段。`);
} else {
console.error(`未检测到任何有效的cookie字段。`);
console.error(`未检测到有效的DS或stytch_session字段。`);
}
console.error(`提示: 请确保登录You.com并成功获取完整的cookie。`);
continue; // 跳过无效的cookie,继续下一个
}
console.log(`已添加 ${Object.keys(this.sessions).length} 个 cookie,开始验证有效性`);
if (youproSubscription === "false" || youSubscription === "freemium") {
console.warn(`警告: 第${index}个cookie可能没有有效的订阅。请检查You是否有有效的Pro订阅。`);
}
}
console.log(`已添加 ${Object.keys(this.sessions).length} 个 cookie,开始验证有效性(是否有订阅)`);
for (var username of Object.keys(this.sessions)) {
var session = this.sessions[username];
for (let username of Object.keys(this.sessions)) {
let session = this.sessions[username];
createDirectoryIfNotExists(path.join(__dirname, "browser_profiles", username));
await connect({
headless: "auto",
@@ -136,16 +112,13 @@ class YouProvider {
session.jwtSession,
session.jwtToken,
session.ds,
session.dsr,
session.youproSubscription,
session.youSubscription,
session.aiModel
session.dsr
));
page.goto("https://you.com", { timeout: 60000 });
await sleep(5000); // 等待加载完毕
// 如果遇到盾了就多等一段时间
var pageContent = await page.content();
let pageContent = await page.content();
if (pageContent.indexOf("https://challenges.cloudflare.com") > -1) {
console.log(`请在30秒内完成人机验证`);
page.evaluate(() => {
@@ -167,10 +140,12 @@ class YouProvider {
session.page = page;
} else {
console.log(`${username} 无有效订阅`);
console.warn(`警告: ${username} 可能没有有效的订阅。请检查You是否有有效的Pro订阅。`);
await browser.close();
}
} catch (e) {
console.log(`${username} 已失效`);
console.warn(`警告: ${username} 验证失败。请检查cookie是否有效。`);
await browser.close();
}
})
@@ -284,7 +259,7 @@ class YouProvider {
}
}
async getCompletion(username, messages, stream = false, proxyModel, useCustomMode = false) {
async getCompletion({username, messages, stream = false, proxyModel, useCustomMode = false}) {
const session = this.sessions[username];
if (!session || !session.valid) {
throw new Error(`用户 ${username} 的会话无效`);