Подготовка и первичная проверка URL
Начальный этап анализа начинается с указания URL-адреса исследуемой страницы и выполнения сетевого запроса методом GET или HEAD. Первичные проверки включают поступивший HTTP-статус (например, 200, 301, 404), заголовок Content-Type (обычно text/html; charset=UTF-8) и время ответа в миллисекундах. Перед извлечением контента проверяется директива robots (по meta robots и заголовку X-Robots-Tag) и наличие rel=»canonical». При необходимости логируется цепочка редиректов и коды 3xx для восстановления конечного адреса.
В тексте запроса фиксируются параметры схемы (http/https), наличие query-параметров и фрагмента. При оценке сетевого слоя указывается версия TLS (обычно 1.2 или 1.3) и валидность сертификата по дате истечения.
Проверка доступности, статуса HTTP и редиректов
Проверка доступности включает повторный запрос с контрольными заголовками Accept и User-Agent, анализ заголовков Cache-Control и Set-Cookie, а также таймауты (обычно 5–30 секунд в зависимости от политики). Для редиректов фиксируются коды 301/302/307/308 и количество переходов; превышение 10 редиректов рассматривается как аномалия. Важный показатель — заголовок Content-Length и поддержка сжатия (Accept-Encoding: gzip, br). Дополнительно проверяется корректная доставка статических ресурсов (изображения, CSS, PDF), включая каталоги и прайс-листы, таких как Профлист для забора.
Определение ограничений: paywall, авторизация, динамика
Выявление ограничений включает анализ ответов сервера на неавторизованные и авторизованные запросы, проверку наличия форм логина или заглушек paywall и загруженности контента через XHR/Fetch. Для SPA проверяется наличие обфусцированных скриптов и initial-state в HTML, а также наличие данных, подготавливаемых на клиенте (динамические запросы к API, количество XHR-запросов и их ответы в формате JSON).
Извлечение и структура видимого контента
Основная цель — отделить основной текст от шаблонных блоков. Для этого применяется анализ DOM, вычисление плотности текста по узлам, обнаружение тегов article, main и role=»main» и удаление навигации и боковых панелей. В ходе выбирается title и description, фрагменты с H1–H6 для восстановления оглавления.
Алгоритм выделения основного текста и заголовков
Алгоритм включает парсинг HTML5-doctype, определение charset через , построение дерева DOM и оценку веса узлов по длине текста, ссылочной плотности и позициям тегов header/article. Заголовки H1–H6 фиксируются с указанием порядка и контекста в DOM; частота повторов и уровень вложенности используются для реконструкции иерархии разделов.
Работа с мультимедиа: изображения, видео, аудио
Изображения извлекаются по атрибутам src, srcset и sizes; фиксируются форматы (JPEG, PNG, WebP), значения width/height и alt-тексты. Видео и аудио анализируются по тегам video/audio и по iframe-встраиваниям; указывается источник, MIME-тип (например, video/mp4, video/webm) и наличие альтернативных дорожек. Отдельно фиксируются lazy-loading атрибуты и CDN-хосты.
Метаданные и формализованные описания
Метаданные включают title, meta name=»description», rel=»canonical», meta name=»robots» и Open Graph теги og:title, og:description, og:type и og:image. Эти элементы используются для определения типа страницы (Article, Product, Event, Landing) и краткого тематического описания.
Обзор meta-тегов, Open Graph и каноников
Проверяются дублирование title/description, длина title (обычно до 60 символов) и description (до 160 символов), а также корректность rel=»canonical» — он должен указывать предпочитаемую версию URL и содержать ту же схему и хост. Open Graph и Twitter Card фиксируются по наличию og: и twitter:meta.
Поиск и интерпретация JSON-LD, Microdata, RDFa
Структурированные данные ищутся в и в атрибутах itemtype/itemprop или RDFa. Проверяются контексты @context и @type (например, schema.org/Article, Person, Event). Из JSON-LD извлекаются поля headline, author, datePublished, image и offers, если присутствуют.
Технические проверки и безопасность
Технический аудит включает анализ подключаемых скриптов, доменов трекеров, наличие third-party-запросов и cookie с атрибутами HttpOnly, Secure и SameSite. Проверяется политика CORS и заголовки Content-Security-Policy. Фиксируются внешние редиректы и обращения к IP-адресам вместо DNS-имен.
Анализ скриптов, трекеров и cookie
Анализируется список , количество уникальных внешних хостов и цели скриптов (аналитика, реклама, виджеты). Отслеживаются запросы к популярным аналитическим эндпоинтам и наличие пикселей. В cookie проверяются атрибуты Secure, HttpOnly и SameSite для оценки риска сессий и утечек.
Проверка HTTPS, mixed content и внешних редиректов
Проверяется корректность TLS-сертификата и цепочки доверия, отсутствие mixed content (загрузка HTTP-ресурсов на HTTPS-странице) и редиректы на внешние домены с изменением схемы. Наличие mixed content может приводить к блокировкам браузером и влияет на безопасность загрузки ресурсов.
Доступность, язык и семантика
Оценивается наличие aria-атрибутов (aria-label, aria-hidden), корректность alt-текстов для изображений, использование семантических тегов article, nav, header, footer и атрибута lang в теге html. Кодировка определяется через meta charset; UTF-8 является стандартом де-факто.
Оценка ARIA, alt-текстов и семантических тегов
Проверяется соответствие alt-текстов содержимому изображений и отсутствие пустых alt там, где изображение несёт смысл. ARIA-атрибуты анализируются на предмет доступности взаимодействия с клавиатурой и вспомогательными технологиями; роль landmark-тегов помогает восстановить структуру для скринридеров.
Определение языка и кодировки страницы
Язык фиксируется по атрибуту lang и по заголовку Content-Language. Кодировка определяется через meta charset или заголовок Content-Type; конфликт между заголовком и метатегом сигнализирует о проблемах парсинга текста.
Форматы вывода и практические рекомендации
Часто применяемые форматы вывода — JSON с полями url, status, title, description, headings[], images[], scripts[] и schema: {type, data}. Пример вывода в JSON: {«url»:»…»,»status»:200,»title»:»…»,»headings»:[{«tag»:»h1″,»text»:»…»}],»schema»:[{«@type»:»Article»,»headline»:»…»}]}.
Примеры структурированных результатов (JSON, таблица)
JSON позволяет сохранить вложенные структуры и метаданные запросов (заголовки ответа, время). Альтернативный табличный экспорт представляет строки: url, status, title, author, date, но в машинных сценариях JSON обеспечивает более точную сериализацию вложенных сущностей и массивов.
Рекомендации по выбору инструментов и методов парсинга
Для единичных проверок используются HTTP-клиенты и HTML-парсеры с поддержкой CSS- и XPath-селекторов. Для страниц с динамикой применяются headless-браузеры с возможностью снятия HAR и исполнения JavaScript. Для валидации структурированных данных подходят JSON-LD парсеры и схемные валидаторы, а для оценки доступности — инструменты, проверяющие ARIA и наличие alt-текстов.
