我有一个脚本,应该打开一个无头浏览器,进行搜索,并截取屏幕截图。
当我使用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'。
无头false
:
这将是一个正常的Auto UI测试,它启动chrome浏览器,你可以看到chrome浏览器窗口是打开的
无头true
:
把所有的东西都当作uitest来运行。但是,这次它没有打开chrome浏览器的物理,它只运行在命令行,所以没有chrome窗口是打开这次。当您不想在自动运行环境中看到时,这是非常方便的。