PhantomJS
PhantomJS | ||
---|---|---|
Información general | ||
Tipo de programa | software testing tool | |
Autor | Ariya Hidayat | |
Desarrollador | Ariya Hidayat | |
Licencia | BSD[1] | |
Información técnica | ||
Programado en | C++ | |
Versiones | ||
Última versión estable | 2.1.1[2] () | |
Enlaces | ||
PhantomJS Es un navegador sin interfaz gráfica para automatizar la interacción de las páginas web. PhantomJS proporciona una API de Javascript que permite la navegación automatizada, capturas de pantalla, comportamiento del usuario y las aserciones, lo que lo convierte en una herramienta común utilizada para ejecutar pruebas unitarias basadas en el navegador en un sistema sin interfaz gráfica como un entorno de integración continua. PhantomJS está basado en WebKit, lo que lo convierte en un entorno de navegación similar a Safari y Google Chrome (antes de un fork de Chrome de WebKit evolucionara a Blink). Es un software de código abierto publicado bajo la Licencia BSD.
Historia
[editar]PhantomJS fue lanzado el 26 de enero de 2011 por Ariya Hidayat después de varios años de desarrollo.[3]
El primer commit público al proyecto fue en 2011.[4]
El logo comúnmente usado para referirse pictóricamente a PhantomJS es un fantasma azul fluorescente sobre un fondo negro. Esto se refiere a la falta de interfaz gráfica de usuario, o cuerpo principal del navegador, haciendo que los usuarios de PhantomJS parezcan fantasmas.
En marzo de 2018, el desarrollo de PhantomJS se suspendió debido a la falta de contribuciones activas.[5]
Uso de PhantomJS
[editar]El API de Javascript de PhantomJS puede utilizarse para abrir páginas web, toma capturas de pantalla, ejecutar acciones de usuario y ejecutar JavaScript inyectado en el contexto de la página. Por ejemplo, el siguiente código abrirá Wikipedia y, al cargarlo, guardará una captura de pantalla en un archivo y saldrá.
console.log('Cargando pagina web');
var page = require('webpage').create();
var url = 'http://en.wikipedia.org/';
page.open(url, function (status) {
console.log('Pagina cargada');
page.render('wikipedia.org.png');
phantom.exit();
});
Herramientas que utilizan PhantomJS
[editar]CasperJS
[editar]Poco después del lanzamiento de PhantomJS, Nicolas Perriault escribió CasperJS, un conjunto de bibliotecas sobre PhantomJS que amplían sus capacidades como cliente para la prueba automatizada de páginas web. CasperJS Y PhantomJS se han vuelto lo suficientemente valiosos como para que proyectos similares hayan comenzado a adoptar el API como una forma estándar de interactuar con los navegadores sin interfaz gráfica.[6][7]
YSlow
[editar]Yahoo! desarrolló una versión de YSlow que aprovecha PhantomJS para reunir métricas de rendimiento para sitios web.[8]
Compañías que utilizan PhantomJS
[editar]- Twitter usó QUnit y PhantomJS para pruebas unitarias a partir de 2015.[9]
- LinkedIn usó herramientas basados en PhantomJS para las pruebas de rendimiento a partir de 2011.[10]
- Netflix utilizó Sketchy, un navegador sin interfaz gráfica construido con PhantomJS, para entender lo que hace sin tener que visitar el sitio a partir de 2014.[11]
- Time Warner Cable utilizó PhantomJS con CoffeeScript, Jasmine, y JUnit XML para la integración continua de Jenkins a partir de 2012.[12]
Otros usos para PhantomJS
[editar]PhantomJS fue hecho hecho para el control programático de sitios web y ha sido utilizado para muchos propósitos, desde la diferenciación visual hasta la prueba automatizada de frameworks Javascript.[13][14]
Renderización en el servidor de JavaScript del lado del cliente
[editar]Con el aumento de Javascript de lado del cliente y los problemas de SEO que la práctica presenta, los desarrolladores recurrieron a PhantomJS como manera de pre-renderizar el HTML estático para las solicitudes iniciales.[15][16] A pesar del impacto en el rendimiento de este enfoque, siguió siendo una de las formas más sencillas de mejorar el SEO sin reescribir una aplicación web, generando servicios tratan de automatizar el proceso.[17]
Uso malicioso de PhantomJS
[editar]Debido a que PhantomJS se puede ejcutar sin interfaz de usuario, se puede programar a través de Javascript, y se adhiere relativamente a las especificaciones de los navegadores modernos, se utiliza comúnmente como una forma de automatizar ataques contra los sitios web.[18] PhantomJS imita el tráfico de usuarios legítimos y puede complicar las tecnologías de mitigación de ataque. PhantomJS también puede se utilizado para verificar automáticamente los inicios de sesión en sitios web. (credential stuffing), agravando los problemas que surgen después de que un sitio es violado y los nombres de usuario son filtrados.[19]
Véase también
[editar]Referencias
[editar]- ↑ «phantomjs/LICENSE.BSD at master · ariya/phantomjs». GitHub (en inglés).
- ↑ «Releases · ariya/phantomjs». GitHub. Consultado el 21 de abril de 2017.
- ↑ «don't code today what you can't debug tomorrow». ariya.blogspot.com. Consultado el 20 de julio de 2015.
- ↑ «ariya/phantomjs». GitHub. Consultado el 20 de julio de 2015.
- ↑ «Archiving the project: suspending the development». ariya/phantomjs. Github. 3 de marzo de 2018.
- ↑ Laurent Jouanneau. «FaQ - SlimerJS». slimerjs.org. Consultado el 20 de julio de 2015.
- ↑ «trifleJS». trifleJS. Consultado el 20 de julio de 2015.
- ↑ Marcel Duran. «YSlow - Official Open Source Project Website». yslow.org. Consultado el 20 de julio de 2015.
- ↑ «Leo Lanese on Twitter». Twitter. Consultado el 20 de julio de 2015.
- ↑ phegaro. «LinkedIn Mobile: How do we do it?». SlideShare. Consultado el 20 de julio de 2015.
- ↑ Michael Mimoso. «Netflix Open Source Security Tools Solve Range of Challenges». threatpost.com. Consultado el 20 de julio de 2015.
- ↑ «one year of wandering headlessly». ofilabs.com. Archivado desde el original el 22 de julio de 2015. Consultado el 20 de julio de 2015.
- ↑ «Huddle/PhantomCSS». GitHub. Consultado el 20 de julio de 2015.
- ↑ EisenbergEffect. «Docs - Testing with PhantomJS and Jasmine - Durandal». durandaljs.com. Consultado el 20 de julio de 2015.
- ↑ «Short story about rendering HTML, client side vs server side». eshlox. Consultado el 20 de julio de 2015.
- ↑ Aaron O'Connell (22 de abril de 2014). «Sever-Side Rendering of Single Page Apps using PhantomJS and Node.js». 42floors.com. Consultado el 20 de julio de 2015.
- ↑ «BromBone - SEO for your AngularJS, EmberJS, or BackboneJS website.». Brombone.com. Consultado el 20 de julio de 2015.
- ↑ «DDoS Attack Used 'Headless' Browsers In 150-Hour Siege». Dark Reading. Consultado el 20 de julio de 2015.
- ↑ «Logging in to Amazon using PhantomJS». GitHub Gists. Consultado el 20 de julio de 2015.