想用 Puppeteer 登录 CSDN,如果自动再用 Puppeteer 登录一遍太麻烦了吧,所以想用 cookie 进入博客首页,这样就是已登录状态,结果试了好多办法都不行。到底是版本问题,还是怎么,这些文章到底怎么回事。现在提供一种可行的办法。
找出网页Cookie
一般我们会用F12查看 cookie
如果少量,只需要其中一两个,这方法还算好。
如果还不满足,推荐使用这个插件 EditThisCookie ,一键获取所有 cookie ,同时支持复制所有 cookie 。
Puppeteer 访问网页使用 Cookie
先来看看我 cookie 报错的用法
前面使用网上别人的方法时一直会报错
(network.deletecookies) invalid parameters name string value expected
报错位置是这行代码 await page.setCookie(cookie)
在 这里 搜到,好像我传入 cookie 的参数形式有问题,应该是字符串,而我传的是数组,这样子传入不行
// const cookies = [{ // 'name': 'UserName', // 'value': 'xxx' // },{ // 'name': 'UserInfo', // 'value': 'xxx' // }];
正确方法如下:先看一组 cookie
const cookies = {'url': 'https://blog.csdn.net/', 'name': 'UserName', 'value': 'xxx'}
await page.setCookie(cookies)
这样子使用是没问题的,不会报错。但是我的 cookie 不仅仅一组。有多套,有个办法就是如上,再构造一个 cookie2出来,然后再设置 set 。
const cookie1 = {'url': 'https://blog.csdn.net/', 'name': 'username1', 'value': 'xxx'} const cookie2 = {'url': 'https://blog.csdn.net/', 'name': 'username2', 'value': 'xxx'} await page.setCookie(cookie1) await page.setCookie(cookie2)
还有种办法就是用文件读取方式。用刚才的插件,将刚才的插件将 cookie 复制出来,然后创建文件整理成如下图,不一定所有都需要,只留下自己需要的,这里我拿我用的其中两个举例。
将文件放到 module 下,然后用如下代码
const { cookie1, cookie2 , cookie3, cookie4, cookie5, cookie6, cookie7, cookie8, cookie9} = require('./cookie'); const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch({ headless: false, args: ['--start-maximized'], }); const page = await browser.newPage() await page.setCookie(cookie1) await page.setCookie(cookie2) await page.setCookie(cookie3) await page.setCookie(cookie4) await page.setCookie(cookie5) await page.setCookie(cookie6) await page.setCookie(cookie7) await page.setCookie(cookie8) await page.setCookie(cookie9) await page.setViewport({ width: 1920, height: 1080 }); await page.goto('https://blog.csdn.net/') // await browser.close() })();
现在再进入网站,好像已经处于登录状态了。
好的,希望能帮到你。
嗨,我按照你的方式进行操作,依旧无法显示登陆,而且写入cookie成功,可以在页面跳转后读取的到,但是就是无法显示登陆状态
大兄弟,很抱歉,这玩意我忘的差不多了
非常非常非常好使,感謝.那個擴展很強大,能導出完整的json cookies信息.
参考国外教程, 觉得还是pptr上登录一遍,获取到cookies存储起来靠谱些:
https://help.apify.com/en/articles/1640711-how-to-log-in-to-a-website-using-puppeteer
不行啊