赞
踩
鉴权原理和cookie、session认证差不多,不多说直接上图
token一般分为三部分:头部、载体、签名
正常页面:
cookie初次唤醒页面(非必现):
在此之前,其实我并不知道JWT这个概念,但是大概知道应该是鉴权没通过的导致的,并且看到页面报错
初步断定这个字段应该是服务端生成的,这就是问题所在,尝试将rpa登录后中的token保存下来,再塞到cookie登录的环节中,刷新页面发现是可以的,大功告成。
/**
* 获取上传token
*/
async upload_token() {
var token_data = await this.page.evaluate(() => {
const token_data = {};
for (let i = 0; i < localStorage.length; i++) {
const key = localStorage.key(i);
token_data[key] = localStorage.getItem(key);
}
return token_data
});
fs.writeFileSync("token.json", JSON.stringify(token_data))
console.log("------token上传成功------")
}
/** * cookie登录 */ async cookie_login() { console.log("------开始cookie登录------") await this.access_login_page(); await this.page.deleteCookie(); // 添加cookie await this.page.setCookie(cookies_array.at(0), cookies_array.at(1)); await this.page.goto(cfg.login_page_url); await this.sleep(1000 * 10) for (var i = 0; i < 3; i++) { if (await this.page.$(cfg.top_navigtor_locator)) { break } console.log("第%d次尝试刷新页面", i) // 添加token await this.page.evaluate((key, value) => { localStorage.setItem(key, value); }, "dunm_data", cookies_array.at(2)["dunm_data"]) await this.page.reload() await this.sleep(1000 * 5) } }
篇外话:入职新公司一周多了,上面是刚做的就随手记录下,平常主要用nodejs的puppeteer做爬虫,然后还会有接口的开发,涉及koa框架的使用,其他的,怎么说呢,之前没接触过先学完…
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。