close browser when find bad cookie

This commit is contained in:
geekgeekrun
2026-04-05 15:31:58 +08:00
parent dd76a856e8
commit 60ac324603
4 changed files with 28 additions and 6 deletions
@@ -699,7 +699,7 @@ async function toRecommendPage (hooks) {
hooks.pageLoaded?.call() hooks.pageLoaded?.call()
let userInfoResponse = await userInfoPromise let userInfoResponse = await userInfoPromise
await hooks.userInfoResponse?.promise(userInfoResponse) await hooks.userInfoResponse?.promise({ userInfoResponse, browser })
if (userInfoResponse?.code !== 0) { if (userInfoResponse?.code !== 0) {
autoStartChatEventBus.emit('LOGIN_STATUS_INVALID', { autoStartChatEventBus.emit('LOGIN_STATUS_INVALID', {
userInfoResponse userInfoResponse
@@ -1713,7 +1713,7 @@ export async function mainLoop (hooks) {
//set cookies //set cookies
const bossCookies = readStorageFile('boss-cookies.json') const bossCookies = readStorageFile('boss-cookies.json')
const bossLocalStorage = readStorageFile('boss-local-storage.json') const bossLocalStorage = readStorageFile('boss-local-storage.json')
await hooks.cookieWillSet?.promise(bossCookies) await hooks.cookieWillSet?.promise({ cookies: bossCookies, browser })
for(let i = 0; i < bossCookies.length; i++){ for(let i = 0; i < bossCookies.length; i++){
if (Object.hasOwn(bossCookies[i], 'sameSite')) { if (Object.hasOwn(bossCookies[i], 'sameSite')) {
bossCookies[i].sameSite = 'unspecified' bossCookies[i].sameSite = 'unspecified'
+1 -1
View File
@@ -116,7 +116,7 @@ export default class SqlitePlugin {
) )
hooks.userInfoResponse.tapPromise( hooks.userInfoResponse.tapPromise(
"SqlitePlugin", "SqlitePlugin",
async (userInfoResponse) => { async ({ userInfoResponse } = {}) => {
if (!userInfoResponse || userInfoResponse.code !== 0) { if (!userInfoResponse || userInfoResponse.code !== 0) {
return; return;
} }
@@ -8,9 +8,14 @@ import { readStorageFile } from '@geekgeekrun/geek-auto-start-chat-with-boss/run
const runRecordId = minimist(process.argv.slice(2))['run-record-id'] ?? null const runRecordId = minimist(process.argv.slice(2))['run-record-id'] ?? null
export class CookieInvalidHandlePlugin { export class CookieInvalidHandlePlugin {
apply(hooks) { apply(hooks) {
hooks.cookieWillSet.tapPromise('CookieInvalidHandlePlugin', async (cookies) => { hooks.cookieWillSet.tapPromise('CookieInvalidHandlePlugin', async ({ cookies, browser } = {}) => {
let isValid = checkCookieListFormat(cookies) let isValid = checkCookieListFormat(cookies)
while (!isValid) { while (!isValid) {
try {
browser && (await browser.close())
} catch (err) {
console.log(`close browser failed`, err)
}
try { try {
// popup login dialog, then update login status // popup login dialog, then update login status
await loginWithCookieAssistant() await loginWithCookieAssistant()
@@ -54,7 +59,7 @@ export class CookieInvalidHandlePlugin {
} }
}) })
}) })
hooks.userInfoResponse.tapPromise('CookieInvalidHandlePlugin', async (userInfoResponse) => { hooks.userInfoResponse.tapPromise('CookieInvalidHandlePlugin', async ({ userInfoResponse, browser } = {}) => {
if (userInfoResponse.code === 0) { if (userInfoResponse.code === 0) {
sendToDaemon({ sendToDaemon({
type: 'worker-to-gui-message', type: 'worker-to-gui-message',
@@ -70,6 +75,11 @@ export class CookieInvalidHandlePlugin {
}) })
return return
} }
try {
browser && (await browser.close())
} catch (err) {
console.log(`close browser failed`, err)
}
try { try {
// popup login dialog, then update login status // popup login dialog, then update login status
await loginWithCookieAssistant() await loginWithCookieAssistant()
@@ -89,7 +89,9 @@ const onlyRemindBossWithoutBlockCompanyName =
readConfigFile('boss.json').autoReminder?.onlyRemindBossWithoutBlockCompanyName ?? readConfigFile('boss.json').autoReminder?.onlyRemindBossWithoutBlockCompanyName ??
!!blockCompanyNameRegExp !!blockCompanyNameRegExp
const openContentSource = readConfigFile('boss.json').autoReminder?.openContentSource ?? OPEN_CONTENT_SOURCE.CONSTANT_CONTENT const openContentSource =
readConfigFile('boss.json').autoReminder?.openContentSource ??
OPEN_CONTENT_SOURCE.CONSTANT_CONTENT
const constantOpenContent = (() => { const constantOpenContent = (() => {
let constantOpenContent = readConfigFile('boss.json').autoReminder?.constantOpenContent ?? '' let constantOpenContent = readConfigFile('boss.json').autoReminder?.constantOpenContent ?? ''
if (constantOpenContent?.trim?.()) { if (constantOpenContent?.trim?.()) {
@@ -302,6 +304,11 @@ const mainLoop = async () => {
let bossCookies = readStorageFile('boss-cookies.json') let bossCookies = readStorageFile('boss-cookies.json')
let cookieCheckResult = checkCookieListFormat(bossCookies) let cookieCheckResult = checkCookieListFormat(bossCookies)
while (!cookieCheckResult) { while (!cookieCheckResult) {
try {
browser && (await browser.close())
} catch (err) {
console.log(`close browser failed`, err)
}
try { try {
await loginWithCookieAssistant() await loginWithCookieAssistant()
bossCookies = readStorageFile('boss-cookies.json') bossCookies = readStorageFile('boss-cookies.json')
@@ -357,6 +364,11 @@ const mainLoop = async () => {
// #region // #region
if (currentPageUrl.startsWith('https://www.zhipin.com/web/user/')) { if (currentPageUrl.startsWith('https://www.zhipin.com/web/user/')) {
writeStorageFile('boss-cookies.json', []) writeStorageFile('boss-cookies.json', [])
try {
browser && (await browser.close())
} catch (err) {
console.log(`close browser failed`, err)
}
try { try {
// popup login dialog, then update login status // popup login dialog, then update login status
await loginWithCookieAssistant() await loginWithCookieAssistant()