使用 Puppeteer 处理 Chrome 调试限制问题,可以通过一些方法来规避检测。
以下是一个基本的示例代码,展示如何使用 Puppeteer 来启动一个无头浏览器并进行一些基本的设置,以避免被检测到是自动化脚本。
首先,确保你已经安装了 Puppeteer:
npm install puppeteer
然后,你可以使用以下代码来启动 Puppeteer 并进行一些设置:
const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch({ headless: false, // 设置为false以便看到浏览器操作 args: [ '--no-sandbox', '--disable-setuid-sandbox', '--disable-infobars', '--window-position=0,0', '--ignore-certifcate-errors', '--ignore-certifcate-errors-spki-list', '--disable-dev-shm-usage', '--disable-accelerated-2d-canvas', '--disable-gpu', '--disable-features=IsolateOrigins,site-per-process', '--flag-switches-begin', '--disable-site-isolation-trials', '--flag-switches-end' ], ignoreDefaultArgs: ['--enable-automation'] }); const page = await browser.newPage(); // 设置User-Agent await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'); // 设置浏览器特征 await page.evaluateOnNewDocument(() => { Object.defineProperty(navigator, 'webdriver', { get: () => false, }); }); // 打开目标网页 await page.goto('https://example.com'); // 其他操作... // 关闭浏览器 await browser.close(); })();
在这个示例中,我们做了以下几件事:
- 禁用无头模式:通过设置
headless: false
,可以看到浏览器的操作过程。 - 设置浏览器参数:通过
args
参数传递一系列的命令行参数来配置浏览器。 - 忽略默认的自动化标志:通过
ignoreDefaultArgs
参数来忽略默认的自动化标志。 - 设置 User-Agent:通过
page.setUserAgent
方法来设置一个常见的 User-Agent 字符串。 - 修改浏览器特征:通过
page.evaluateOnNewDocument
方法来修改navigator.webdriver
属性,使其返回false
,以避免被检测到是自动化脚本。
这些步骤可以帮助你在使用 Puppeteer 时规避一些常见的自动化检测机制。根据具体的需求,你可能还需要进行其他的设置和调整。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于