PC程序(Electron)开发如何注入Cookie
前情
有网友在开发一个桌面端刷单软件,需要保持网站的登录状态,省去每次输入账户密码。
业务逻辑
- 首先载入目标网站,并手动登陆。
const { BrowserWindow } = require('electron'); const win = new BrowserWindow({ width: 800, height: 600 }) win.loadURL('http://github.com')
- 然后根据不同的安全验证方式,使用Electron的通信功能,将登陆信息(
Cookie
、localStorage
、sessionStorage
等)储存到文件缓存。const fs = require('fs-extra'); const { session } = win.webContents; session.cookies.get({}).then(cookies => {fs.outputJson('cookies.json', cookies); });
- 每次打开时重新载入缓存的登陆信息。
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(()=>{// 设置失败}) });
- 检查登陆状态是否有效,无效则删除缓存回到第一步。
补充
相对于该业务,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相关推荐
- electron 开发程序禁用gpu渲染
一个简单的electron开发的客户端启动会有一下进程 进入gpu渲染方法 app.disableHardwareAcceleration(),这个方法必须在app ready之前调用. ***.ex ...
- 小满Vue3第三十九章(Vue开发桌面程序Electron)
建议视频教程小满Vue3(第三十九章 electron桌面程序)_哔哩哔哩_bilibili Electron官网Electron | Build cross-platform desktop app ...
- 【微信小程序-原生开发】实用教程06-轮播图、分类页签 tab 、成员列表(含Tdesign升级,切换调试基础库,设置全局样式,配置组件按需注入,添加图片素材,wx:for,生命周期 onLoad)
开始前,请先完成首页的开发,详见 [微信小程序-原生开发]实用教程05-首页(含自定义调试模式.插入图片.图文排版.底部留白.添加本地图片) https://blog.csdn.net/weixin_ ...
- 使用electron开发桌面级小程序自动部署系统
那一天我二十一岁,在我一生的黄金时代,我有好多奢望.我想爱,想吃,还想在一瞬间变成天上半明半暗的云,后来我才知道,生活就是个缓慢受锤的过程,人一天天老下去,奢望也一天天消逝,最后变得像挨了锤的牛一样. ...
- 使用 Vue 和 Electron 开发一款简单的 Markdown 编辑器
2021SC@SDUSC 本文并不涉及自己设计一套 Markdown 渲染组件的部分,Markdown 渲染组件可通过 marked 和 highlight.js 自行实现.但本文重点在于如何使用 E ...
- electron开发windows驱动程序
electron开发windows驱动程序 最近公司需要开发一个windows下的白名单的软件,由于之前有过web方面的开发经验,就想pc端是不是也可以是不是也可以将web程序打包成跨平台的安装包.然 ...
- 程序员开发必备英语基础–狂神版
程序员开发必备英语基础–狂神版 一.开发常用英语词汇排序 A array数组 accessible 可存取的 area面积 audio 音频 addition 加法 action 行动 arithme ...
- 第01课:Electron 开发的优势
1.1 Node.js,一个让 JavaScript 从丑小鸭变成白天鹅的框架 可能很多读者会感到奇怪,本系列课程主要介绍的是 Electron,为什么一开始要提到 Node.js 和 JavaScr ...
- access突然需要登录_早知道早好,微信小程序登录开发需要注意的事项
最近公司要做一个企业微信的小程序,方便企业内的成员来登录,以便一些公司内的业务,只限于公司内的成员来操作,因为有微信小程序的开发经验,所以先当作微信小程序来开发了! 首先来讲一下这个企业微信小程序与微 ...
最新文章
- svn的一些相关资料
- druid连接池_c3p0、dbcp、druid 三大连接池对比
- 跟恶意插件的较量:手工清除Orzhz广告程序
- 未来计算机会有多发达,人工智能到底有多强?未来人工智能会主宰世界?
- SQLi-LABS(11~20关详解)
- VS2010代码提示功能配置:Visual Assist X 10.7.1912.0
- js解码与编码是什么意思?
- java 快速读文件_java快速读取文件
- mysql 启动必须加-h_Windows 安装 nginx,MySQL 等软件并加入系统服务启动详细
- Linux 制作安装程序(rpm,deb)的几个心得
- Coursera | Introduction to Data Analytics(IBM) | Final Assignment
- forum.php 下载,PHPWind Forums
- 【源码】MATLAB的专业绘图工具
- 快速排序 C语言代码 空间复杂度时间复杂度
- java中输出值保留四位小数_JAVA基础笔记(1)
- Android8.1.0安装Xposed框架
- 电子警察位置【收藏】
- AppScan的许可证
- 一款非常萌的桌面工具 --- Bongo Cat Mver 附使用教程
- 制造企业如何通过APS智能排产进行生产计划规划?
热门文章
- 《流浪地球》程序员破解行星发动机到底靠不靠谱
- (三)基于Multisim的超外差接收系统:中频放大器的设计
- 微信小程序-JAVA实现微信支付功能(微信支付2.0)
- HTML5新控件 - 颜色选择器
- linux 盘符 路径,linux下powerpath对盘与更改盘符名
- docker构建hadoop镜像、docker-compose启动hdfs
- 政府的工作流千变万化怎么办(2)
- java 输入一串字符统计大写字母个数小写字母个数及特殊符号并输出
- 经典动态规划OJ题目:接雨水or接青豆(多种方法,附详详细思维过程、解析及源码)
- sklearn库主要模块功能简介