什么是「无头浏览器」(headlessbrowser),它有什么应用场
无头浏览器(headless browser) 是指可以在不显示图形界面的情况下运行的浏览器。它们可以通过编程控制来执行多种任务,包括网页测试、截图等。
“无头”这一名称源自最早的“无头计算机”概念,指的是无须显示器、键盘和鼠标操作的计算机系统。无头系统通常通过网络连接进行控制,或使用RS-232串行连接进行设备管理。服务器通常采用无头模式以降低运行成本。
检测无头浏览器的原因多种多样,除了自动化测试和网页截图,无头浏览器还可以被用于执行恶意任务,如网络爬虫、模拟访问量或探测网站漏洞。一个流行的无头浏览器是PhantomJS,它基于Qt框架,因此与常见浏览器有明显区别。然而,自Chrome 59版本开始,谷歌发布了一款基于正统Chrome开发的无头浏览器,使得区分普通浏览器与无头浏览器变得更加困难。
判断程序运行在普通浏览器还是无头浏览器的方法包括检查User Agent、插件列表、浏览器语言设置、WebGL信息以及浏览器特性等。例如,在Linux环境下,Chrome 59无头浏览器的User Agent值包含“HeadlessChrome”标识,而在普通Chrome中,会包含Chrome PDF viewer或Google Native Client等默认插件信息。浏览器语言设置、WebGL的vendor和renderer信息以及Modernizr对HTML和CSS特性的支持程度也有助于区分。
最后,检查无法正常加载的图片的高度和宽度可以作为区分普通浏览器与无头浏览器的有效方法。在正常浏览器中,未加载的图片大小与浏览器缩放有关,而非零值;而在无头浏览器中,这些图片的宽度和高度通常为零。
以上内容整理自网络资料。
“无头”这一名称源自最早的“无头计算机”概念,指的是无须显示器、键盘和鼠标操作的计算机系统。无头系统通常通过网络连接进行控制,或使用RS-232串行连接进行设备管理。服务器通常采用无头模式以降低运行成本。
检测无头浏览器的原因多种多样,除了自动化测试和网页截图,无头浏览器还可以被用于执行恶意任务,如网络爬虫、模拟访问量或探测网站漏洞。一个流行的无头浏览器是PhantomJS,它基于Qt框架,因此与常见浏览器有明显区别。然而,自Chrome 59版本开始,谷歌发布了一款基于正统Chrome开发的无头浏览器,使得区分普通浏览器与无头浏览器变得更加困难。
判断程序运行在普通浏览器还是无头浏览器的方法包括检查User Agent、插件列表、浏览器语言设置、WebGL信息以及浏览器特性等。例如,在Linux环境下,Chrome 59无头浏览器的User Agent值包含“HeadlessChrome”标识,而在普通Chrome中,会包含Chrome PDF viewer或Google Native Client等默认插件信息。浏览器语言设置、WebGL的vendor和renderer信息以及Modernizr对HTML和CSS特性的支持程度也有助于区分。
最后,检查无法正常加载的图片的高度和宽度可以作为区分普通浏览器与无头浏览器的有效方法。在正常浏览器中,未加载的图片大小与浏览器缩放有关,而非零值;而在无头浏览器中,这些图片的宽度和高度通常为零。
以上内容整理自网络资料。