Как узнать CMS любого сайта

Как узнать CMS любого сайта - обзор от site-builders.ru

Если хорошо подумать, то у всего, что работает в интернете, есть свой цифровой отпечаток (след). В том числе у движков сайтов. Задача определения CMS может возникать по разным причинам, например, мониторинг конкурентов, технический аудит сайтов в нише, поиск лучших практик и решений на рынке, решение проблем с безопасностью и т.д.

Этот материал о том, как и с помощью чего можно определить CMS-систему сайта.

Какие способы определения CMS существуют

Условно варианты определения CMS можно разделить на следующие подходы:

  • Визуальный осмотр. Многие движки и онлайн-конструкторы активно продвигают свой бренд и потому указание на платформу можно найти где-нибудь в подвале сайта. Это может быть короткий текст, по аналогии со «Сделано на …» или красивый логотип. А иногда сайты имеют узнаваемую структуру и блоки, как виджеты в старых темах WordPress, или сквозное меню, как в Nethouse. Когда глаз намётан, некоторые популярные CMS узнаются с первого взгляда.
  • С помощью анализа HTTP-заголовков и кук. Чтобы получить такие данные не нужны никакие специальные парсеры или анализаторы кода. Ответ сервера и HTTP-заголовки можно посмотреть с помощью простых утилит, предустановленных в операционных системах, например, как Curl (в сети масса онлайн-реализаций этого инструмента, а начиная с Windows 10 утилита поставляется в базовом образе ОС). В куках и заголовках достаточно только найти особые атрибуты. Вот несколько примеров: «x-cms: ukit», «x-tilda-server:27», «Set-Cookie: 0siteruuCoz=; path=/;…». Догадаетесь кто где?
  • С помощью анализа исходного кода страниц и файловой структуры. Многие движки имеют уникальную организацию путей к важным системным файлам – шаблонам, скриптам, CSS-стилям и пр. В некоторых случаях может выдать структура URL-адреса или содержимое файлов с лицензиями, robots.txt и пр. Например, Тильда хранит статику на CDN (все картинки и скрипты имеют в адресе домен static.tildacdn.com), WordPress размещает плагины и темы в специальных каталогах (wp-content/plugins/…, wp-content/themes/…), как и 1С-Битрикс (/bitrix/components/…, /bitrix/templates/…) и т.п. А кто-то вообще напрямую указывает принадлежность к движку через специальный мета-тег, например, <meta name="generator" content="Joomla!...>.
  • С помощью готовых инструментов – онлайн-сервисов и браузерных расширений. Хотя часто браузерные расширения не работают без обязательной серверной части, которая и занимается анализом целевого адреса/сайта. Технически все такие инструменты – это парсеры, заточенные на задачи определения движка – по известным им цифровым отпечаткам CMS.
  • С помощью самописных парсеров. В сети масса готовых скриптов для разных языков программирования. Никто не запрещает вам написать свой код с нуля и поставить процесс определения CMS на поток. Достаточно организовать приём данных для задач через форму, файл (при работе с большими списками) или по API. Но это путь для настоящих самураев, а точнее программистов.

Конечно, у каждого подхода есть свои преимущества и недостатки. Например, чтобы определять CMS вручную (на уровне кода или с помощью HTTP-заголовков), нужны профильные навыки программирования, а ещё нужно составить базу всех цифровых отпечатков для известных движков и конструкторов. На это может уйти масса времени и сил, ведь CMS свыше нескольких сотен.

Гораздо удобнее использовать готовые сервисы, но они могут не знать отдельные движки, и могут блокироваться системами защиты целевого ресурса (в рамках борьбы с автоматическим трафиком и ботами, которые создают ненужную нагрузку на сервер).

В любом случае, новичкам рекомендуем готовые инструменты, так как мало кто готов погружаться в HTML-код и в HTTP-заголовки (ответы сервера).

Готовые инструменты для быстрого определения CMS

Ниже наиболее интересные решения в нише – онлайн-сервисы, браузерные расширения и профильные парсеры.

W3Techs

Формат использования: онлайн-сервис, расширения для браузеров (Google Chrome, Firefox), API.

Платный доступ: базовые возможности (онлайн-сервис и расширения) – бесплатно, доступ к API и массовый мониторинг/анализ – платно (невозможно оплатить с российских карт).

Возможности:

  • Определение CMS – 910+ систем.
  • Идентификация веб-сервера, хостинга, языка программирования, сторонних виджетов и форм, CDN, почтовых сервисов, систем аналитики, рекламных сетей, SSL-сертификатов, плагинов (только для отдельных CMS), схемы микроразметки, языка контента и страны работы сайта.

Дополнительно: ведение общего рейтинга и сводной аналитики по веб-технологиям, вплоть до распространённости версии CMS.

WhatCMS

Формат использования: онлайн-сервис, расширения для браузеров (Google Chrome, Firefox), API.

Платный доступ: базовые возможности (онлайн-сервис и расширения) бесплатно, доступ к API – от $20 в месяц за пакет проверок (невозможно оплатить с российских карт).

Возможности:

  • Определение CMS – 1200+ систем (по самым популярным определяется ещё и версия движка).
  • Идентификация веб-технологий – веб-серверы, CDN, языки программирования, фреймворки и т.п.

