使用 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 时规避一些常见的自动化检测机制。根据具体的需求,你可能还需要进行其他的设置和调整。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于