Безголовый браузер
— Безголовый браузер это веб-браузер без графического пользовательского интерфейса .
Безголовые браузеры обеспечивают автоматическое управление веб-страницей в среде, аналогичной популярным веб-браузерам, но выполняются через интерфейс командной строки или с использованием сетевого взаимодействия. Они особенно полезны для тестирования веб-страниц, поскольку способны отображать и понимать HTML так же, как это делает браузер, включая элементы стиля, такие как макет страницы, цвет, выбор шрифта и выполнение JavaScript и Ajax , которые обычно недоступны при использовании других методы тестирования. [1]
Начиная с версии 59 Google Chrome [2] [3] и версия 56 [4] из Firefox , [5] есть встроенная поддержка удаленного управления браузером. Это сделало предыдущие разработки устаревшими, особенно PhantomJS . [6]
Варианты использования
[ редактировать ]Основные варианты использования безголовых браузеров:
- Автоматизация тестирования в современных веб-приложениях ( веб-тестирование )
- Делаем скриншоты веб-страниц.
- Запуск автоматических тестов для библиотек JavaScript.
- Автоматизация взаимодействия веб-страниц.
Другое использование
[ редактировать ]Безголовые браузеры также полезны для парсинга веб-страниц . В 2009 году Google заявила, что использование headless-браузера может помочь их поисковой системе индексировать контент с веб-сайтов, использующих Ajax. [7]
Безголовые браузеры также использовались по-разному:
- Выполнять DDoS- атаки на веб-сайты. [8]
- Увеличение показов рекламы. [9]
- Автоматизируйте веб-сайты непредвиденными способами [10] например, для вброса учетных данных . [11]
Однако исследование браузерного трафика в 2018 году не выявило предпочтения злоумышленниками автономных браузеров. [3] Нет никаких признаков того, что безголовые браузеры используются чаще, чем обычные браузеры, для вредоносных целей, таких как DDoS-атаки, SQL-инъекции или атаки с использованием межсайтовых сценариев .
Использование
[ редактировать ]Поскольку несколько основных браузеров изначально поддерживают автономный режим через API , существует некоторое программное обеспечение для автоматизации браузера через унифицированный интерфейс. К ним относятся:
- Selenium WebDriver — W3C. реализация WebDriver, совместимая с [12]
- Playwright — библиотека Node.js для автоматизации Chromium, Firefox и WebKit. [13]
- Puppeteer — библиотека Node.js для автоматизации Chrome [14]
Автоматизация тестирования
[ редактировать ]Некоторые программы и платформы для автоматизации тестирования включают в себя безголовые браузеры как часть своих средств тестирования. [3]
- Capybara использует автономный просмотр через WebKit или Headless Chrome, чтобы имитировать поведение пользователя в своих протоколах тестирования. [15]
- По умолчанию Jasmine использует Selenium, но для запуска тестов браузера может использовать WebKit или Headless Chrome. [16]
- Cypress — фреймворк для фронтенд-тестирования.
- QF-Test — программный инструмент для автоматического тестирования программ через графический интерфейс пользователя, где для тестирования также можно использовать headless-браузер.
Альтернативы
[ редактировать ]Другой подход — использовать программное обеспечение, предоставляющее API-интерфейсы браузера. Например, Deno предоставляет API-интерфейсы браузера как часть своего дизайна. Для Node.js — jsdom [17] является наиболее полным поставщиком. Хотя большинство из них способны поддерживать общие функции браузера (парсинг HTML, cookie , XHR , некоторый JavaScript и т. д.), они не отображают DOM файлы и имеют ограниченную поддержку событий DOM . Обычно они работают быстрее, чем полноценные браузеры, но не могут правильно интерпретировать многие популярные веб-сайты. [18] [19] [20]
Другой — HtmlUnit , безголовый браузер, написанный на Java. HtmlUnit использует движок Rhino для обеспечения поддержки JavaScript и Ajax, а также возможности частичного рендеринга. [21] [22]
Список безголовых браузеров
[ редактировать ]Это различное программное обеспечение, предоставляющее автономные API-интерфейсы браузера.
- Splash — это автономный веб-браузер, написанный на Python с использованием механизма компоновки WebKit через Qt . Он имеет HTTP API, поддержку сценариев Lua и встроенную IDE на основе IPython (Jupyter). Разработка началась в ScrapingHub в 2013 году; он частично финансируется DARPA . [23] [24]
- — это симулированная среда браузера для Node.js. Zombie.js [25]
- SimpleBrowser — это автономный веб-браузер, написанный на C# и поддерживающий .NET Standard 2.0. [26]
- DotNetBrowser — это собственная библиотека на основе .NET Chromium, которая обеспечивает режим внеэкранного рендеринга и может использоваться без встраивания или отображения окон. [27] [28]
Еще одной отмеченной ранее разработкой была envjs в 2008 году от Джона Резига , которая представляла собой симулированную среду браузера, написанную на JavaScript для движка Rhino . [29]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «Что такое безголовый браузер?» . arhg.net . 7 октября 2009 г.
- ^ «Начало работы с Headless Chrome» . Developers.google.com . 27 апреля 2017 г.
- ^ Jump up to: а б с Бекерман, Дима (28.11.2018). «Безголовый Chrome: он нравится DevOps, хакерам тоже, и вот почему | Imperva» . Блог . Проверено 22 февраля 2021 г.
- ^ «Примечания к выпуску Firefox 56» . http://developer.mozilla.org . 26 февраля 2023 г.
- ^ «Безголовый режим — поддержка браузера» . http://developer.mozilla.org . Архивировано из оригинала 3 июня 2018 г. Проверено 31 августа 2017 г.
- ^ «Быстрый старт» . phantomjs.org .
- ^ Мюллер, Джон (7 октября 2009 г.). «Официальный блог Google для веб-мастеров: предложение по обеспечению возможности сканирования AJAX» . Официальный блог Центра веб-мастеров Google .
- ^ Роулингс, Мэтт (20 ноября 2013 г.). «Ботнет без головы браузера использовался в 150-часовой DDoS-атаке» . Сообщество Бизнес 2 .
- ^ Мелло-младший, Джон П. (25 марта 2014 г.). «Безголовый веб-трафик угрожает интернет-экономике» . ecommercetimes.com .
- ^ Рэйвуд, Дэн (01 апреля 2014 г.). «Безголовые браузеры: законное программное обеспечение, позволяющее атаковать» . ИТПроПортал .
- ^ Мюллер, Нил. «Вброс учетных данных» . owasp.org .
- ^ Шет, Химаншу (17 ноября 2020 г.). «Selenium 4 теперь совместим с W3C: все, что вам нужно знать» .
- ^ «GitHub — Драматург» . Гитхаб . Проверено 11 апреля 2021 г.
- ^ «Гитхаб — Кукловод» . Гитхаб . Проверено 11 апреля 2021 г.
- ^ Сильва, Франциско (29 мая 2019 г.). «От capybara-webkit до Headless Chrome и ChromeDriver» . Блог | Воображаемое облако . Проверено 22 февраля 2021 г.
- ^ Бинц, Джон. "jasmine-headless-webkit — Самый быстрый способ запустить спецификации Jasmine!" . johnbintz.github.io . Проверено 22 февраля 2021 г.
- ^ «JSDOM на GitHub — притворяется визуальным браузером» . Гитхаб . Проверено 18 апреля 2021 г.
- ^ «ассаф/зомби» . Гитхаб .
- ^ или глаза? Каковы симптомы и методы лечения в больнице?» .. www.envjs.com из оригинала 23 февраля 2015 . Архивировано г «Может ли герпес передаваться через рот
- ^ «JavaScriptMVC — EnvJS» . javascriptmvc.com . Архивировано из оригинала 23 мая 2015 г. Проверено 13 марта 2015 г.
- ^ Майк Боулер. «HtmlUnit – Добро пожаловать в HtmlUnit» . sourceforge.net .
- ^ «Платформа (API Vaadin 7.3.4)» . vaadin.com . 6 ноября 2014 г.
- ^ «скребок/всплеск» . Гитхаб . 20 декабря 2021 г.
- ^ «DARPA — Открытый каталог» . Архивировано из оригинала 28 мая 2015 г. Проверено 28 мая 2015 г.
- ^ «Зомби» . labnotes.org .
- ^ SimpleBrowserDotNet/SimpleBrowser , SimpleBrowserDotNet, 10 февраля 2021 г. , получено 22 февраля 2021 г.
- ^ Примеры DotNetBrowser , TeamDev, 12 марта 2021 г. , получено 12 марта 2021 г.
- ^ «ДотНетБраузер» . TeamDev. 05.05.2021.
- ^ Резиг, Джон (12 октября 2008 г.). «env-js: среда браузера на чистом JavaScript» — через GitHub.