我正在尝试通过以下代码使用 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://...
)。
你有三个选择:
选项 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/