Navegador sin interfaz gráfica

De Wikipedia, la enciclopedia libre

Un navegador sin interfaz gráfica (headless browser en inglés) es un navegador web que proveen un control automatizado de una página web en un entorno similar al de un navegador web convencional, pero a diferencia de éstos, son ejecutados por medio de la consola, o usando un protocolo de red. Son particularmente útiles para el desarrollo de páginas web, puesto que son capaces de renderizar y entender HTML completamente, incluyendo elementos de estilos como el color, tipografía, esquemado y ejecución de JavaScript, características que no están disponibles habitualmente en otros métodos de prueba.[1][2]

Usos[editar]

Los navegadores sin interfaz gráfica suelen ser usados para:[3][4]

  • Comprobación automática en aplicaciones web modernas.
  • Capturas de pantalla de sitos web.
  • Ejecución de comprobaciones automáticas para las bibliotecas JavaScript.
  • Extracción de datos.
  • Interacción automática de páginas web.

Usos negativos[editar]

Sin embargo, tienen otras aplicaciones menos beneficiosas:

  • Llevar a cabo ataques DDOS a sitios web.[5]
  • Aumentar las impresiones de anuncios.[6]
  • Automatizar sitios web de formas no concebidas,[7]​ por ejemplo, para el robo de cuentas de usuario.[8]

Lista de navegadores sin interfaz gráfica[editar]

  • Google Chrome – desde la versión 59 Chrome soporta un modo headless en Linux, macOS and Windows.[9]
  • Mozilla Firefox – el modo headless está disponible para Linux desde la versión 55.[10]​ El soporte para Windows y macOS fue añadido en la versión 56.[11]
  • PhantomJS – un navegador sin interfaz gráfica que usa el motor de renderizado WebKit y JavaScriptCore para ejecutar el código JavaScript. PhantomJS fue desarrollado originalmente por Ariya Hidayat en 2010 y ha ganado un ecosistema muy amplio de desarrollo.[12][13][14][15][16]
  • HtmlUnit – un navegador web sin interfaz gráfica escrita en Java. HtmlUnit usa el motor Rhino para dar soporte a JavaScript y AJAX, así como un renderizado parcial.[17][18]
  • TrifleJS – un navegador basado en scripts que usa el motor Trident para el renderizado de páginas, y V8 para la ejecución de JavaScript. TrifleJS usa la misma API que PhantomJS y usa el objeto .NET WebBrowser para controlar la versión de IE instalada en el ordenador.[4][19]
  • Splash – navegador sin interfaz gráfica con una API HTTP, soporte para scripts en Lua y un entorno de desarrollo basado en IPython. Splash está escrito en Python y usa WebKit como motor de renderizado. El desarrollo inició en ScrapingHub en 2013; y está parcialmente patrocinado por DARPA.[20][21]

Simulados[editar]

Navegadores que simulan un entorno de navegador. Muy parecidos a los tradicionales, pero no renderizan el árbol DOM y tienen un soporte limitado de los eventos DOM. Generalmente funcionan más rápido que los navegadores web, pero son incapaces de interpretar correctamente muchas páginas web populares.[22][23][24]

  • Zombie.js – un entorno de navegador simulado para Node.js.[25]
  • ENVJS –un entorno de navegador simulado escrito en JavaScript para el motor Rhino.[26]
  • Edbrowse

Scripts[editar]

Éstos son navegadres que, aunque requieren una interfaz gráfica, poseen una API que permite una automatización muy similar a la de los navegadores sin interfaz gráfica tradicionales.

  • SlimerJS – un navegador web scriptable que usa el motor de renderizado Gecko. SlimerJS usa la misma API que PhantomJS.[27]

Véase también[editar]

Referencias[editar]

  1. «What is a headless browser?». arhg.net. 
  2. «Quick Start». phantomjs.org. 
  3. «PhantomJS - PhantomJS». phantomjs.org. 
  4. a b «trifleJS». trifleJS. 
  5. «Headless Browser Botnet Used in 150 hour DDoS attack». Business 2 Community. 
  6. «Headless Web Traffic Threatens Internet Economy». ecommercetimes.com. 
  7. «Headless browsers: legitimate software that enables attack». ITProPortal. 
  8. «Credential stuffing». owasp.org. 
  9. «Getting Started with Headless Chrome». developers.google.com. 
  10. «Headless mode - browser support». developer.mozilla.org. Archivado desde el original el 3 de junio de 2018. Consultado el 31 de octubre de 2018. 
  11. «Firefox 56 release notes». developer.mozilla.org. 
  12. «PhantomJS - PhantomJS». phantomjs.org. 
  13. «FAQ». phantomjs.org. 
  14. «Google Groups». google.com. 
  15. «Commits · ariya/phantomjs · GitHub». GitHub. 
  16. «ariya/phantomjs». GitHub. 
  17. Mike Bowler. «HtmlUnit – Welcome to HtmlUnit». sourceforge.net. 
  18. «Platform (Vaadin 7.3.4 API)». vaadin.com. 6 de noviembre de 2014. 
  19. «Home». GitHub. 
  20. «scrapinghub/splash». GitHub. 
  21. «Copia archivada». Archivado desde el original el 28 de mayo de 2015. Consultado el 31 de octubre de 2018. 
  22. «assaf/zombie». GitHub. 
  23. «ヘルペスが口や目からうつる?感染した時の症状と病院の治療方法とは». www.envjs.com (en japonés). Archivado desde el original el 23 de febrero de 2015. Consultado el 31 de octubre de 2018. 
  24. «JavaScriptMVC - EnvJS». javascriptmvc.com. Archivado desde el original el 23 de mayo de 2015. Consultado el 31 de octubre de 2018. 
  25. «Zombie». labnotes.org. 
  26. Resig, John (29 de enero de 2018). «env-js: A pure-JavaScript browser environment». GitHub. 
  27. Laurent Jouanneau. «SlimerJS». slimerjs.org.