increase automatic login

This commit is contained in:
被遗忘的记忆
2024-08-25 19:02:00 +08:00
committed by GitHub
parent c421d2f777
commit 484d63c563
+24 -14
View File
@@ -18,7 +18,7 @@ class YouProvider {
this.config = config; this.config = config;
this.sessions = {}; this.sessions = {};
// 可以是 'chrome', 'edge', 或 'auto' // 可以是 'chrome', 'edge', 或 'auto'
this.preferredBrowser = 'edge'; this.preferredBrowser = 'auto';
this.isCustomModeEnabled = process.env.USE_CUSTOM_MODE === "true"; this.isCustomModeEnabled = process.env.USE_CUSTOM_MODE === "true";
this.isRotationEnabled = process.env.ENABLE_MODE_ROTATION === "true"; this.isRotationEnabled = process.env.ENABLE_MODE_ROTATION === "true";
this.currentMode = "default"; this.currentMode = "default";
@@ -128,18 +128,17 @@ class YouProvider {
// 等待页面加载完毕 // 等待页面加载完毕
await sleep(5000); await sleep(5000);
console.log(`请在打开的浏览器窗口中手动登录 You.com (session #${session.configIndex})`); console.log(`请在打开的浏览器窗口中手动登录 You.com (session #${session.configIndex})`);
await this.waitForManualLogin(page); const { loginInfo, sessionCookie } = await this.waitForManualLogin(page);
const cookies = await page.cookies();
const sessionCookie = this.extractSessionCookie(cookies);
if (sessionCookie) { if (sessionCookie) {
this.sessions[sessionCookie.email] = { const email = loginInfo || sessionCookie.email;
this.sessions[email] = {
...session, ...session,
...sessionCookie, ...sessionCookie,
}; };
delete this.sessions[username]; delete this.sessions[username];
username = sessionCookie.email; username = email;
session = this.sessions[username]; session = this.sessions[username];
console.log(`成功获取 ${sessionCookie.email} 登录的 cookie`); console.log(`成功获取 ${email} 登录的 cookie`);
} else { } else {
console.error(`未能获取到 session #${session.configIndex} 有效登录的 cookie`); console.error(`未能获取到 session #${session.configIndex} 有效登录的 cookie`);
await browser.close(); await browser.close();
@@ -200,20 +199,31 @@ class YouProvider {
async waitForManualLogin(page) { async waitForManualLogin(page) {
return new Promise((resolve) => { return new Promise((resolve) => {
const checkLoginStatus = async () => { const checkLoginStatus = async () => {
const isLoggedIn = await page.evaluate(() => { const loginInfo = await page.evaluate(() => {
return !!document.querySelector('button[aria-label="User menu"]'); const userProfileElement = document.querySelector('[data-testid="user-profile-button"]');
if (userProfileElement) {
const emailElement = userProfileElement.querySelector('.sc-9d7dc8d-4');
return emailElement ? emailElement.textContent : null;
}
return null;
}); });
if (isLoggedIn) {
console.log("检测到登录成功"); if (loginInfo) {
resolve(); console.log(`检测到自动登录成功: ${loginInfo}`);
// 立即获取 cookie
const cookies = await page.cookies();
const sessionCookie = this.extractSessionCookie(cookies);
resolve({ loginInfo, sessionCookie });
} else { } else {
setTimeout(checkLoginStatus, 1000); setTimeout(checkLoginStatus, 1000);
} }
}; };
page.on('request', request => { page.on('request', async (request) => {
if (request.url().includes('https://you.com/api/instrumentation')) { if (request.url().includes('https://you.com/api/instrumentation')) {
resolve(); const cookies = await page.cookies();
const sessionCookie = this.extractSessionCookie(cookies);
resolve({ loginInfo: null, sessionCookie });
} }
}); });