NodeJS 将userDataDir传递给Puppeteer并不能像普通Chrome一样访问正确保存的登录信息

gcmastyq  于 2023-08-04  发布在  Node.js
关注(0)|答案(1)|浏览(185)

我想使用Puppeteer(v20.8.0)来控制与我的常规Chrome浏览器相同的配置文件/会话。具体来说,我希望我登录的网站在打开新的 puppet 师示例时保持登录状态。
userDataDir传递给Puppeteer无法按预期工作。
我能够打开一个 puppet 师Chrome示例,该示例肯定具有书签和个人资料图片,甚至与非 puppet 师生成的Chrome相同的标签。Puppeteer衍生的Chrome示例也有“Chrome正在被自动测试软件控制”的消息。
然而,在 puppet 师衍生的Chrome浏览器上,我没有登录任何网站,我通常在非 puppet 师衍生的Chrome浏览器上登录。所以这就像饼干,存储,或任何工作不正常或不被 puppet 师或东西使用。

const os = require('os');
const username = os.userInfo().username;
const workingExePath = '/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome';
const workingDataBaseDir = `/Users/${username}/Library/Application\ Support/Google/Chrome`

const browser = await puppeteer.launch({
  headless: false,
  executablePath: workingExePath, // supply the user-specific path here
  defaultViewport: {
    width: 1280,
    height: 720
  },
  userDataDir: workingDataBaseDir, // supply the user-specific path here

  args: [
    '--mute-audio', // this mutes the entire browser, not just one tab
    '--profile-directory=Default',
  ]
});

const page = await browser.newPage();
await page.goto('https://mail.google.com/mail/u/0/#inbox');

字符串
x1c 0d1x的数据
为了看看我是否能有更多的运气,我手动复制userDataDir/Users/${username}/Library/Application\ Support/Google/Chrome_(只是在末尾有一个下划线),并尝试使用这个新的文件夹与 puppet ,但它仍然不起作用。

hmtdttj4

hmtdttj41#

几点建议:

  • 对我来说,当我将配置文件位置指向我运行它的本地文件夹(./)时,这段代码工作得更好。配置文件和cookie工作正常,而在旧位置,它非常挑剔,有时会抛出“无法启动浏览器进程”错误,有时不会正确拾取cookie。
  • 你可以通过在浏览器栏中输入chrome://version/来查看最终生效的真实的位置,有时它并不是我想象的那样。
  • Gmail本身可能有额外的傀儡检测措施,即使您的个人资料运行良好并保留cookie。可能需要Chromium或不同的浏览器仔细调整,以看起来真实的。
  • 你可以尝试的另一件事(取决于你想要的设置)是连接到一个已经配置了配置文件的实时浏览器示例,并像这样运行:
const browser = await puppeteer.connect({
      browserURL: 'http://localhost:9222'
    })

字符串

相关问题