如何让无头浏览器模仿成熟的浏览器来使用 selenium 运行 Web 应用程序?

Posted

技术标签:

【中文标题】如何让无头浏览器模仿成熟的浏览器来使用 selenium 运行 Web 应用程序?【英文标题】:How to make a headless browser mimic fully fledged browser to run an web application using selenium? 【发布时间】:2020-01-20 12:34:30 【问题描述】:

我有一个案例,需要在无头浏览器 [Google Chrome/Mozilla Firefox] 中运行 Web 应用程序,但是当使用 selenium + 浏览器驱动程序从无头浏览器启动 Web 应用程序时,我们的 Web 应用程序会处理它作为不受支持的浏览器并导航至浏览器升级。

我知道我们的应用程序设计方式会出现这种行为,但我需要一种解决方法,让我们的应用程序在无头浏览器中运行,只需更改具有某些所需功能 [如果有的话] 运行无头浏览器的方式。

【问题讨论】:

这里没有足够的信息供任何人回答,但是您是否尝试过将无头浏览器中的用户代理更改为受支持的浏览器? @frabjous:你的意思是像下面这样吗? "--user-agent = Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X; en-us) AppleWebKit/537.51.1 (Khtml, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53" 是的,虽然正确的语法更可能是 --user-agent="...",后面有引号,=; 周围没有空格不过不确定,因为您还没有真正弄清楚您的确切设置是什么。 【参考方案1】:

能够通过添加用户代理作为驱动程序选项来解决此问题

--user-agent="Mozilla/5.0 (Windows Phone 10.0; android 4.2.1; Microsoft; Lumia 640 XL LTE) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Mobile Safari/537.36 Edge/ 12.10166"

Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:81.0) Gecko/20100101 Firefox/81.0

参考:

火狐: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent/Firefox

谷歌浏览器: https://developer.chrome.com/multidevice/user-agent

其他: https://developers.whatismybrowser.com/useragents/explore/software_name/chrome/

【讨论】:

以上是关于如何让无头浏览器模仿成熟的浏览器来使用 selenium 运行 Web 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

如何运行无头的selenium脚本,独立于主机和浏览器

07-seleniumPhantomJS(无头浏览器)

教你怎么用JavaScript检测当前浏览器是无头浏览器

硒和无头环境

selenium中无头浏览器的用法

如何使用无头浏览器运行测试?