domcurl: curl + JavaScript

Depuis longtemps, je pense à l’avenir du Web lorsque nous dépassons ce que nous appelons le navigateur Web traditionnel. J’ai appelé cela The Headless Web et je voulais répondre: “Et si tout fonctionnait avec” Le Web “, mais vous n’avez jamais vu de navigateur?”. Plus précisément, je crois que si vous avez accès à un navigateur complet, mais pas visible pour “chrome”, il existe une énorme opportunité pour un nouvel ensemble de services.

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.

Cela a pris du temps, mais je pense que nous y arrivons.

Je suis amoureux de Puppeteer. Puppeteer est une bibliothèque JavaScript qui repose sur le protocole Chrome Dev Tools et vous permet d’automatiser et de scripter le navigateur Chrome.

Mon travail quotidien implique beaucoup de serveurs Web de débogage et de garantir. Comme beaucoup de développeurs, j’utilise curl pour faire des requêtes à un serveur Web et vérifier la réponse. C’est un utilitaire incroyable, mais dans le monde d’aujourd’hui, de nombreux développeurs construisent des sites qui utilisent beaucoup de JavaScript, ce qui rend impossible l’inspection de la réponse complète.

J’ai décidé de créer un utilitaire de type cUrl pour récupérer une ressource et exécuter le code JavaScript sur la page appelée domcurl.

domcurl est une petite application NodeJS qui utilise Puppeteer et peut être installée en lançant la commande suivante:npm i domcurl. Comme la commande curl, vous pouvez lancer un simpledomcurl [url]pour récupérer la ressource et exécuter le JS sur la page.

Il ne réplique pas tout le curl, mais il est assez caractéristique avec les fonctionnalités suivantes.

  • Spécifiez une URL à récupérer. i.e, domcurl [url] * Inspectez les en-têtes de réponse avec -v. c’est-à-dire domcurl -v [url] * Définir les cookies avec -bi.e,domcurl [url] -b” test = hello; Domain = airhorner.com; HttpOnly; “ -b “hello = world; Domain = airhorner.com; HttpOnly;” * Ajouter des en-têtes personnalisés en utilisant l'argument -H. * Définir manuellement le STDOUT avec -o et STDERR avec --stderr

Je trouve cela très utile bien qu’il ne puisse pas diffuser les résultats comme curl car il doit attendre que le CSS et JS soient téléchargés et exécutés.

J’ai également pris la liberté d’ajouter quelques fonctionnalités supplémentaires spécifiques à JavaScript et à Chrome.

  • Générer un fichier de trace des outils de développement Chrome (y compris les écrans d’affichage des écrans). de vos applications existantes.
const {domcurl} = require('domcurl');
domcurl(`https://paul.kinlan.me/`, {});

Bien que cet outil soit plus une démo qu’un service complet, je pense que The Headless Web évolue et que des outils tels que Puppeteer et d’autres vont nous aider à réaliser la puissance continue du Web. Nous avons juste besoin de construire pour cela.

Paul Kinlan

Trying to make the web and developers better.

RSS Github Medium