浅谈Electron,如何操作cookies、Storage、http请求

311 阅读2分钟

介绍

前一篇文章简单讲解了下Electron开发的相关知识。

本篇文章讲解Electron加载第三方网站后,如何进行二开的操作。主要讲解如何获取cookies信息、获取Storage信息,如何拦截http请求并串改信息,如何拦截window.open事件?

如何获取cookies信息

基于上一篇浅谈Electron,前端开发的第一个桌面应用的描述,我们知道,应用分主进程(Main Process)和 渲染进程(Renderer Process)。

在渲染进程里面,是可以操作相关域名下的cookies的。注意是【相关域名】,但是,实际的网站:如美团,它一个网站下面是存在多个域名,且存储着不同的cookies,我们也不知道这些cookies何时使用,所以如何获取全量cookies?

在主进程中存在如下对象:

image.png

这里包含所有的cookies。

如何获取Storage信息

在Electron中,是无法直接获取Storage的,必须让渲染进程(Renderer Process),通知告知主进程。

image.png

那么在主进程中,就能获取相关的Storage信息。

看着很简单,其实需要做很多的前置处理,如:网站是否加载完成,我们需要的Storage信息是否已经存储?等等。

举例:

image.png

在上述举例中,在渲染进程中,被通知网站加载完成,则开始进行相关的操作。

如何拦截http请求

在Electron中,拦截http请求是绕不开的需求,实现逻辑很简单如下:

image.png

看代码,超简单的。就可以对请求返回进行相关的串改和操作。

如何拦截window.open事件

为何要讲这个,因为前面讲的操作,在open一个窗体后,有可能因为域名的不一致,导致所有操作无效,所以可以通过这个拦截,把相关的信息,保留并注入到新的窗体中。上代码:

image.png

就是这个win.webContents.setWindowOpenHandler事件完成了新窗体的拦截。

在操作中发现,浏览器下载,其实也是打开一个新窗体。