PHP笔记网

革命尚未成功,同志仍须努力下载JDK17

作者:Albert.Wen  添加时间:2023-07-13 01:03:51  修改时间:2024-05-22 11:01:33  分类:02.数据采集/桌面自动化  编辑

问题描述

使用 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} 代表当前登录的用户名
});