介绍
前一篇文章简单讲解了下Electron开发的相关知识。
本篇文章讲解Electron加载第三方网站后,如何进行二开的操作。主要讲解如何获取cookies信息、获取Storage信息,如何拦截http请求并串改信息,如何拦截window.open事件?
如何获取cookies信息
基于上一篇浅谈Electron,前端开发的第一个桌面应用的描述,我们知道,应用分主进程(Main Process)和 渲染进程(Renderer Process)。
在渲染进程里面,是可以操作相关域名下的cookies的。注意是【相关域名】,但是,实际的网站:如美团,它一个网站下面是存在多个域名,且存储着不同的cookies,我们也不知道这些cookies何时使用,所以如何获取全量cookies?
在主进程中存在如下对象:
这里包含所有的cookies。
如何获取Storage信息
在Electron中,是无法直接获取Storage的,必须让渲染进程(Renderer Process),通知告知主进程。
那么在主进程中,就能获取相关的Storage信息。
看着很简单,其实需要做很多的前置处理,如:网站是否加载完成,我们需要的Storage信息是否已经存储?等等。
举例:
在上述举例中,在渲染进程中,被通知网站加载完成,则开始进行相关的操作。
如何拦截http请求
在Electron中,拦截http请求是绕不开的需求,实现逻辑很简单如下:
看代码,超简单的。就可以对请求返回进行相关的串改和操作。
如何拦截window.open事件
为何要讲这个,因为前面讲的操作,在open一个窗体后,有可能因为域名的不一致,导致所有操作无效,所以可以通过这个拦截,把相关的信息,保留并注入到新的窗体中。上代码:
就是这个win.webContents.setWindowOpenHandler事件完成了新窗体的拦截。
在操作中发现,浏览器下载,其实也是打开一个新窗体。