在项目开发过程中用到了多账号保持登录状态,可以来回切换,并且保留一段时间不掉线的要求,试了一些方法,最后通过electron自带的隔离实现的。因为公司保密要求,这里只做简单的内容分享,我把代码简单描述下:
先在主进程中创建一个新的 BrowserWindow 实例,用于加载网页,然后用 session.partition 来创建一个隔离的会话分区,以便 Cookie可以在该分区中独立存储。在渲染进程中,用webFrame.setSpellCheckProvider 方法来设置 Cookie 分区,以确保 Cookie 在正确的分区中使用。然后在网页中,可以通过 document.cookie 来读取和设置 Cookie。
下面是一个示例代码,展示了如何使用 Electron 实现 Cookie 隔离:

// 主进程代码
const { app, BrowserWindow, session } = require('electron')

app.whenReady().then(() => {
  const mainWindow = new BrowserWindow()

  // 创建隔离的会话分区
  const partition = 'cookiePartition'
  const ses = session.fromPartition(partition)

  // 在渲染进程中设置 Cookie 分区
  mainWindow.webContents.session.setSpellCheckProvider(partition, {
    spellCheck: (text) => {
      // 自定义的 Cookie 分区逻辑
      // 可以根据自己的需求进行处理
      return true
    }
  })

  mainWindow.loadURL('https://example.com')
})

// 渲染进程代码
// 无需特殊处理,可以正常使用 document.cookie

在这个示例中,创建了一个名为 cookiePartition 的隔离会话分区,并在渲染进程中设置了 Cookie 分区。在渲染进程中,可以像平常一样使用 document.cookie 来读取和设置 Cookie,而这些 Cookie 将被存储在隔离的会话分区中。举例很简单,通俗易懂!!!

更多推荐