Navegador web sin interfaz gráfica de usuario
Un navegador sin cabeza es un navegador web sin una interfaz gráfica de usuario .
Los navegadores sin interfaz gráfica proporcionan un 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 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 el diseño de la página, el color, la selección de fuentes y la ejecución de JavaScript y Ajax que generalmente no están disponibles cuando se utilizan 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 hizo que los esfuerzos anteriores quedaran obsoletos, en particular PhantomJS [6] .
Casos de uso
Los principales casos de uso de los navegadores sin interfaz gráfica son:
Otros usos
Los navegadores sin interfaz gráfica también son útiles para el web scraping . Google afirmó en 2009 que el uso de un navegador sin interfaz gráfica podría ayudar a su motor de búsqueda a indexar el contenido de los sitios web que utilizan Ajax. [7]
Los navegadores sin interfaz gráfica también se han utilizado incorrectamente de diversas maneras:
Sin embargo, un estudio del tráfico de navegadores en 2018 no encontró preferencia por parte de actores maliciosos por los navegadores sin interfaz gráfica. [3] No hay indicios de que los navegadores sin interfaz gráfica se utilicen con mayor frecuencia que los navegadores sin interfaz gráfica para fines maliciosos, como ataques DDoS, inyecciones SQL o ataques de secuencias de comandos entre sitios .
Uso
Como varios navegadores importantes admiten de forma nativa el modo sin interfaz gráfica a través de API , existe algún software para realizar la automatización del navegador a través de una interfaz unificada. Entre ellos se incluyen:
Automatización de pruebas
Algunos software y marcos de automatización de pruebas incluyen navegadores sin interfaz gráfica como parte de sus aparatos de prueba. [3]
- Capybara utiliza navegación sin interfaz gráfica, ya sea a través de WebKit o Headless Chrome, 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. [16]
- Cypress , un marco de pruebas frontend
- QF-Test , una herramienta de software para pruebas automatizadas de programas a través de la interfaz gráfica de usuario, donde también se puede utilizar un navegador sin cabeza para realizar pruebas.
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 de navegador (análisis HTML, cookies , XHR , algo de JavaScript, etc.), no renderizan 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 interfaz gráfica escrito en Java. HtmlUnit utiliza el motor Rhino para proporcionar compatibilidad con JavaScript y Ajax, así como capacidad de renderizado parcial. [21] [22]
Lista de navegadores sin interfaz gráfica
Se trata de varios programas que proporcionan API de navegador sin interfaz gráfica.
- Splash es un navegador web sin interfaz gráfica escrito en Python que utiliza el motor de diseño WebKit a través de Qt . Tiene una API HTTP, compatibilidad con scripts 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 interfaz gráfica 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 pantalla y se puede utilizar sin incrustar ni mostrar ventanas. [27] [28]
Otro esfuerzo anterior notable fue envjs en 2008 de John Resig , que era un entorno de navegador simulado escrito en JavaScript para el motor Rhino . [29]
Véase también
Referencias
- ^ "¿Qué es un navegador sin interfaz gráfica?". arhg.net . 7 de octubre de 2009.
- ^ "Introducción a Chrome sin interfaz gráfica". developer.google.com . 27 de abril de 2017.
- ^ abc Bekerman, Dima (28 de noviembre de 2018). "Chrome sin interfaz gráfica: a los DevOps les encanta, a los hackers también, este es el motivo | Imperva". Blog . Consultado el 22 de febrero de 2021 .
- ^ "Notas de la versión de Firefox 56". developer.mozilla.org . 26 de febrero de 2023.
- ^ "Modo sin interfaz gráfica: compatibilidad con navegadores". developer.mozilla.org . Archivado desde el original el 2018-06-03 . Consultado el 2017-08-31 .
- ^ "Inicio rápido". phantomjs.org .
- ^ Mueller, John (7 de octubre de 2009). "Blog oficial de Google Webmaster Central: una propuesta para hacer que AJAX sea rastreable". Blog oficial de Google Webmaster Central .
- ^ Rawlings, Matt (20 de noviembre de 2013). "Botnet de navegador sin cabeza utilizada en un ataque DDoS de 150 horas". Business 2 Community .
- ^ Mello Jr., John P. (25 de marzo de 2014). "El tráfico web sin interfaz gráfica amenaza la economía de Internet". ecommercetimes.com .
- ^ Raywood, Dan (1 de abril de 2014). "Navegadores sin interfaz gráfica: software legítimo que permite ataques". ITProPortal .
- ^ Mueller, Neal. "Relleno de credenciales". owasp.org .
- ^ Sheth, Himanshu (17 de noviembre de 2020). "Selenium 4 ahora es compatible con W3C: todo lo que necesita saber".
- ^ "GitHub - Dramaturgo". GitHub . Consultado el 11 de abril de 2021 .
- ^ "Github - Puppeteer". GitHub . Consultado el 11 de abril de 2021 .
- ^ Silva, Francisco (29 de mayo de 2019). "De capybara-webkit a Headless Chrome y ChromeDriver". Blog | Imaginary Cloud . Consultado el 22 de febrero de 2021 .
- ^ Bintz, John. "jasmine-headless-webkit - ¡La forma más rápida de ejecutar tus especificaciones de Jasmine!". johnbintz.github.io . Consultado el 22 de febrero de 2021 .
- ^ "JSDOM en GitHub: simula ser un navegador visual". GitHub . 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 . Archivado desde el original el 23 de mayo de 2015 . Consultado el 13 de marzo de 2015 .
- ^ Mike Bowler. "HtmlUnit – Bienvenido a HtmlUnit". sourceforge.net .
- ^ "Plataforma (API de Vaadin 7.3.4)". vaadin.com . 6 de noviembre de 2014.
- ^ "scrapinghub/splash". GitHub . 20 de diciembre de 2021.
- ^ "DARPA - Catálogo abierto". Archivado desde el original el 28 de mayo de 2015. Consultado el 28 de mayo de 2015 .
- ^ "Zombi". labnotes.org .
- ^ SimpleBrowserDotNet/SimpleBrowser, SimpleBrowserDotNet, 10 de febrero de 2021 , consultado el 22 de febrero de 2021
- ^ Ejemplos de DotNetBrowser, TeamDev, 12 de marzo de 2021 , consultado el 12 de marzo de 2021
- ^ "DotNetBrowser". Equipo de desarrollo. 5 de mayo de 2021.
- ^ Resig, John (12 de octubre de 2008). "env-js: Un entorno de navegador basado en JavaScript puro" – vía GitHub.