问题描述
使用 Puppeteer 启动的 Chrome 浏览器,默认是无法使用本地数据的,如表单项、密码、Cookies 等。
导致关闭浏览器后,重新打开页面需要重新登录,即 无法保存先前的登录状态 !
原因分析
这是由于 Puppeteer 在启动 Chrome 时,默认将命令行参数 --user-data-dir
(该参数用于设置用户数据目录)设为了一个“临时目录”,如下图所示:
在 Puppeteer 启动的 Chrome 浏览器的地址栏中输出 chrome://version
并回车,就可以打开上图这个界面。
查看默认的 用户数据目录
手动打开一个 Chrome 浏览器,在地址栏中输出 chrome://version
并回车,找到 Profile Path:
后面的路径,去掉最后的 \Default
,就是默认的用户数据目录,它一般都是:C:\Users\Your_User_Name\AppData\Local\Google\Chrome\User Data
。
解决方案:将默认的用户数据目录设为 Puppeteer 启动的 Chrome 的用户数据目录
代码如下:
await puppeteer.launch({ args : [ '--disable-web-security --user-data-dir', // 解除浏览器禁止跨域访问的限制 ], 'userDataDir' : 'C:/Users/wenjianbao/AppData/Local/Google/Chrome/User Data' // 设置用户数据目录,默认linux 是在 ~/.config 目录,window 默认在 C:\Users{USER}\AppData\Local\Google\Chrome\User Data, 其中 {USER} 代表当前登录的用户名 });