diff --git a/packages/ui/src/common/utils/cookie.ts b/packages/ui/src/common/utils/cookie.ts new file mode 100644 index 0000000..e3f0d3e --- /dev/null +++ b/packages/ui/src/common/utils/cookie.ts @@ -0,0 +1,27 @@ +export const checkCookieListFormat = (cookies: Array>) => { + const allExpectKeySet = new Set([ + 'name', + 'value', + 'domain', + 'path', + 'secure', + 'session', + 'httpOnly' + ]) + return Array.isArray(cookies) && + cookies.length && + cookies.every((it) => { + const currentOwnedKeySet = new Set(Object.keys(it)) + if (currentOwnedKeySet.size < allExpectKeySet.size) { + return false + } + + const allExpectKeyArr = [...allExpectKeySet] + for (let i = 0; i < allExpectKeyArr.length; i++) { + if (!currentOwnedKeySet.has(allExpectKeyArr[i])) { + return false + } + } + return true + }) +} diff --git a/packages/ui/src/main/window/mainWindow.ts b/packages/ui/src/main/window/mainWindow.ts index 1c849fa..5ca2e03 100644 --- a/packages/ui/src/main/window/mainWindow.ts +++ b/packages/ui/src/main/window/mainWindow.ts @@ -9,13 +9,12 @@ import { configFileNameList, readConfigFile, writeConfigFile, - - storageFileNameList, readStorageFile, writeStorageFile } from '@geekgeekrun/geek-auto-start-chat-with-boss/runtime-file-utils.mjs' import { ChildProcess } from 'child_process' import * as JSONStream from 'JSONStream' +import { checkCookieListFormat } from '../../common/utils/cookie' import { DOWNLOAD_ERROR_EXIT_CODE, getAnyAvailablePuppeteerExecutable @@ -93,6 +92,11 @@ export function createMainWindow(): void { ]) }) + ipcMain.handle('read-storage-file', async (ev, payload) => { + ensureStorageFileExist() + return await readStorageFile(payload.fileName) + }) + ipcMain.handle('write-storage-file', async (ev, payload) => { ensureStorageFileExist() @@ -264,6 +268,11 @@ export function createMainWindow(): void { } }) + ipcMain.handle('check-boss-zhipin-cookie-file', () => { + const cookies = readStorageFile('boss-cookies.json') + return checkCookieListFormat(cookies) + }) + mainWindow!.once('closed', () => { mainWindow = null }) diff --git a/packages/ui/src/renderer/src/features/WaitForLoginDialog/index.vue b/packages/ui/src/renderer/src/features/WaitForLoginDialog/index.vue index 04c36a5..440e20c 100644 --- a/packages/ui/src/renderer/src/features/WaitForLoginDialog/index.vue +++ b/packages/ui/src/renderer/src/features/WaitForLoginDialog/index.vue @@ -2,28 +2,38 @@ - + 由于您是首次使用本程序,或者您之前使用的Boss直聘账号登录状态失效,因此您需要重新获取登录凭证。 -
- 如果您了解Cookie如何获取Cookie:请打开您已登录过Boss直聘的浏览器,使用 +
+ 如果您了解如何获取Cookie、了解有效的Cookie格式,可以直接在下方输入框中进行编辑。
+ 手动编辑较为麻烦,建议您打开已登录过Boss直聘的浏览器,使用 EditThisCookie 扩展程序/插件EditThisCookie 扩展程序 - 进行复制,然后粘贴在下方输入框中。
+ 复制Cookie,然后粘贴在下方输入框中。
格式为被序列化为JSON的数组,不含两侧引号。

-
如果您不了解相关概念,请按照以下步骤进行操作:
+
+ 如果您不了解Cookie相关概念,或者不能访问Chrome扩展程序商店下载EditThisCookie来获取Cookie,请按照以下步骤进行操作: +
  1. 按照正常流程,通过 短信验证码/二维码/微信小程序 登录您的Boss直聘账号
  2. +
  3. 接下来将自动进行一些页面跳转,最终将会停留在首页
  4. - 如果流程顺利,登录后预计5-10秒内,您将可以在下方输入框看到您的Cookie + 登录后预计5-10秒内(具体取决于您的网速),您的Cookie将被自动填入下方输入框。
    我已完成登录,但Cookie一直没出现?
    @@ -94,6 +105,7 @@ @@ -102,10 +114,14 @@