Подтвердить что ты не робот

Безголовый node.js браузер javascript со скриншотом?

Существуют ли безглавые браузеры для node.js, которые поддерживают сброс выводимой страницы в файл? Я знаю, phantomjs поддерживает рендеринг в файл, но он не работает на node.js. Я знаю, zombie.js - это браузер без браузера node.js, но он не поддерживает рендеринг в файл.

4b9b3361

Ответ 1

Я сомневаюсь, что вы найдете что-нибудь, что будет работать, а также фантомы. Я бы просто рассматривал рендеринг как процесс async-бэкэнд и выполнял phantom в подпроцессе из вашего основного процесса node.js и называет его днем. Рендеринг веб-страницы HARD, и поскольку phantom основан на WebKit, он действительно может это сделать. Я не думаю, что когда-нибудь будет библиотека node, которая может отображать веб-страницу в графическом файле, который не построен на существующем движке рендеринга браузера. Но, возможно, однажды phantomjs будет более легко интегрироваться с node.

Ответ 2

Попробуйте nightmare, он использует электрон, он намного быстрее, чем phantomjs, и API легко и использует современный JavaScript-код ES6.

Ответ 3

Это может выглядеть как решение с небольшими накладными расходами...

Вы можете использовать Mozilla Firefox с плагином MozRepl. В основном этот плагин предоставляет вам telnet-порт для вашего Firefox, который позволяет вам управлять браузером со стороны. Вы можете открывать URL-адреса, делать скриншоты и т.д. Запуск Firefox с сервером Xvfb запустит его в режиме безглавых.

Теперь вам просто нужно управлять браузером снаружи с помощью node.js. Я видел несколько примеров, когда кто-то реализовал http-подобный интерфейс внутри chrome.js Firefox. Таким образом, вы можете запустить команду http, чтобы получить скриншот. Затем вы можете использовать http-вызовы из node.js. Это может показаться странным, но на самом деле это может сработать для вас.

Я запускаю слегка модифицированную версию в Perl Mojolicious в режиме async для запуска скриншотов. Однако есть небольшая проблема. Когда требуются плагины, они действительно работают, однако Flash обычно активируется, когда он находится в видимой области, этого не произойдет, так что фильмы/флеш файлы могут не инициализироваться.

Ответ 4

Вы можете найти это полезным, хотя это не javascript.

Существует инструмент на основе webkit, называемый wkhtmltopdf ", который, как я понимаю, включает поддержку javascript, используя виджет веб-набора QT. Он выводит визуальное представление (" снимок экрана", если хотите) страницы в формате PDF.

FWIW, здесь есть также привязки PHP: php-wkthmltox

Ответ 5

Есть проект под названием Node -Chimera. Хотя он не настолько зрелый, как Phantomjs, он имеет все функции, о которых вы упоминали: он работает на собственных Nodejs и позволяет отображать страницы в файл. Репозиторий находится здесь: https://github.com/deanmao/node-chimera. В нем есть примеры, чтобы сделать именно то, что вам нужно.

Ответ 6

Команда Chrome dev выпустила Puppeteer, который можно использовать в node. Он использует Chrome с опцией без головок.