Идентификатор веб-технологий: определяет CMS, фреймворки, серверы, библиотеки и версии ПО по сигнатурам из 1800+ плагинов.
sudo apt install whatweb # Или из исходников: git clone https://github.com/urbanadventurer/WhatWeb cd WhatWeb ruby whatweb http://target.com
Разработан Эндрю Хортоном urbanadventurer и Бренданом Коулзом bcoles
Последний релиз: v0.6.4. 3 апреля 2026 г.
Лицензия: GPLv2
Данный продукт регулируется условиями, изложенными в соглашении об лицензии. Для получения дополнительной информации о WhatWeb посетите https://github.com/urbanadventurer/
Wiki: https://github.com/urbanadventurer/WhatWeb/wiki/
Если у вас есть какие-либо вопросы, комментарии или замечания относительно WhatWeb, пожалуйста, сначала ознакомьтесь с документацией, прежде чем связываться с одним из разработчиков. Мы всегда приветствуем ваш обратный отклик.
WhatWeb идентифицирует веб-сайты. Его цель — ответить на вопрос: «Что это за веб-сайт?». WhatWeb распознает веб-технологии, включая системы управления контентом (CMS), платформы для блогов, пакеты статистики/аналитики, библиотеки JavaScript, веб-серверы и встраиваемые устройства. WhatWeb имеет более 1800 плагинов, каждый из которых предназначен для распознавания чего-то разного. WhatWeb также определяет номера версий, адреса электронной почты, идентификаторы аккаунтов, модули веб-фреймворков, ошибки SQL и многое другое.
WhatWeb может быть незаметным и быстрым или тщательным, но медленным. WhatWeb поддерживает уровень агрессивности для управления компромиссом между скоростью и надежностью. Когда вы посещаете веб-сайт в своем браузере, транзакция включает множество подсказок о том, какие веб-технологии задействованы на этом сайте. Иногда одного посещения веб-страницы достаточно для идентификации сайта, но если это не так, WhatWeb может дополнительно запросить информацию у сайта. Уровень агрессивности по умолчанию, называемый «незаметным», является самым быстрым и требует только одного HTTP-запроса к сайту. Это подходит для сканирования публичных веб-сайтов. Более агрессивные режимы были разработаны для использования при тестировании на проникновение.
Большинство плагинов WhatWeb являются тщательными и распознают ряд подсказок — от незаметных до очевидных. Например, большинство сайтов на WordPress можно идентифицировать по мета-тегу HTML, например '', но у меньшинства сайтов на WordPress этот идентифицирующий тег удален, однако это не мешает WhatWeb. Плагин WhatWeb для WordPress имеет более 15 тестов, которые включают проверку фавикона, файлов установки по умолчанию, страниц входа и проверку наличия "/wp-content/" в относительных ссылках.
Использование WhatWeb для сканирования reddit.com.
$ ./whatweb reddit.com
http://reddit.com [301 Moved Permanently] Country[UNITED STATES][US], HTTPServer[snooserv], IP[151.101.65.140], RedirectLocation[https://www.reddit.com/], UncommonHeaders[retry-after,x-served-by,x-cache-hits,x-timer], Via-Proxy[1.1 varnish]
https://www.reddit.com/ [200 OK] Cookies[edgebucket,eu_cookie_v2,loid,rabt,rseor3,session_tracker,token], Country[UNITED STATES][US], Email[banner@2x.png,snoo-home@2x.png], Frame, HTML5, HTTPServer[snooserv], HttpOnly[token], IP[151.101.37.140], Open-Graph-Protocol[website], Script[text/javascript], Strict-Transport-Security[max-age=15552000; includeSubDomains; preload], Title[reddit: the front page of the internet], UncommonHeaders[fastly-restarts,x-served-by,x-cache-hits,x-timer], Via-Proxy[1.1 varnish], X-Frame-Options[SAMEORIGIN]
.$$$ $. .$$$ $.
$$$$ $$. .$$$ $$$ .$$$$$$. .$$$$$$$$$$. $$$$ $$. .$$$$$$$. .$$$$$$.
$ $$ $$$ $ $$ $$$ $ $$$$$$. $$$$$ $$$$$$ $ $$ $$$ $ $$ $$ $ $$$$$$.
$ `$ $$$ $ `$ $$$ $ `$ $$$ $$' $ `$ `$$ $ `$ $$$ $ `$ $ `$ $$$'
$. $ $$$ $. $$$$$$ $. $$$$$$ `$ $. $ :' $. $ $$$ $. $$$$ $. $$$$$.
$::$ . $$$ $::$ $$$ $::$ $$$ $::$ $::$ . $$$ $::$ $::$ $$$$
$;;$ $$$ $$$ $;;$ $$$ $;;$ $$$ $;;$ $;;$ $$$ $$$ $;;$ $;;$ $$$$
$$$$$$ $$$$$ $$$$ $$$ $$$$ $$$ $$$$ $$$$$$ $$$$$ $$$$$$$$$ $$$$$$$$$'
WhatWeb - Сканер веб-сайтов нового поколения, версия 0.6.4.
Разработан Эндрю Хортоном (urbanadventurer) и Бренданом Коулзом (bcoles)
Домашняя страница: https://morningstarsecurity.com/research/whatweb
Использование: whatweb [опции] <URL-адреса>
ВЫБОР ЦЕЛИ:
<ЦЕЛИ> Введите URL-адреса, имена хостов, IP-адреса, имена файлов или
диапазоны IP-адресов в формате CIDR, x.x.x-x или x.x.x.x-x.x.x.x.
--input-file=ФАЙЛ, -i Чтение целей из файла. Вы можете передавать
имена хостов или URL-адреса напрямую с помощью -i /dev/stdin.
ИЗМЕНЕНИЕ ЦЕЛИ:
--url-prefix Добавить префикс к целевым URL-адресам.
--url-suffix Добавить суффикс к целевым URL-адресам.
--url-pattern Вставить цели в URL-адрес. Требуется --input-file,
например www.example.com/%insert%/robots.txt
АГРЕССИВНОСТЬ:
Уровень агрессивности управляет компромиссом между скоростью/незаметностью
и надежностью.
--aggression, -a=УРОВЕНЬ Установить уровень агрессивности. По умолчанию: 1.
Уровни агрессивности:
1. Незаметный Делает один HTTP-запрос на цель. Также следует перенаправлениям.
3. Агрессивный Если сопоставлен плагин уровня 1, будут сделаны дополнительные запросы.
4. Тяжелый Делает много HTTP-запросов на цель. Агрессивные тесты из
всех плагинов используются для всех URL-адресов.
ОПЦИИ HTTP:
--user-agent, -U=АГЕНТ Идентифицироваться как АГЕНТ вместо WhatWeb/0.6.3.
--header, -H Добавить HTTP-заголовок, например "Foo:Bar". Указание стандартного
заголовка заменит его. Указание пустого значения, например
"User-Agent:", удалит заголовок.
--follow-redirect=КОГДА Контролировать, когда следовать перенаправлениям. КОГДА может быть
`never' (никогда), `http-only' (только HTTP), `meta-only' (только meta),
`same-site' (тот же сайт) или `always' (всегда).
По умолчанию: always.
--max-redirects=ЧИСЛО Максимальное количество последовательных перенаправлений. По умолчанию: 10.
АУТЕНТИФИКАЦИЯ:
--user, -u=<пользователь:пароль> Базовая HTTP-аутентификация.
--cookie, -c=КУКИ Предоставить куки, например 'name=value; name2=value2'.
--cookiejar=ФАЙЛ Прочитать куки из файла.
--no-cookies Отключить автоматическую обработку куки (улучшает производительность
при большом количестве потоков).
### Обработка куки
WhatWeb автоматически обрабатывает куки между перенаправлениями по умолчанию. Это повышает точность фингерпринтинга на сайтах, требующих управления сессиями.
- `--cookie, -c=COOKIES` — Установить начальные куки вручную
- `--cookie-jar=FILE` — Загрузить куки из файла
- `--no-cookies` — Отключить автоматическую обработку куки
**Заметка о производительности:** При большом количестве потоков (>100) обработка куки может повлиять на производительность. Используйте `--no-cookies` для максимальной скорости при массовых сканированиях.
ПРОКСИ:
--proxy <hostname[:port]> Задать имя хоста и порт прокси.
По умолчанию: 8080.
--proxy-user <username:password> Задать имя пользователя и пароль прокси.
ПЛАГИНЫ:
--list-plugins, -l Вывести список всех плагинов.
--info-plugins, -I=[SEARCH] Вывести список всех плагинов с подробной информацией.
Опционально поиск по ключевым словам через запятую.
--search-plugins=STRING Поиск плагинов по ключевому слову.
--plugins, -p=LIST Выбрать плагины. LIST — список через запятую выбранных
плагинов. По умолчанию — все.
Каждый элемент может быть директорией, файлом или именем плагина и
может иметь опциональный модификатор, например + или -
Примеры: +/tmp/moo.rb,+/tmp/foo.rb
title,md5,+./plugins-disabled/
./plugins-disabled,-md5
-p + является сокращением для -p +plugins-disabled.
--grep, -g=STRING|REGEXP Поиск строки STRING или регулярного выражения. Показывает
только совпадающие результаты.
Примеры: --grep "hello"
--grep "/he[l]*o/"
--custom-plugin=DEFINITION Определить пользовательский плагин с именем Custom-Plugin,
Примеры: ":text=>'powered by abc'"
":version=>/powered[ ]?by ab[0-9]/"
":ghdb=>'intitle:abc \"powered by abc\"'"
":md5=>'8666257030b94d3bdb46e05945f60b42'"
--dorks=PLUGIN Вывести Google dorks для выбранного плагина.
ВЫВОД:
--verbose, -v Подробный вывод включает описания плагинов. Использовать дважды
для отладки.
--colour,--color=WHEN управление использованием цвета. WHEN может быть `never',
`always' или `auto'.
--quiet, -q Не отображать краткий лог в STDOUT.
--no-errors Подавлять сообщения об ошибках.
ЖУРНАЛИРОВАНИЕ:
--log-brief=FILE Запись краткой, однострочной информации.
--log-verbose=FILE Запись подробной информации.
--log-errors=FILE Запись ошибок.
--log-xml=FILE Запись в формате XML.
--log-json=FILE Запись в формате JSON.
--log-sql=FILE Запись SQL INSERT операторов.
--log-sql-create=FILE Создание таблиц базы данных SQL.
--log-json-verbose=FILE Запись в подробном формате JSON.
--log-magictree=FILE Запись в формате MagicTree XML.
--log-object=FILE Запись в формате инспекции объектов Ruby.
--log-mongo-database Имя базы данных MongoDB.
--log-mongo-collection Имя коллекции MongoDB. По умолчанию: whatweb.
--log-mongo-host Имя хоста или IP-адрес MongoDB. По умолчанию: 0.0.0.0.
--log-mongo-username Имя пользователя MongoDB. По умолчанию: nil.
--log-mongo-password Пароль MongoDB. По умолчанию: nil.
--log-elastic-index Имя индекса для хранения результатов. По умолчанию: whatweb
--log-elastic-host Хост:порт HTTP-интерфейса Elasticsearch. По умолчанию: 127.0.0.1:9200
ПРОИЗВОДИТЕЛЬНОСТЬ И СТАБИЛЬНОСТЬ:
--max-threads, -t Количество одновременных потоков. По умолчанию: 25.
--open-timeout Время в секундах. По умолчанию: 15.
--read-timeout Время в секундах. По умолчанию: 30.
--wait=SECONDS Пауза SECONDS секунд между соединениями.
Полезно при использовании одного потока.
СПРАВКА И РАЗНОЕ:
--short-help Краткая справка по использованию.
--help, -h Полная справка по использованию.
--debug Вызывать ошибки в плагинах.
--version Вывести информацию о версии. (WhatWeb 0.6.4).
ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ:
* Сканирование example.com.
./whatweb example.com
* Сканирование reddit.com slashdot.org с подробными описаниями плагинов.
./whatweb -v reddit.com slashdot.org
* Агрессивное сканирование wired.com для определения точной версии WordPress.
./whatweb -a 3 www.wired.com
* Быстрое сканирование локальной сети с подавлением ошибок.
whatweb --no-errors 192.168.0.0/24
* Сканирование локальной сети на наличие веб-сайтов https.
whatweb --no-errors --url-prefix https:// 192.168.0.0/24
* Сканирование политик crossdomain в Alexa Top 1000.
./whatweb -i plugin-development/alexa-top-100.txt \
--url-suffix /crossdomain.xml -p crossdomain_xml
Поддерживаются следующие типы журналирования: * --log-brief=FILE Краткий, однострочный, grep-совместимый формат * --log-verbose=FILE Подробный * --log-xml=FILE Формат XML. Предоставлен XSL-стиль * --log-json=FILE Формат JSON * --log-json-verbose=FILE Подробный формат JSON * --log-magictree=FILE Формат MagicTree XML * --log-object=FILE Формат инспекции объектов Ruby * --log-mongo-database Имя базы данных MongoDB * --log-mongo-collection Имя коллекции MongoDB. По умолчанию: whatweb * --log-mongo-host Имя хоста или IP-адрес MongoDB. По умолчанию: 0.0.0.0 * --log-mongo-username Имя пользователя MongoDB. По умолчанию: nil * --log-mongo-password Пароль MongoDB. По умолчанию: nil * --log-elastic-index Имя индекса для хранения результатов. По умолчанию: whatweb * --log-elastic-host Хост:порт HTTP-интерфейса Elasticsearch. По умолчанию: 127.0.0.1:9200 * --log-errors=FILE Запись ошибок. Обычно выводится на экран красным цветом.
Вы можете выводить в несколько журналов одновременно, указав несколько параметров журналирования в командной строке. Продвинутые пользователи, желающие получить вывод в формате SQL, должны ознакомиться с исходным кодом для получения информации о неподдерживаемых функциях.
Совпадения определяются с помощью: * Текстовых строк (с учетом регистра) * Регулярных выражений * Запросов Google Hack Database (ограниченный набор ключевых слов) * Хешей MD5 * Распознавания URL * Паттернов HTML-тегов * Пользовательского кода Ruby для пассивных и агрессивных операций
Чтобы увидеть список поддерживаемых плагинов:
$ ./whatweb -l
Имя плагина - Описание
--------------------------------------------------------------------------------
1024-CMS - 1024 - одна из немногих CMS, лидирующей с реализацией...
360-Web-Manager - 360-Web-Manager
3COM-NBX - Телефонная система 3COM NBX. Утилита NBX NetSet является веб-интерфейсом i...
3dcart - 3dcart - Программное обеспечение для корзины 3dcart является.complete ecommerce s...
4D - Сервер развертывания веб-приложений 4D
4images - 4images - это мощная система управления веб-галереей изображений. Fe...
... (сокращено)
Чтобы увидеть больше деталей о плагине или найти плагины по ключевому слову:
$ ./whatweb -I phpBB
Подробный список плагинов WhatWeb
Поиск по phpBB
================================================================================
Плагин: phpBB
--------------------------------------------------------------------------------
Описание: phpBB - это бесплатный форум
Веб-сайт: http://phpbb.org/
Автор: Andrew Horton
Версия: 0.3
Возможности: [Да] Сопоставление паттернов (7)
[Да] Определение версии по паттерну
[Да] Функция для пассивных совпадений
[Да] Функция для агрессивных совпадений
[Да] Google Dorks (1)
Google Dorks:
[1] "Powered by phpBB"
================================================================================
По умолчанию загружаются все плагины.
Плагины можно выбирать по директориям, файлам или именам плагинов в виде списка через запятую с помощью опции командной строки -p или --plugin.
Каждый элемент списка может иметь модификатор: + добавляет к полному набору, - удаляет из полного набора, а отсутствие модификатора переопределяет настройки по умолчанию.
Опция командной строки --dorks <имя плагина> возвращает Google dorks для выбранного плагина. Например, --dorks wordpress возвращает "is proudly powered by WordPress"
Опция командной строки --grep, -g ищет выбранную строку на целевой странице и возвращает совпадение в плагине с именем Grep, если оно найдено.
WhatWeb предлагает несколько уровней агрессивности. По умолчанию уровень агрессивности установлен на 1 (маскировочный), что отправляет один HTTP-запрос GET и также следует редиректам.
--aggression, -a
1. Маскировочный. Выполняет один HTTP-запрос к каждой цели. Также следует редиректам.
2. Не используется.
3. Агрессивный. Может выполнить несколько HTTP-запросов к каждой цели. Это активирует агрессивные плагины для целей только в том случае, если эти плагины были идентифицированы с помощью запроса уровня 1.
4. Навязчивый. Выполняет множество HTTP-запросов к каждой цели. Агрессивные тесты от всех плагинов используются для всех URL-адресов.
Агрессивные плагины уровня 3 будут угадывать больше URL-адресов и выполнять действия, которые потенциально неприемлемы без разрешения. В настоящее время WhatWeb не поддерживает тесты вторжения/эксплуатации в плагинах.
Сканирование уровня 1 (маскировочное) определяет, что сайт smartor.is-root.com/forum/ использует phpBB версии 2:
$ ./whatweb smartor.is-root.com/forum/
http://smartor.is-root.com/forum/ [200] PasswordField[password], HTTPServer[Apache/2.2.15], PoweredBy[phpBB], Apache[2.2.15], IP[88.198.177.36], phpBB[2], PHP[5.2.13], X-Powered-By[PHP/5.2.13], Cookies[phpbb2mysql_data,phpbb2mysql_sid], Title[Smartors Mods Forums - Reloaded], Country[GERMANY][DE]
Сканирование уровня 3 (агрессивное) запускает дополнительные тесты в плагине phpBB, которые определяют, что сайт использует phpBB версии 2.0.20 или выше:
$ ./whatweb -p plugins/phpbb.rb -a 3 smartor.is-root.com/forum/
http://smartor.is-root.com/forum/ [200] phpBB[2,>2.0.20]
Обратите внимание на использование аргумента -p для выбора только плагина phpBB. Рекомендуется, но не обязательно, выбирать конкретный плагин при попытке определить версию ПО в агрессивном режиме. Этот подход гораздо более маскировочный, так как он ограничивает количество запросов.
WhatWeb не имеет кэширования, поэтому при использовании агрессивных плагинов на URL-адресах с редиректами вы можете загружать одни и те же файлы несколько раз.
WhatWeb предлагает несколько опций для повышения производительности и стабильности.
Команды --wait и --max-threads можно использовать для обхода IDS.
WhatWeb автоматически оптимизирует производительность вывода как для экрана, так и для файлов журналов на основе количества потоков:
Сценарий использования: Интерактивное сканирование, мониторинг в реальном времени.
Среднее количество потоков (6-50):
Сценарий использования: Стандартное пакетное сканирование, включая параметр по умолчанию (25 потоков).
Большое количество потоков (51+):
Вы можете переопределить эти значения по умолчанию как для вывода на экран, так и для файлов журналов:
# Принудительно выводить в реальном времени на экран и в журналы (медленнее, но немедленно)
./whatweb --output-sync -t 100 --log-brief=results.txt targets.txt
# Пользовательский размер буфера для логирования с высоким объемом
./whatweb --output-buffer-size=50 -t 100 --log-verbose=detailed.log targets.txt
# Полностью отключить буферизацию для немедленной записи в файлы
./whatweb --output-buffer-size=0 -t 10 --log-json=results.json targets.txt
Эти оптимизации применяются ко всем форматам вывода, включая краткий, подробный, XML, JSON и другие форматы журналов.
Поведение синхронизации вывода: - Включена: Каждая строка вывода немедленно записывается на диск/экран (медленнее, но в реальном времени) - Выключена: Вывод буферизуется в памяти перед записью (быстрее, но с задержкой)
Влияние размера буфера: - Размер 1: Минимальная буферизация, почти немедленный вывод - Размер 10: Небольшой буфер удерживает ~10 результатов перед записью - Размер 25+: Больший буфер уменьшает количество системных вызовов ввода-вывода для повышения производительности - Размер 0: Полностью без буферизации (эквивалентно включенной синхронизации)
Включите профилирование производительности для выявления узких мест:
# Базовое профилирование в stderr
WHATWEB_PROFILE=1 ./whatweb -t 25 targets.txt
# Сохранить профиль в файл
WHATWEB_PROFILE=1 WHATWEB_PROFILE_FILE=profile.txt ./whatweb -t 25 targets.txt
Примечание: Для профилирования необходим гем ruby-prof: gem install ruby-prof
Изменение user-агента с помощью опции командной строки -U или --user-agent позволит избежать правила Snort IDS для WhatWeb.
Если вы сканируете диапазоны IP-адресов, гораздо эффективнее использовать сканер портов, например massscan, чтобы обнаружить, какие порты 80 открыты, перед сканированием с помощью WhatWeb.
Определение набора символов с помощью плагина Charset резко снижает производительность из-за повышенного потребления CPU. Это требуется для логирования в форматах JSON и MongoDB.
WhatWeb поддерживает необязательные зависимости для логирования в MongoDB и определения набора символов.
Необязательные зависимости — это причина, по которой Gemfile разделен на группы, и WhatWeb не поставляется с Gemfile.lock. Если вам нужен Gemfile.lock, он будет создан при запуске bundle install.
Вы можете установить их с помощью групп Bundler:
Для включения логирования в MongoDB:
# Установить зависимости
bundle install --with mongo
# Если вы используете старую версию Bundler
GEMFILE_GROUPS="default mongo" bundle install
Для включения определения набора символов (требуется для логирования в форматах JSON и MongoDB):
# Установить зависимости
bundle install --with rchardet
# Если вы используете старую версию Bundler
GEMFILE_GROUPS="default rchardet" bundle install
# Скопировать плагин набора символов
cp plugins-disabled/charset.rb my-plugins/
Для установки всех необязательных зависимостей одновременно:
# Установить все необязательные группы
bundle install --with mongo rchardet
# Если вы используете старую версию Bundler
GEMFILE_GROUPS="default mongo rchardet" bundle install
Примечание: Определение набора символов резко снижает производительность из-за повышенного потребления CPU. Включайте его только при необходимости.
Плагины писать легко. Начните с изучения руководств по плагинам в папке my-plugins/.
Обзор руководств по плагинам находится здесь. plugin-tutorials.txt
После изучения руководств прочитайте раздел "Разработка" на вики.
Сборка WhatWeb для разработки регулярно обновляется.
Просматривайте вики для получения дополнительной документации и продвинутых техник использования.
Благодарим следующих людей, внёсших вклад в развитие WhatWeb.
Следить за всеми, кто внёс вклад в WhatWeb, довольно сложно. Если ваше имя отсутствует в списке, пожалуйста, дайте мне знать.