Durante mucho tiempo he estado pensando en cómo se verá el futuro de la web cuando vayamos más allá de lo que conocemos como el navegador web tradicional. Llamé a esto The Headless Web y quería responder fue “¿Qué pasa si todo fue impulsado por ‘The Web’, pero nunca vio un navegador?”. Específicamente, creo que si tiene acceso a un navegador completo, pero no es visible para “Chrome”, entonces hay una gran oportunidad para un nuevo conjunto de servicios.
Using the browser as a service is an incredible opportunity. It allows us to take the declarative HTML and combine it with the developer defined procedural execution of JavaScript and run deep analysis on the content.
…
Running a browser on the server will allow us to more easily build services which parse data that is generated dynamically, it will allow us to more easily us run our own logic against the logic in a page (form fill as an example) and I believe that it will open up the ability to more effectively run actions against data embedded on the page.
Me tomó un tiempo, pero creo que estamos llegando.
Estoy enamorado de Titiritero. Puppeteer es una biblioteca de JavaScript que se encuentra en la parte superior del protocolo Chrome Dev Tools y le permite automatizar y crear secuencias de comandos del navegador Chrome.
Mi trabajo diario implica una gran cantidad de depuración de servidores web y garantizar. Al igual que muchos desarrolladores, utilizo curl
para hacer solicitudes a un servidor web y verificar la respuesta. Es una utilidad asombrosa, sin embargo, en el mundo de hoy muchos desarrolladores están construyendo sitios que están construidos usando una gran cantidad de JavaScript y esto hace que sea imposible inspeccionar la respuesta completa.
Decidí crear una utilidad tipo cUrl para buscar un recurso y ejecutar JavaScript en la página llamada domcurl
.
domcurl
es una pequeña aplicación NodeJS que utiliza Puppeteer y se puede instalar emitiendo el siguiente comando:npm i domcurl
. Al igual que el comando curl
, puede emitir un simpledomcurl [url]
para buscar el recurso y ejecutar el JS en la página.
No replica todo curl
, pero es bastante funcional con las siguientes características.
- Especifique una URL para buscar. es decir,
domcurl [url]
* Inspeccionar los encabezados de respuesta con-v
. es decir,domcurl -v [url]
* Establecer cookies con-b
, es decir,domcurl [url] -b "test = hello; Domain = airhorner.com; HttpOnly;" -b "hello = world; Domain = airhorner.com; HttpOnly;"
* Agregue encabezados personalizados con el argumento-H
. * Configure manualmente STDOUT con-o
y STDERR con--stderr
Lo encuentro muy útil aunque no puede transmitir los resultados como curl
porque tiene que esperar a que se descarguen y ejecuten CSS y JS.
También me tomé la libertad de agregar un par de características adicionales que son específicas de JavaScript y Chrome.
- Salida de un archivo de rastreo de Chrome Dev Tools (incluyendo pantallas hots.)
Domcurl --url https://example.com --trace test.json
* Incluirlo como un módulo de JavaScript si tiene la necesidad de integrarlo en cualquier de sus aplicaciones existentes.
const {domcurl} = require('domcurl');
domcurl(`https://paul.kinlan.me/`, {});
Si bien esta herramienta es más una demostración que un servicio completo, creo que The Headless Web está madurando y herramientas como Puppeteer y otros nos ayudarán a darnos cuenta del continuo poder de la web. Solo tenemos que construir para eso.