您现在的位置是:首页 > 新兴行业 > 大数据大数据

PC程序(Electron)开发如何注入Cookie

2021-06-05 09:12:42大数据人已围观

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

前情

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

业务逻辑

  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')

文章来源:https://blog.csdn.net/idler8/article/details/117486641

Tags:软件开发 Cookie 

很赞哦! ()

随机图文

文章评论

留言与评论(共有 0 条评论)
   
验证码:

本栏推荐

站点信息

  • 文章统计247968篇文章
  • 浏览统计18356次浏览
  • 评论统计1个评论
  • 标签管理标签云
  • 统计数据:统计代码
  • 微信公众号:扫描二维码,关注我们