Un navegador sin cabeza es un navegador web sin una interfaz gráfica de usuario .
Los navegadores sin cabeza proporcionan control automatizado de una página web en un entorno similar a los navegadores web populares, pero se ejecutan a través de una interfaz de línea de comandos o mediante la comunicación de red. Son particularmente útiles para probar páginas web, ya que pueden representar y comprender HTML de la misma manera que lo haría un navegador, incluidos elementos de estilo como diseño de página, color, selección de fuentes y ejecución de JavaScript y Ajax que generalmente no están disponibles cuando se usan otros métodos de prueba. [1]
Desde la versión 59 de Google Chrome [2] [3] y la versión 56 [4] de Firefox , [5] existe soporte nativo para el control remoto del navegador. Esto obvió los esfuerzos anteriores, especialmente PhantomJS . [6]
Casos de uso
Los principales casos de uso de los navegadores sin cabeza son:
- Automatización de pruebas en aplicaciones web modernas ( pruebas web )
- Realización de capturas de pantalla de páginas web.
- Ejecución de pruebas automatizadas para bibliotecas de JavaScript.
- Automatización de la interacción de las páginas web.
Otros usos
Los navegadores sin cabeza también son útiles para raspar la web . Google declaró en 2009 que el uso de un navegador sin cabeza podría ayudar a su motor de búsqueda a indexar el contenido de los sitios web que usan Ajax. [7]
Los navegadores sin cabeza también se han utilizado incorrectamente de varias formas:
- Realice ataques DDoS en sitios web. [8]
- Incrementar las impresiones publicitarias. [9]
- Automatice los sitios web de formas no deseadas [10], por ejemplo, para el relleno de credenciales . [11]
Sin embargo, un estudio del tráfico del navegador en 2018 no encontró preferencia por parte de los actores malintencionados por los navegadores sin cabeza. [3] No hay indicios de que los navegadores sin cabeza se utilicen con más frecuencia que los navegadores sin cabeza con fines maliciosos, como ataques DDoS, inyecciones de SQL o ataques de secuencias de comandos entre sitios.
Uso
Como varios de los principales navegadores admiten de forma nativa el modo sin cabeza a través de API , existe algún software para realizar la automatización del navegador a través de una interfaz unificada. Éstas incluyen:
- Selenium WebDriver : una implementación de WebDriver compatible con W3C [12]
- Dramaturgo: una biblioteca de Node.js para automatizar Chromium, Firefox y WebKit [13]
- Puppeteer: una biblioteca de Node.js para automatizar Chrome [14]
Automatización de pruebas
Algunos marcos y software de automatización de pruebas incluyen navegadores sin cabeza como parte de sus dispositivos de prueba. [3]
- Capybara utiliza la navegación sin cabeza, ya sea a través de WebKit o Chrome sin cabeza para imitar el comportamiento del usuario en sus protocolos de prueba. [15]
- Jasmine usa Selenium de forma predeterminada, pero puede usar WebKit o Headless Chrome para ejecutar pruebas del navegador. [dieciséis]
Alternativas
Otro enfoque es utilizar software que proporcione API de navegador. Por ejemplo, Deno proporciona API de navegador como parte de su diseño. Para Node.js , jsdom [17] es el proveedor más completo. Si bien la mayoría puede admitir funciones comunes del navegador (análisis de HTML, cookies , XHR , algo de JavaScript, etc.), no procesan el DOM y tienen un soporte limitado para eventos DOM . Por lo general, funcionan más rápido que los navegadores completos, pero no pueden interpretar correctamente muchos sitios web populares. [18] [19] [20]
Otro es HtmlUnit , un navegador sin cabeza escrito en Java. HtmlUnit utiliza el motor Rhino para proporcionar compatibilidad con JavaScript y Ajax, así como capacidad de representación parcial. [21] [22]
Lista de navegadores sin cabeza
Se trata de varios software que proporcionan API de navegador sin cabeza.
- Splash es un navegador web sin cabeza escrito en Python que utiliza el motor de diseño WebKit a través de Qt . Tiene una API HTTP, soporte para secuencias de comandos Lua y un IDE integrado basado en IPython (Jupyter). El desarrollo comenzó en ScrapingHub en 2013; está parcialmente financiado por DARPA . [23] [24]
- Zombie.js es un entorno de navegador simulado para Node.js . [25]
- SimpleBrowser es un navegador web sin cabeza escrito en C # compatible con .NET Standard 2.0 [26]
- DotNetBrowser es una biblioteca patentada basada en .NET Chromium que proporciona el modo de renderizado fuera de la pantalla y se puede utilizar sin incrustar o mostrar ventanas. [27] [28]
Otro esfuerzo anterior señalado fue envjs en 2008 de John Resig , que era un entorno de navegador simulado escrito en JavaScript para el motor Rhino . [29]
Ver también
- Computadora sin cabeza
Referencias
- ^ "¿Qué es un navegador sin cabeza?" . arhg.net .
- ^ "Introducción a Headless Chrome" . developers.google.com .
- ^ a b c Bekerman, Dima (28 de noviembre de 2018). "Chrome sin cabeza: a los DevOps les encanta, también los piratas informáticos, este es el motivo | Imperva" . Blog . Consultado el 22 de febrero de 2021 .
- ^ "Notas de la versión de Firefox 56" . developer.mozilla.org .
- ^ "Modo sin cabeza: compatibilidad con el navegador" . developer.mozilla.org .
- ^ "Inicio rápido" . phantomjs.org .
- ^ Mueller, John (7 de octubre de 2009). "Blog oficial del Centro para webmasters de Google: una propuesta para hacer que AJAX sea rastreable" . Blog oficial del Centro para webmasters de Google .
- ^ Rawlings, Matt (20 de noviembre de 2013). "Botnet de navegador sin cabeza utilizado en ataque DDoS de 150 horas" . Comunidad Business 2 .
- ^ Mello Jr., John P. (25 de marzo de 2014). "El tráfico web sin cabeza amenaza la economía de Internet" . ecommercetimes.com .
- ^ Raywood, Dan (1 de abril de 2014). "Navegadores sin cabeza: software legítimo que permite atacar" . ITProPortal .
- ^ Mueller, Neal. "Relleno de credenciales" . owasp.org .
- ^ Sheth, Himanshu (17 de noviembre de 2020). "Selenium 4 es ahora compatible con W3C: todo lo que necesita saber" .
- ^ "GitHub - Dramaturgo" . Consultado el 11 de abril de 2021 .
- ^ "Github - Titiritero" . Consultado el 11 de abril de 2021 .
- ^ Silva, Francisco (29 de mayo de 2019). "De carpincho-webkit a Headless Chrome y ChromeDriver" . Blog | Nube imaginaria . Consultado el 22 de febrero de 2021 .
- ^ Bintz, John. "jasmine-headless-webkit - ¡La forma más rápida de ejecutar sus especificaciones de Jasmine!" . johnbintz.github.io . Consultado el 22 de febrero de 2021 .
- ^ "JSDOM en GitHub - Pretendiendo ser un navegador visual" . Consultado el 18 de abril de 2021 .
- ^ "assaf / zombie" . GitHub .
- ^ "ヘ ル ペ ス が 口 や 目 か ら う つ る? 感染 し た 時 の 症状 と 病院 の 治療 方法 と は" . www.envjs.com . Archivado desde el original el 23 de febrero de 2015 . Consultado el 13 de marzo de 2015 .
- ^ "JavaScriptMVC - EnvJS" . javascriptmvc.com .
- ^ Mike Bowler. "HtmlUnit - Bienvenido a HtmlUnit" . sourceforge.net .
- ^ "Plataforma (Vaadin 7.3.4 API)" . vaadin.com . 6 de noviembre de 2014.
- ^ "scrapinghub / splash" . GitHub .
- ^ "Copia archivada" . Archivado desde el original el 28 de mayo de 2015 . Consultado el 28 de mayo de 2015 .CS1 maint: copia archivada como título ( enlace )
- ^ "Zombi" . labnotes.org .
- ^ SimpleBrowserDotNet / SimpleBrowser , SimpleBrowserDotNet, 2021-02-10 , consultado 2021-02-22
- ^ DotNetBrowser Examples , TeamDev, 2021-03-12 , consultado el 2021-03-12
- ^ "DotNetBrowser" . TeamDev. 2021-05-05.
- ^ Resig, John (12 de octubre de 2008). "env-js: un entorno de navegador de JavaScript puro" , a través de GitHub.