Дополнительно: отдельные инструменты для определения хостинга и тем оформления (только для WordPress и Shopify), сводная статистика по технологиям. До 500 запросов в месяц по API можно получить бесплатно.

2IP

Формат использования: только онлайн-сервис (веб-версия).

Платный доступ: бесплатно (всегда одиночные проверки).

Возможности:

  • Определение CMS – 110+ движков.

Дополнительно: отдельные инструменты для проверки IP-адресов, определения хостинга, DNS-параметров, посещаемости, всех доменов одного владельца и списка сайтов на том же сервере.

iTrack

Формат использования: только онлайн-сервис.

Платный доступ: бесплатно (всегда одиночные проверки), платно – по запросу (для пакетных проверок и мониторинга).

Возможности:

  • Определение CMS – 80+ движков.

Дополнительно: рейтинг CMS в Ру-сегменте на основе установок, история изменений и отзывы.

BuiltWith

Формат использования: онлайн-сервис, расширения для браузеров (Google Chrome, Edge, Firefox), API.

Платный доступ: бесплатно (одиночные проверки), платно – от $295 в мес. за расширенные отчёты и отдельно покупка пакетов запросов по API (не вариант оплатить из РФ).

Возможности:

  • Определение CMS-систем – 400+ вариантов (есть сложности с определением некоторых российских конструкторов).
  • Определение различных веб-технологий и виджетов – 100+ тыс. платформ (системы аналитики, онлайн-калькуляторы, опросы, попап-формы, хостинг, CDN, библиотеки и фреймворки, шрифты, рекламные сети, системы онлайн-оплаты и прочее).

Дополнительно: готовые данные аналитики для выборки и выгрузки в удобном формате – на основе 670+ млн. сайтов. Всё с разбивкой на категории, с долями рынка и привязкой к динамике, регионам и т.п. Часть данных предоставляется бесплатно (в открытом доступе).

WhatRuns

Формат использования: только расширения для браузеров (Google Chrome, Firefox).

Платный доступ: бесплатно (одиночные проверки).

Возможности:

  • Определение CMS-систем.
  • Определение веб-технологий и виджетов –более 1000 платформ (хостинг, веб-серверы, JavaScript-библиотеки, шрифты, CDN и прочее).

Дополнительно: мониторинг выбранных сайтов на постоянной основе (требуется создание аккаунта), шеринг результатов и сводная статистика по каждой веб-технологии.

A-Parser с модулем Rank::CMS

Формат использования: парсер (программа для ПК/сервера).

Платный доступ: от $299/навсегда (PRO-лицензия с доступом к нужному плагину).

Возможности:

  • Определение CMS-систем – 110+ вариантов (с разбивкой на категории).
  • Массовый парсинг целевых сайтов (по списку).
  • Тонкая настройка благодаря шаблонизатору – можно добавлять свои варианты CMS и веб-технологий (из коробки есть шаблоны для 800+ веб-технологий).
  • Запуск по расписанию, а также многопоточность (в паре с прокси-серверами).
  • Выгрузка в табличных и других форматах (JSON, CSV, SQL).
  • Возможность работы через headless-браузеры.

Дополнительно: ещё 90 готовых парсеров для разных задач, связанных с извлечением данных в сети.

Почему не получается определить CMS на конкретных сайтах

Есть несколько причин, почему сервисы и даже ручные методы не всегда могут определить движок сайта (или определяют CMS неправильно):

  • Намеренное скрытие следов CMS владельцами. Если злоумышленники знают движок сайта, а также владеют информацией об известных уязвимостях, то они могут успешно его атаковать. Чтобы усложнить задачу хакерам многие владельцы сайтов намеренно скрывают цифровые отпечатки CMS.
  • На сайте используется несколько движков одновременно. Например, главная страница и часть разделов используют один движок, а во внутренних разделах используются узкопрофильные движки: для обслуживания корпоративного блога, для сбора заявок/тикетов, для ведения документации и т.п. Технически никто не запрещает устанавливать CMS во вложенные категории – основной.сайт/blog (тут может стоять WordPress) или ваш-сайт.ru/forum (а тут MyBB).
  • На сайте нет CMS. Это вполне обычное явление, особенно в эпоху генераторов статических сайтов (Jekyll, VitePress и т.п.). В отдельных ситуациях, например, при создании лендингов, выгоднее выгрузить на хостинг чистый HTML, созданный в профильной программе или IDE-системе, и не переживать о взломе.
  • На сайте используется редкий (самописный) движок. А может и какой-нибудь новый онлайн-конструктор или CMS. Соответственно, у скрипта для определения просто нет нужного цифрового отпечатка.
  • Сайт отдаётся в виде статики через CDN-сервисы или прокси. Грубо говоря, вы обращаетесь не напрямую к ресурсу, а к его копии на серверах посредников. Они в свою очередь могут намеренно скрывать часть признаков.
  • Сайт фильтрует трафик от ботов. Как и говорилось выше, любое средство массового определения CMS представляет собой специализированный парсер. И если целевой ресурс активно следит за качеством подключений, он может блокировать доступ для известных ему ботов (в том числе для сервисов определения CMS).
Автор: Сергей Гаврилов
Редактор Site-Builders.ru