“Chrome is being controlled by automated test software.” 显示,即使机器人检查在 Puppeteer 中通过

"Chrome is being controlled by automated test software." showing up even though bot check passing in Puppeteer

提问人:lapdoggo 提问时间:11/6/2023 最后编辑:ggorlenlapdoggo 更新时间:11/6/2023 访问量:106

问:

我是 NodeJS 及其所有库的新手。

我曾经使用 Selenium 在 Python 中制作机器人和抓取器,我记得 Chrome 明确显示了一个标签告诉我

“Chrome 正在由自动化测试软件控制。”

因此,我开始使用UndetectedChromeDriver,这个标签消失了,因为使我的程序更加“人性化”。

所以现在我正在使用 puppeteer、puppeteer-extra 和 puppeteer-extra-plugin-stealth

我按照有关如何使用 puppeteer-extra-plugin-stealth 的说明进行操作,程序运行良好,但它向我显示了与我在没有 UndetectedChromeDriver 的情况下使用 Selenium 时相同的标签,以及这个标签:

“Chrome 正在由自动化测试软件控制。”

“Chrome for Testing v119.0.6045.105 仅用于自动测试。对于常规浏览,请使用自动更新的标准版 chrome。

但是当加载 https://bot.sannysoft.com/ 它时,它有所有绿色的框,这基本上意味着“我”看起来不像一个机器人。

以下是触发 Chrome 中之前显示的 2 个标签的基本代码:

// puppeteer-extra is a drop-in replacement for puppeteer,
// it augments the installed puppeteer with plugin functionality
const puppeteer = require('puppeteer-extra')
const prompt = require("prompt-sync")({ sigint: true });

// add stealth plugin and use defaults (all evasion techniques)
const StealthPlugin = require('puppeteer-extra-plugin-stealth')
puppeteer.use(StealthPlugin());

(async () => {
  // Launch the browser and open a new blank page
  // Configuration when using StealthPlugin 
  const browser = await puppeteer.launch({
    headless : false
  });

  const page = await browser.newPage();
    
  await page.goto("https://bot.sannysoft.com/");
  finish = prompt("Shall we finish the program?");
  console.log(`Finishing program: ${finish}`);

  await browser.close();
})();

据我所知,当您下载 Puppeteer 时,它会自动下载最新的 web驱动程序,并且我已经仔细检查了我有最新的 puppeteer、puppeteer-extra 和 puppeteer-extra-plugin-stealth。 版本在我的项目中,所以我认为 webdriver 版本应该不是问题。

如果 chrome 可以判断我是机器人,那么其他页面也可以,对吧?

但是,如果 https://bot.sannysoft.com/ 告诉我我看起来不像机器人,而且 puppeteer-extra-plugin-stealth 理论上让我看起来不像机器人,那么为什么 chrome 告诉我我是一个机器人?

我应该忽略 chrome 标签还是 puppeteer-extra-plugin-stealth 不再起作用?

有什么修复吗?

节点 .js 谷歌浏览器 傀儡师

评论

1赞 Ouroborus 11/6/2023
该消息表示附加了远程调试/开发人员服务。不确定 UndetectedChromeDriver 如何在没有它的情况下工作。
0赞 lapdoggo 11/6/2023
所以我应该相信这个插件吗?
0赞 Ouroborus 11/6/2023
取决于你要做什么。该消息是为了该计算机上的用户的利益。就其本身而言,无法从网站上检测到它。有些网站在检查机器人方面比其他网站更积极。只有当网站因为不喜欢您正在做的事情而阻止访问时,这才对您造成问题。如果您获得了想要的结果,则无需担心您的应用程序是否可检测到。
0赞 lapdoggo 11/6/2023
好的,伙计,非常感谢;)

答:

0赞 lapdoggo 11/6/2023 #1

这会使标签消失

  const browser = await puppeteer.launch({
    headless : false,
    ignoreDefaultArgs: ["--enable-automation"],
  });

来源:Puppeteer Chrome 由自动化测试软件控制

评论

1赞 ggorlen 11/6/2023
这很有帮助,但我认为它不能回答这个问题。我认为 OP 首先要问为什么会出现这个横幅。OP希望通过适当的机器人绕过实践来使警告消失,而不是通过强制抑制它。他们担心,因为该消息显示,这意味着隐形插件并没有像他们过去使用的类似 Selenium 插件那样真正发挥作用。