前情

有网友在开发一个桌面端刷单软件,需要保持网站的登录状态,省去每次输入账户密码。

业务逻辑

  1. 首先载入目标网站,并手动登陆。

    const { BrowserWindow } = require('electron');
    const win = new BrowserWindow({ width: 800, height: 600 })
    win.loadURL('http://github.com')
    
  2. 然后根据不同的安全验证方式,使用Electron的通信功能,将登陆信息(CookielocalStoragesessionStorage等)储存到文件缓存。
    const fs = require('fs-extra');
    const { session } = win.webContents;
    session.cookies.get({}).then(cookies => {fs.outputJson('cookies.json', cookies);
    });
    
  3. 每次打开时重新载入缓存的登陆信息。
    const { session } = win.webContents;
    const { cookies } = session;
    // 等待cookie初始化完成
    function waitCookieInit(){return new Promise(function(resolve){setTimeout(resolve, 3000);});
    };
    // 替换cookie
    function cookieReplace(cookies,cookie){return cookies.remove(cookie.url, cookie.name).then(() => {return cookies.set(cookie);})
    };
    //目标值
    const values = [{ url: 'https://github.com', name: 'cookie1',value: 'cookieValue',domain: '.github.com', expirationDate: 99999999999}
    ];
    //执行批量替换
    waitCookieInit().then(() => {const promises = values.map(cookie => cookieReplace(cookies, cookie));return Promise.all(promises).then(()=>{// 设置成功}).catch(()=>{// 设置失败})
    });
    
  4. 检查登陆状态是否有效,无效则删除缓存回到第一步。

补充

相对于该业务,session模块还有更多高级用法,可以参考官方网站。
传送门:https://www.electronjs.org/docs/api/session

有关多个窗口session隔离

const { BrowserWindow } = require('electron');
const win = new BrowserWindow({ width: 800, height: 600, webPreferences: { partition: 'persist:name' // 将name改为业务session名称}
})
win.loadURL('http://github.com')

PC程序(Electron)开发如何注入Cookie相关推荐

  1. electron 开发程序禁用gpu渲染

    一个简单的electron开发的客户端启动会有一下进程 进入gpu渲染方法 app.disableHardwareAcceleration(),这个方法必须在app ready之前调用. ***.ex ...

  2. 小满Vue3第三十九章(Vue开发桌面程序Electron)

    建议视频教程小满Vue3(第三十九章 electron桌面程序)_哔哩哔哩_bilibili Electron官网Electron | Build cross-platform desktop app ...

  3. 【微信小程序-原生开发】实用教程06-轮播图、分类页签 tab 、成员列表(含Tdesign升级,切换调试基础库,设置全局样式,配置组件按需注入,添加图片素材,wx:for,生命周期 onLoad)

    开始前,请先完成首页的开发,详见 [微信小程序-原生开发]实用教程05-首页(含自定义调试模式.插入图片.图文排版.底部留白.添加本地图片) https://blog.csdn.net/weixin_ ...

  4. 使用electron开发桌面级小程序自动部署系统

    那一天我二十一岁,在我一生的黄金时代,我有好多奢望.我想爱,想吃,还想在一瞬间变成天上半明半暗的云,后来我才知道,生活就是个缓慢受锤的过程,人一天天老下去,奢望也一天天消逝,最后变得像挨了锤的牛一样. ...

  5. 使用 Vue 和 Electron 开发一款简单的 Markdown 编辑器

    2021SC@SDUSC 本文并不涉及自己设计一套 Markdown 渲染组件的部分,Markdown 渲染组件可通过 marked 和 highlight.js 自行实现.但本文重点在于如何使用 E ...

  6. electron开发windows驱动程序

    electron开发windows驱动程序 最近公司需要开发一个windows下的白名单的软件,由于之前有过web方面的开发经验,就想pc端是不是也可以是不是也可以将web程序打包成跨平台的安装包.然 ...

  7. 程序员开发必备英语基础–狂神版

    程序员开发必备英语基础–狂神版 一.开发常用英语词汇排序 A array数组 accessible 可存取的 area面积 audio 音频 addition 加法 action 行动 arithme ...

  8. 第01课:Electron 开发的优势

    1.1 Node.js,一个让 JavaScript 从丑小鸭变成白天鹅的框架 可能很多读者会感到奇怪,本系列课程主要介绍的是 Electron,为什么一开始要提到 Node.js 和 JavaScr ...

  9. access突然需要登录_早知道早好,微信小程序登录开发需要注意的事项

    最近公司要做一个企业微信的小程序,方便企业内的成员来登录,以便一些公司内的业务,只限于公司内的成员来操作,因为有微信小程序的开发经验,所以先当作微信小程序来开发了! 首先来讲一下这个企业微信小程序与微 ...

最新文章

  1. svn的一些相关资料
  2. druid连接池_c3p0、dbcp、druid 三大连接池对比
  3. 跟恶意插件的较量:手工清除Orzhz广告程序
  4. 未来计算机会有多发达,人工智能到底有多强?未来人工智能会主宰世界?
  5. SQLi-LABS(11~20关详解)
  6. VS2010代码提示功能配置:Visual Assist X 10.7.1912.0
  7. js解码与编码是什么意思?
  8. java 快速读文件_java快速读取文件
  9. mysql 启动必须加-h_Windows 安装 nginx,MySQL 等软件并加入系统服务启动详细
  10. Linux 制作安装程序(rpm,deb)的几个心得
  11. Coursera | Introduction to Data Analytics(IBM) | Final Assignment
  12. forum.php 下载,PHPWind Forums
  13. 【源码】MATLAB的专业绘图工具
  14. 快速排序 C语言代码 空间复杂度时间复杂度
  15. java中输出值保留四位小数_JAVA基础笔记(1)
  16. Android8.1.0安装Xposed框架
  17. 电子警察位置【收藏】
  18. AppScan的许可证
  19. 一款非常萌的桌面工具 --- Bongo Cat Mver 附使用教程
  20. 制造企业如何通过APS智能排产进行生产计划规划?

热门文章

  1. 《流浪地球》程序员破解行星发动机到底靠不靠谱
  2. (三)基于Multisim的超外差接收系统:中频放大器的设计
  3. 微信小程序-JAVA实现微信支付功能(微信支付2.0)
  4. HTML5新控件 - 颜色选择器
  5. linux 盘符 路径,linux下powerpath对盘与更改盘符名
  6. docker构建hadoop镜像、docker-compose启动hdfs
  7. 政府的工作流千变万化怎么办(2)
  8. java 输入一串字符统计大写字母个数小写字母个数及特殊符号并输出
  9. 经典动态规划OJ题目:接雨水or接青豆(多种方法,附详详细思维过程、解析及源码)
  10. sklearn库主要模块功能简介