domcurl: curl + JavaScript

Долгое время я думал о том, как выглядит будущее Интернета, когда мы идем мимо того, что мы знаем как традиционный веб-браузер. Я назвал это The Headless Web, и я хотел ответить: «Что, если все работает от« Сети », но вы никогда не видели браузер?». В частности, я считаю, что если у вас есть доступ к полному браузеру, но не видимый для «хром», тогда есть огромная возможность для нового набора сервисов.

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.

Это заняло некоторое время, но я думаю, что мы добираемся туда.

Я влюблен в Puppeteer. Puppeteer - это библиотека JavaScript, которая находится поверх протокола Chrome Dev Tools, и позволяет вам автоматизировать и настроить браузер Chrome.

Моя повседневная работа включает в себя множество отладочных веб-серверов и обеспечение. Как и многие разработчики, я использую curl для отправки запросов на веб-сервер и проверки ответа. Это потрясающая утилита, однако в современном мире многие разработчики создают сайты, которые построены с использованием большого количества JavaScript, и это делает невозможным проверку полного ответа.

Я решил создать cUrl-подобную утилиту для извлечения ресурса и запуска JavaScript на странице с именем domcurl.

domcurl - это небольшое приложение NodeJS, которое использует Puppeteer и может быть установлено путем выдачи следующей команды:npm i domcurl. Как и команда curl, вы можете выпустить простойdomcurl [url]для извлечения ресурса и запуска JS на странице.

Он не реплицирует весь «завиток», но он довольно функциональен со следующими функциями.

  • Укажите URL-адрес для извлечения. то есть, domcurl [url] * Проверьте заголовки ответов на -v. то естьdomcurl -v [url]* Установить файлы cookie с-bi.e, domcurl [url] -b “test = hello; Domain = airhorner.com; HttpOnly;” -b “hello = world; Domain = airhorner.com; HttpOnly;” * Добавить пользовательские заголовки, используя аргумент -H. * Вручную установите STDOUT с помощью-oи STDERR с помощью –stderr`

Я нахожу это довольно полезным, хотя он не может передавать результаты, как «завиток», потому что ему нужно дождаться загрузки и исполнения CSS и JS.

Я также взял на себя смелость добавить несколько дополнительных функций, характерных для JavaScript и Chrome.

  • Выведите файл трассировки Chrome Dev Tools (включая экраны). Domcurl --url https://example.com --trace test.json * Включите его в качестве модуля JavaScript, если вам нужно интегрировать его в любой ваших существующих приложений.
const {domcurl} = require('domcurl');
domcurl(`https://paul.kinlan.me/`, {});

Хотя этот инструмент является скорее демонстрацией, чем полноценной услугой, я думаю, что The Headless Web созревает, и инструменты, такие как Puppeteer и другие, помогут нам понять постоянную силу Интернета. Нам просто нужно это сделать.

Paul Kinlan

Trying to make the web and developers better.

RSS Github Medium