Мы уже неоднократно поднимали мысль о том, что алгоритмы парсинга становятся всё сложнее и сложнее. И проблема не столько в защите от ботов, хотя она тоже присутствует и постоянно совершенствуется, а в том, что сама по себе процедура создания сайтов стала сложнее. Сайты перестали строить из простого HTML-кода. Теперь это полноценные веб-приложения, которые работают с огромным объёмом JavaScript-кода и с распределённой инфраструктурой CDN-серверов (для доставки статического контента).
За построение интерфейса (фронтэнд) отвечают специальные конструкторы, такие как Jekyll, Hugo и прочие. А в их основе комплексные фреймворки: React, Vue, Angular и т.п. Все они дают на выходе крайне сложный динамический код, в котором иногда невозможно отследить хоть какую-то структуру.
Итак, этот материал о будущем и о тенденциях в веб-парсинге — для понимания того, как стоит выстраивать механизмы обхода систем защиты от ботов.
Раньше веб-скрапинг ассоциировался в первую очередь с анализом структуры HTML-кода страниц. Для этих задач с головой хватало таких библиотек, как BeautifulSoup или lxml. Простейшие сайты вообще отдавали своё содержимое прямо в теле HTTP-ответов, поэтому для сбора данных можно было задействовать простейший клиент, например, Python requests или node-fetch.
Но к 2025 году ситуация изменилась и причём кардинально. Сегодня сайты всё чаще строятся как динамические SPA-приложения, в которых значительная часть контента загружается непосредственно в браузере — через JavaScript.
Теперь нельзя просто так взять и спарсить сайт, нужно сначала ещё как-то получить итоговую версию HTML-страницы — она формируется динамически и сильно зависит от действий пользователя.
В настоящее время основным инструментом для парсинга становятся headless-браузеры. Пока страница сайта не отработает в реальном браузере (в его JavaScript-движке), вы не сможете получить результирующий HTML-код. Соответственно, и спарсить данные будет невозможно.
Если не использовать движок браузера, то вместо HTML вы получите ссылки на загрузку списка JavaScript-скриптов. И больше ничего. Да, оформлены они будут по всем канонам HTML, но самих данных здесь не будет. Более того, скрипты могут подгружать другие скрипты, а те в свою очередь очередные и так далее — как при сборке матрёшки (в рекурсии).
Чтобы начать взаимодействовать с браузерами из кода, нужен специальный программный интерфейс. За API отвечают специальные библиотеки, такие как Puppeteer, Playwright или Selenium. О каждой из них мы уже рассказывали с примерами кода.
Так как многие сайты завязывают свои функции на подписки и авторизацию в аккаунте, то при массовой работе с профилями точно потребуются специальные инструменты для ротации цифровых отпечатков. Как раз для этого и придумали антидетект-браузеры.
Более того, современные системы защиты от ботов умеют анализировать поведение и действия пользователей, поэтому крайне важно имитировать «человечность»: шевелить курсовом, посимвольно заполнять поля, скроллить страницу и прочее.
Из-за того, что стартовый набор для любого парсера получается фактически одинаковым, это связка из headless-браузера, библиотеки веб-драйвера и ротируемых прокси (для смены местоположения и обхода блокировок), стали набирать популярность готовые веб-сервисы, которые обеспечивают готовую рабочую инфраструктуру.
То есть браузер и прокси вы можете получить в формате «под ключ». Общение с такими удалёнными контейнерами осуществляется по специальному API — API для веб-скрапинга. Такой интерфейс часто включает наборы команд одновременно для управления браузером (какие страницы открывать, где и что заполнять) и прокси (из какой точки мира и с какого типа устройства нужно подключаться).
Отдельные сервисы умеют работать без API — через веб-интерфейс, с загрузкой списка целевых страниц и со скачиванием итоговых таблиц с данными.
Что может быть проще? Отдал серверу список сайтов/страниц на парсинг, задал параметры локации (откуда подключаться — из какой страны, региона или города) и просто забрал готовую структурированную информацию. Профит!
Остаётся только оплатить подходящую подписку и не заморачиваться с написанием своих скриптов и развёртыванием серверов.
Пример такого готового парсера — Froxy Scraper, с предоплатой за пакеты запросов/токенов. Примеры предметных инструкций, как с его помощью можно собирать данные из поиска Google или с торговой площадки eBay.
Что такое веб-скрапинг на основе ИИ? Технически это задействование технологий искусственного интеллекта в процессе извлечения структурированных данных. Например, можно привлечь нейросеть для распознавания скриншотов или для создания описаний образов на картинках и в видео, для транскрибации аудио, для поиска повторяющихся паттернов в вёрстке и т.п. ИИ вполне может работать с исходным кодом всей страницы или отдельных блоков.
Возвращаясь к тенденциям защиты от парсинга: некоторые web-сервисы научились уникализировать HTML-структуру для каждой отдельной страницы, например, за счёт замены стандартных CSS-классов на идентификаторы, которые генерируются для каждой новой сессии.
В этом случае невозможно вычленить повторяющийся паттерн, гораздо легче сразу отдать данные на анализ в нейросеть. Она сама найдёт в каком блоке вставлена цена, где заголовок товара, где оценка рейтинга и т.п. А данные может отдать в структурированном виде — сразу с разметкой (JSON, XML и т.п.).
Основные плюсы веб-парсинга с ИИ можно обозначить так:
Минусы и ограничения ИИ веб-парсинга:
Итого: нейросети и ИИ вполне могут помочь с парсингом, особенно, если вы зашли в тупик с написанием парсера под постоянно меняющуюся верстку. Но пока нет варианта получить готовое решение для парсинга с ИИ. Нейросети не умеют самостоятельно работать с сайтами (напрямую), им обязательно нужно перенаправлять актуальные данные. Соответственно, их ещё нужно получить. И уж точно ИИ не будет вместо вас обходить систему защиты сайтов, например, решать капчу — это чистый хайп.
Раньше верхом совершенства была проверка на поддержку JavaScript — если её нет, то и сайт просматривает не человек. Но времена изменились. Сайты научились не только проверять User-Agent, но и анализировать комплексные цифровые отпечатки: местоположение, тип IP-адреса, список поддерживаемых шрифтов, разрешение экрана, модель процессора, графического ускорителя и прочее. Некоторые сервисы даже используют ИИ для оценки естественности поведения пользователя.
Эволюцию защиты легко отследить на примере изменения алгоритмов капчи:
Новые тренды всё больше склоняются к «невидимой капче». Пользователя и его поведение оценивают в фоне, без каких-либо головоломок.
Цифровые отпечатки могут включать в себя сотни разных параметров. Поэтому, даже если парсер на базе безголового браузера поменяет IP-адрес или значение User-Agent, то сайт всё равно его узнает по остальным техническим признакам. В их числе куки, характерные паттерны поведения (прокрутка страниц и перемещение курсора, задержки между кликами), взаимодействие с элементами сайта.
Если раньше вполне достаточно было поменять IP-адрес на любой другой, чтобы системы защиты целевого сайта вас «забыла», то сейчас, когда анализируются цифровые отпечатки и параметры самого IP-адреса, этого уже недостаточно.
На первое место выходит уже не столько возможность ротации IP, сколько качество адреса: его привязка к сетям домашних пользователей (резидентные прокси) или операторов мобильной связи (мобильные прокси). Например, серверные адреса легко вычленяются и всегда под особым подозрением (в группе риска). Их можно блокировать без тяжёлых последствий для основной целевой аудитории.
Чем «чище» пул адресов и чем естественнее они выглядят для целевой аудитории, тем ниже вероятность блокировки.
Для стабильного и масштабного парсинга важно использовать проверенного прокси-провайдера с широким пулом чистых IP-адресов, поддержкой ротации и удобной интеграцией с антидетект-браузерами или headless-решениями. Один из таких вариантов — Froxy: более 10 миллионов мобильных и резидентных IP с гибкой ротацией и верифицированными адресами, которые помогают эмулировать поведение реального пользователя.
Веб-скрапинг перестаёт быть просто скриптами, которые тянут HTML с сайтов. Всё больше и больше прокси-сервисов задумываются о предоставлении комплексной инфраструктуры в формате «headless-браузер + прокси для парсинга». С использованием таких сервисов проще и быстрее выстраивать многоуровневые системы для регулярного сбора больших объёмов информации. На каждом уровне есть свой инструмент или технология, которая эффективно решает свой пул задач:
Вместо предложенной многоуровневой модели могут использоваться «гибриды», когда за часть задач отвечает ИИ (чтобы парсер донастраивался по мере необходимости — нейросеть может самостоятельно формировать правила выборки по DOM-структуре), или готовые веб-сервисы (с API для парсинга, без прямого обращения к целевому ресурсу).
Прокси всё чаще реализуются в виде готового слоя для подключения. Они ведут статистику потребления, следят за ротацией по заданным критериям и правилам, самостоятельно очищают пул от проблемных адресов и т.п.
Очень хорошо, если прокси работают в связке с готовым парсером, тогда клиенту можно не переживать о балансировке нагрузки, о ротации и о других проблемах. Он просто формирует запрос и получает готовые структурированные данные, которые будут включаться в последующие цепочки анализа.
Веб-парсинг всё больше и больше напоминает микросервисную архитектуру веб-приложений, где каждый модуль (ИИ-агент, прокси-провайдер и т.п.) решает свою узкую задачу. При необходимости количество модулей можно оперативно нарастить или сократить, в зависимости от задач парсинга и его объёмов (по аналогии с оркестрацией).
Уже существуют готовые облачные реализации парсинга по API, и тенденция всё больше и больше усиливается. Не исключено, что в будущем клиенты будут покупать не прокси и парсер по отдельности, а готовые гибридные конвейеры обработки данных.