首页 > 使用教程

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

发布于:2024-11-04 14:30 作者:admin

用JavaScript检测搜狗浏览器是否为无头浏览器 无头浏览器可通过编程控制执行任务,如测试、截屏等。除无害用途外,也可能被用于恶意任务。搜狗浏览器自59版起有无头模式,难以区分正常与无头浏览器。文中介绍了几种判断方法,如检查Useragent、navigator.plugins、语言设置、WebGL、Modernizr及未成功加载图片的宽高。这些方法在部分设备中测试过,检测存在一定局限性。下面是小编精心整理编写的关于“ 用JavaScript检测搜狗浏览器是否为无头浏览器 ”的详细教程,请大家仔细阅览学习:

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

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

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

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

一种颇为流行的无头浏览器是 PhantomJS,因其基于 Qt 框架,所以与我们常见的浏览器存在诸多不同特征,因而有多种方法可以对其进行判断。

现在,搜狗发布了一款无头搜狗浏览器。与 PhantomJS 不同,它是基于正统的搜狗浏览器开发的,并非基于其他框架。这使得程序难以区分它是正常浏览器还是无头浏览器。接下来,我们将介绍几种判断程序是运行在普通搜狗浏览器还是无头搜狗浏览器里的方法。需要注意的是,这些方法仅在四种设备(2 种 Linux 设备,2 种 Mac 设备)中进行过测试,也就是说,肯定还存在许多其他检测无头浏览器的方法。

1. 首先,介绍一种最为常见的判断浏览器种类的方法——检查 User agent。在 Linux 计算机中,搜狗 version 59 无头浏览器的 User agent 值为:“Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessSogou/59.0.3071.115 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”和“搜狗 Inc.”。而在无头模式下,我们获得的是“Mesa OffScreen”——这是一种未使用任何 window 系统的渲染技术的名称,以及“Brian Paul”——开源 Mesa 图形库的最初开发者。需要注意的是,并非所有版本的无头浏览器都具有相同的这两个值。但目前在无头浏览器中是“Mesa OffScreen”和“Brian Paul”这两个值。

5. Modernizr 可以探测当前浏览器对 HTML 和 CSS 各种特性的支持程度。经过发现,普通搜狗浏览器和无头搜狗浏览器的唯一区别是,无头模式下不具备 hairline 特征,该特征用于检测是否支持 hidpi/retina hairlines。

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

以上便是使用 JavaScript 检测当前浏览器是否为无头搜狗浏览器的详细内容。更多相关信息,可关注相关网站的其它文章!

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

最新文章