返回博客
部署

使用 BotBrowser 防护自动化检测

BotBrowser 如何防止自动化框架信号暴露,无需隐身插件。

概述

通过 Playwright 或 Puppeteer 启动 Chromium 时,浏览器会暴露自动化信号。BotBrowser 在引擎层面处理这些信号,在任何页面代码执行之前进行控制。无需隐身插件或 JavaScript 补丁。

BotBrowser 如何处理

BotBrowser 修改浏览器引擎本身。自动化信号在 C++ 层面、任何 JavaScript 上下文创建之前进行控制。这意味着 navigator.webdriver 原生返回 false,无头模式产生与有头模式相同的 API 表面。

简洁的 Playwright 配置

const { chromium } = require('playwright-core');

(async () => {
  const browser = await chromium.launch({
    executablePath: '/path/to/botbrowser/chrome',
    args: [
      '--bot-profile=/path/to/profile.enc',
    ],
    headless: true,
  });

  const context = await browser.newContext();
  const page = await context.newPage();
  await page.goto('https://example.com');
  await browser.close();
})();

生产配置

const browser = await chromium.launch({
  executablePath: '/path/to/botbrowser/chrome',
  args: [
    '--bot-profile=/path/to/profile.enc',
    '--proxy-server=socks5://user:pass@proxy:1080',
    '--bot-config-timezone=America/New_York',
    '--bot-config-locale=en-US',
    '--bot-config-languages=en-US,en',
    '--bot-disable-console-message',
    '--bot-disable-debugger',
  ],
  headless: true,
});

关键参数:--bot-disable-debugger 防止页面通过 debugger 语句暂停执行。--bot-disable-console-message 抑制控制台输出。

最佳实践

使用 playwright-core 而非 playwright 完整包会捆绑自己的 Chromium。

设置 defaultViewport: null 保留配置文件的屏幕尺寸。

代理位置与配置文件匹配。 将指纹配置文件与地理位置匹配的代理结合。

跨会话轮换配置文件。 使用 --bot-profile-dir 从配置文件目录中随机选择。

可以移除的内容

使用 BotBrowser 后,你不再需要隐身库、自定义 JavaScript 补丁、User-Agent 伪装中间件或"未检测"浏览器包装库。BotBrowser 在引擎层面处理底层信号。

下一步

#automation#detection#webdriver#deployment#privacy