Headless Puppeteer - 避免被 Akamai 检测到

Den*_*ise 6 akamai headless puppeteer

您好,我正在尝试抓取一个由 Akamai 提供支持的网站以进行机器人程序保护。由于 Akamai 阻止我的登录请求,我无法通过登录页面。

首先我想说的是,是的,有很多关于如何避免被 Akamai 等公司检测到的指南,但这些指南现在已经无关紧要,因为 Akamai 这样的公司通过使用 AI 检测新机器人而变得越来越好。

那么让我告诉您我的脚本正在运行的基础知识:

  • 傀儡师(无头模式)
  • puppeteer-extra-plugin-stealth

对于 Chrome 标志:

var chromeFlags = [
    '--no-sandbox',
    '--disable-setuid-sandbox',
    '--disable-accelerated-2d-canvas',
    '--no-zygote',
    '--renderer-process-limit=1',
    '--no-first-run',
    '--ignore-certificate-errors',
    '--ignore-certificate-errors-spki-list',
    '--disable-dev-shm-usage',
    '--disable-infobars',
    '--lang=en-US,en',
    '--window-size=1920x1080',
    '--disable-extensions'
  ];
Run Code Online (Sandbox Code Playgroud)

我还欺骗了时区和视口:

await page.emulateTimezone("Asia/Singapore");
await page.setViewport({width: (width/2)-21, height: height-111});
Run Code Online (Sandbox Code Playgroud)

据我所知,Akamai 非常了解窗口/屏幕尺寸。我已经做了我认为必要的一切来确保无头模式模仿实际的浏览器,但无济于事。

有一个网站可以显示您的浏览器指纹bot.sannysoft.com。我目前正在使用它来比较无头木偶师是否模仿实际的有头浏览器,到目前为止它看起来像是一个合法的浏览器。这是我用无头木偶师从该网站获得的结果在此输入图像描述

我希望有人能够告诉我是否应该尝试进行欺骗,以增加不被 Akamai 检测到的机会,或者指出我哪里做错了。

感谢大家!

小智 -1

尝试在启动 puppeteer 时添加ignoreHTTPSErrors: true。另外,请在此处查看 puppeteer extra 和 Stealth 插件:

https://www.npmjs.com/package/puppeteer-extra-plugin-stealth
Run Code Online (Sandbox Code Playgroud)

您还可以在 Slack 或 Skype 上添加我,以进一步解决此问题!