Обезглавленное браузер является веб - браузер без графического пользовательского интерфейса .
Безголовые браузеры обеспечивают автоматическое управление веб-страницей в среде, аналогичной популярным веб-браузерам, но они выполняются через интерфейс командной строки или с использованием сетевого взаимодействия. Они особенно полезны для тестирования веб-страниц, поскольку они могут отображать и понимать HTML так же, как браузер, включая элементы стиля, такие как макет страницы, цвет, выбор шрифта и выполнение JavaScript и Ajax, которые обычно недоступны при использовании других методы тестирования. [1]
Начиная с версии 59 Google Chrome [2] [3] и версии 56 [4] из Firefox , [5] есть встроенная поддержка для дистанционного управления браузера. Это позволило избежать более ранних попыток, особенно PhantomJS . [6]
Сценарии использования
Основные варианты использования безголовых браузеров:
- Автоматизация тестирования в современных веб-приложениях ( веб-тестирование )
- Создание скриншотов веб-страниц.
- Запуск автоматических тестов для библиотек JavaScript.
- Автоматизация взаимодействия веб-страниц.
Другое использование
Безголовые браузеры также полезны для парсинга веб-страниц . В 2009 году Google заявил, что использование автономного браузера может помочь их поисковой системе индексировать контент с веб-сайтов, использующих 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]
Альтернативы
Другой подход - использовать программное обеспечение, которое предоставляет API-интерфейсы браузера. Например, Deno предоставляет API-интерфейсы браузера как часть своего дизайна. Для Node.js наиболее полным провайдером является jsdom [17] . В то время как большинство из них способно поддерживать общие функции браузера (HTML парсинг, печенье , 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]
- Zombie.js является моделирование среды браузера для Node.js . [25]
- SimpleBrowser - это автономный веб-браузер, написанный на C #, поддерживающий .NET Standard 2.0 [26]
- DotNetBrowser - это проприетарная библиотека на основе .NET Chromium, которая обеспечивает режим внеэкранного рендеринга и может использоваться без встраивания или отображения окон. [27] [28]
Другой отмеченной ранее попыткой была envjs в 2008 году от Джона Ресига , которая была смоделированной средой браузера, написанной на JavaScript для движка Rhino . [29]
Смотрите также
- Безголовый компьютер
Рекомендации
- ^ "Что такое безголовый браузер?" . arhg.net .
- ^ «Начало работы с Headless Chrome» . developers.google.com .
- ^ а б в Бекерман, Дима (28.11.2018). "Headless Chrome: DevOps любят это, и хакеры тоже, вот почему | Imperva" . Блог . Проверено 22 февраля 2021 года .
- ^ «Примечания к выпуску Firefox 56» . developer.mozilla.org .
- ^ «Безголовый режим - поддержка браузера» . developer.mozilla.org .
- ^ «Быстрый старт» . phantomjs.org .
- ^ Мюллер, Джон (2007-10-07). «Официальный блог центра веб-мастеров Google: предложение сделать AJAX доступным для сканирования» . Официальный блог Центра веб-мастеров Google .
- ^ Роулингс, Мэтт (2013-11-20). «Безголовый браузерный ботнет, использованный в 150-часовой DDoS-атаке» . Бизнес 2 Сообщество .
- ^ Мелло младший, Джон П. (2014-03-25). «Безголовый веб-трафик угрожает интернет-экономике» . ecommercetimes.com .
- ^ Рейвуд, Дэн (2014-04-01). «Безголовые браузеры: законное программное обеспечение, которое позволяет атаковать» . ИТПроПортал .
- ^ Мюллер, Нил. «Учетная начинка» . owasp.org .
- ^ Шет, Химаншу (2020-11-17). «Selenium 4 теперь совместим с W3C: все, что вам нужно знать» .
- ^ «GitHub - Драматург» . Проверено 11 апреля 2021 .
- ^ «Github - кукловод» . Проверено 11 апреля 2021 .
- ^ Сильва, Франсиско (29 мая 2019 г.). «От capybara-webkit до Headless Chrome и ChromeDriver» . Блог | Воображаемое облако . Проверено 22 февраля 2021 года .
- ^ Бинц, Джон. "jasmine-headless-webkit - Самый быстрый способ запустить ваши спецификации Jasmine!" . johnbintz.github.io . Проверено 22 февраля 2021 года .
- ^ «JSDOM на GitHub - Выдает себя за визуальный браузер» . Проверено 18 апреля 2021 .
- ^ "нападение / зомби" . GitHub .
- ^ «ヘ ル ペ ス が 口 や し た 時 の 病院 の 方法 と は» . www.envjs.com . Архивировано из оригинала на 2015-02-23 . Проверено 13 марта 2015 .
- ^ «JavaScriptMVC - EnvJS» . javascriptmvc.com .
- ^ Майк Боулер. «HtmlUnit - Добро пожаловать в HtmlUnit» . sourceforge.net .
- ^ «Платформа (API Vaadin 7.3.4)» . vaadin.com . 6 ноября 2014 г.
- ^ "scrapinghub / splash" . GitHub .
- ^ «Архивная копия» . Архивировано из оригинала на 2015-05-28 . Проверено 28 мая 2015 .CS1 maint: заархивированная копия как заголовок ( ссылка )
- ^ «Зомби» . labnotes.org .
- ^ SimpleBrowserDotNet / SimpleBrowser , SimpleBrowserDotNet, 2021-02-10 , получено 2021-02-22
- ^ Примеры DotNetBrowser, TeamDev , 12 марта 2021 г. , получено 12 марта 2021 г.
- ^ «DotNetBrowser» . TeamDev. 2021-05-05.
- ^ Ресиг, Джон (2008-10-12). «env-js: среда браузера на чистом JavaScript» - через GitHub.