puppeteer配置了userDataDir仍然不能保存cookie

在不配置executablePath的情况下,puppeteer默认的浏览器是npm库自带的chromium,经测试chromium是无法设置cookie的,所以即便设置了userDataDir,用户登录之后,cookie数据已经保存到了userDataDir目录中,但是在此启动chromium,用户依然是未登录状态。解决方法是把浏览器换成Chrome或者Chrome Canary。

1
2
3
4
5
6
7
const browser = await puppeteer.launch({
// Ask puppeteer to run Chrome Canary
executablePath: '/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary',
// executablePath:'/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome',
headless: false,
userDataDir: datadir,
});

上面这个是在Mac环境下指定Chrome路径。其它系统指定Chrome路径的方法见:User Data Directory