【问题标题】:Puppeteer blocked as robot with headless: true but not blocked with headless: falsePuppeteer 被无头阻止为机器人:true 但没有被无头阻止:false
【发布时间】:2021-08-15 12:23:55
【问题描述】:

我有一个脚本应该打开一个无头浏览器,进行搜索,然后截屏。

当我使用headless: false 运行脚本时,一切正常。

当我使用 headless: true 运行它时,我被网站(验证码)阻止。

我知道有办法绕过验证码,但这不是我想要的。

我的问题是这两种模式之间有什么区别,网站将我识别为无头浏览器,但当它不是无头浏览器时,它不会。

我尝试过的事情:

  • 通过 chrome 检查
  • 通过通知检查
  • 设置语言标题
  • 插入新的用户代理和其他不同的参数,例如:
'--user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36',
'--window-size=1920,1080',
'--no-sandbox',
'--disable-gpu',
'--no-zygote',
'--disable-setuid-sandbox',
'--disable-accelerated-2d-canvas',
'--disable-dev-shm-usage'

我正在使用最新的 puppeteer 版本 (10.1.0),“puppeteer-extra-plugin-stealth”和“puppeteer-extra”。

【问题讨论】:

  • 这能回答你的问题吗? Headless browser detection
  • 欢迎来到 SO!在相关网站上添加minimal reproducible example 可能有助于为您提供更具体的原因来了解正在发生的事情。最好有一些东西可以运行和摆弄。
  • @theDavidBarton 尝试了所有这些方法,但仍然无法正常工作

标签: node.js puppeteer headless-browser


【解决方案1】:

无头false

这将是正常的 Auto UI 测试,它启动 chrome 浏览器,您可以看到 chrome 浏览器窗口已打开

无头true

认为一切都在作为 UI TEST 运行。但是,这次它并没有物理打开chrome浏览器,它只是在命令行中运行,所以这次没有打开chrome窗口。这在您不想在自动运行环境中看到的地方非常方便。

【讨论】:

  • 为什么要解释这两种模式之间的不同行为?我认为 OP 已经知道这一切。
  • 感谢您的回答,但正如@ggorlen 所说,我知道两种模式之间的不同行为。我的问题是在技术层面上有什么不同,比如 args 有什么不同以及网站如何将我识别为无头浏览器。
猜你喜欢
  • 2019-10-04
  • 1970-01-01
  • 1970-01-01
  • 2021-07-27
  • 2011-07-03
  • 2014-08-13
  • 1970-01-01
  • 2020-11-11
  • 1970-01-01
相关资源
最近更新 更多