node.js - 如何在 Node.js Puppeteer Headless=false Chromium 浏览器中清除历史记录(清除浏览数据)

标签 node.js google-chrome chromium puppeteer

我正在尝试通过以下代码使用 node.js puppeteer 删除 headless=false 浏览器中的历史记录,但方法无效。

await page.goto('chrome://settings/clearBrowserData');
await page.keyboard.down('Enter');

第二个代码

await page.keyboard.down('ControlLeft');
await page.keyboard.down('ShiftLeft');
await page.keyboard.down('Delete');
await page.keyboard.down('Enter');

我尝试使用 .evaluateHandle().click()也有功能,但它们都不起作用。如果有人知道如何用 puppeteer 清除历史记录,请回答我。

最佳答案

无法像那样导航到浏览器设置页面 (chrome://...)。

你有三个选择:

  • 使用隐身窗口(在 puppeteer 中称为上下文)
  • 使用 Chrome DevTools 协议(protocol)中的命令清除历史记录。
  • 重启浏览器


  • 选项 1:使用隐身窗口

    要清除历史记录(包括 cookie 和任何数据),您可以使用名为 BrowserContext 的“隐身”窗口。在 puppeteer 师。

    通过调用 browser.createIncognitoBrowserContext() 创建上下文.引自 docs :

    Creates a new incognito browser context. This won't share cookies/cache with other browser contexts.



    示例

    const context = await browser.createIncognitoBrowserContext();
    const page = await context.newPage();
    
    // Execute your code
    await page.goto('...');
    // ...
    
    await context.close(); // clear history
    

    此示例将创建一个新的隐身浏览器窗口并在其中打开一个页面。从那里你可以使用page像往常一样处理。

    要清除其中的任何 cookie 或历史记录,只需通过 context.close() 关闭上下文即可。 .

    选项 2:使用 Chrome DevTools 协议(protocol)清除历史记录

    如果你不能依赖使用上下文(因为它们在使用扩展时不受支持),你可以使用 Chrome DevTools Protocol清除浏览器的历史记录。它具有在 puppeteer 中未实现的功能来重置 cookie 和缓存。您可以通过使用 CDPSession 直接使用 Chrome DevTools 协议(protocol)中的函数。 .

    示例

    const client = await page.target().createCDPSession();
    await client.send('Network.clearBrowserCookies');
    await client.send('Network.clearBrowserCache');
    

    这将指示浏览器通过直接调用 Network.clearBrowserCookies 来清除 cookie 和缓存。和 Network.clearBrowserCache .

    选项 3:重新启动浏览器

    如果这两种方法都不可行,您总是可以通过关闭旧实例并创建一个新实例来重新启动浏览器。这将清除所有存储的数据。

    关于node.js - 如何在 Node.js Puppeteer Headless=false Chromium 浏览器中清除历史记录(清除浏览数据),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55871650/

    相关文章:

    node.js - 如何在IIS上的nodeJS中获取客户端ip

    javascript - 上传和显示图像 - ReactJs、Node.js

    android - 在 Chrome 自定义选项卡中检测到内存泄漏

    ruby - node-webkit 等同于 sinatra?

    javascript - Google Chrome 扩展程序持久性

    node.js - 任何易于扩展的基于 Web 的 node.js 文件管理器?

    javascript - Function.toString() 不尊重闭包范围

    javascript - 制作 Chrome 扩展程序下载文件

    sqlite - Chrome 的时间戳是什么格式?

    c++ - 如何使用 cef_menu_handler 创建自己的菜单?