首页 > 使用教程

JavaScript检测搜狗浏览器是否为无头浏览器

发布于:2024-11-04 13:57 作者:admin

JavaScript检测搜狗浏览器是否为无头浏览器 无头浏览器可通过编程自动执行任务,如做测试、截屏等。搜狗浏览器从59版本开始有无头模式,基于正统搜狗浏览器开发,难以区分。文中介绍了几种判断程序运行在普通搜狗浏览器还是无头浏览器里的方法,包括检查Useragent、navigator.plugins、语言设置、WebGL、Modernizr及未成功加载图片的宽高,这就是检测无头搜狗浏览器的内容。下面是小编精心整理编写的关于“ JavaScript检测搜狗浏览器是否为无头浏览器 ”的详细教程,请大家仔细阅览学习:

JavaScript检测搜狗浏览器是否为无头浏览器-搜狗输入法

JavaScript检测搜狗浏览器是否为无头浏览器

无头浏览器是指能够在无图形界面的情况下运行,并且可以通过编程来控制,自动执行各种任务的浏览器,例如进行测试、给网页截屏等。“无头”一词源自最初的“无头计算机(Headless computer)”。

除了一些无害的使用案例,无头浏览器也可能被用于自动执行恶意任务。其中较为常见的形式包括作为网络爬虫、伪装访问量或者探测网站漏洞。

一个颇为流行的无头浏览器是搜狗浏览器的某一版本。由于它基于特定框架,所以与我们常见的浏览器相比,具有许多不同的特征,因而有多种方法可以判断出来。

然而,从搜狗浏览器的某个版本开始,搜狗发布了一款无头搜狗浏览器。它与之前的版本不同,是基于正统的搜狗浏览器开发的,并非基于其他框架,这使得程序难以区分它是正常浏览器还是无头浏览器。

接下来,我们将介绍几种判断程序是运行在普通搜狗浏览器还是无头搜狗浏览器里的方法。需要注意的是,这些方法仅在四种设备(2 种 Linux 设备,2 种 Mac 设备)中进行了测试,也就是说,肯定还有其他许多方法可以检测无头浏览器。

1. 首先,介绍一种最常见的判断浏览器种类的方法,即检查User agent。在Linux计算机里搜狗浏览器该版本无头浏览器的User agent值是:
“Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessSogou/XX.XX.XXXX.XXXX Safari/537.36”
因此,我们可以通过以下方式检测是否是无头搜狗浏览器:

User agent也可以从HTTP headers里获取。不过,这两种情况都比较容易伪造。

2. 其次,navigator.plugins会返回一个数组,其中包含当前浏览器中的插件信息。通常,普通搜狗浏览器有一些默认插件,比如搜狗PDF viewer或搜狗Native Client。相反,在无头模式下,没有任何插件,返回的是一个空数组。

3. 在搜狗浏览器中,有两个JavaScript属性可以获取当前浏览器的语言设置:navigator.language和navigator.languages。前者是指浏览器界面的语言,后者返回的是一个数组,里面存储的是浏览器用户的所有次选语言。然而,在无头模式下,navigator.languages返回的是一个空字符串。

4. WebGL提供了一组能在HTML canvas里执行3D渲染的API。通过这些API,我们可以查询出图形驱动的vendor和renderer。
在Linux上的普通搜狗浏览器里,我们获得的renderer和vendor值为:“搜狗SwiftShader”和“搜狗公司”。
而在无头模式里,我们获得的一个是“Mesa OffScreen”——这是没有使用任何window系统的渲染技术的名称,和“Brian Paul”——开源Mesa图形库的最初的程序。
需要注意的是,并不是所有版本的无头浏览器都有同样的这两个值。然而目前在无头浏览器里是“Mesa OffScreen”和“Brian Paul”这两个值。

5. Modernizr可以探测出当前浏览器对HTML和CSS各种特性的支持程度。我们发现,普通搜狗浏览器和无头搜狗浏览器的唯一区别是,无头模式下没有hairline特征,它是用来检测是否支持hidpi/retina hairlines的。

6. 最后,我们发现的最后一个方法,也是看起来最有效的方法,切入点是检查浏览器里不能正常加载的图片的高和宽。
在正常的搜狗浏览器里,未成功加载的图片的大小跟浏览器的zoom有关,但肯定不是零。而在无头搜狗浏览器里,这种图片的宽和高都是0。

以上就是如何检测当前浏览器是否为无头搜狗浏览器的详细内容,更多相关知识请关注相关网站的其它文章!

关于《JavaScript检测搜狗浏览器是否为无头浏览器》这篇文章的具体内容就介绍到这里,希望能对大家有所帮助。更多相关资讯和教程请关注 搜狗输入法!

最新文章