Все кейсы
Данные · Скрейпинг

Скраперы, которые тянут миллионы записей

Устойчивые пайплайны сбора, которые проводят записи сквозь современные анти-бот стены — Kasada, Akamai, hCaptcha — и превращают их в чистые, дедуплицированные структурированные данные, пригодные для бизнеса.

Сфера
Сбор веб-данных сквозь современный анти-бот
Роль
Python-разработчик (один)
Послужной список
550 записей/час · 5 месяцев автономно · ноль блокировок

Проблема

Ценные данные спрятаны за стенами: телефоны открываются только по клику, Kasada проверяет отпечаток браузера ещё до выдачи контента, есть жёсткие лимиты на IP и hCaptcha посреди процесса. Обычный скрипт ловится за секунды — а если и зайдёт, с одного IP можно вытащить лишь немного, дальше сайт начинает прятать данные.

Клиентам нужны были сотни-тысячи свежих записей в день, сразу из нескольких источников, чистых и без дубликатов — а не штучно собранных руками.

Что я собрал

Устойчивый пайплайн сбора: зайти незаметно, вытащить в объёме, выйти чистыми структурированными данными.

Стелс

Выглядеть как живой пользователь

Обычный Selenium палится мгновенно. Я управляю браузером с настоящим отпечатком через AdsPower (по API) или перекомпилированным Chromedriver с шумом отпечатка и ротацией User-Agent — чтобы Kasada и прочие видели обычного посетителя, а не автоматизацию.

Ротация

Менять личность на лимите

Сайты ограничивают объём с одного IP (например, ~70 показов телефона в сутки). Счётчик следит за лимитом и прямо перед ним поднимает новый браузер, IP и отпечаток — и работа продолжается, сайт не успевает начать прятать данные.

Капча

Свой решатель hCaptcha

Когда появляется пазл, собственный модуль смотрит на картинку и вычисляет точный сдвиг в пикселях — ~90% точности, квадратные и круглые версии. Готовые сервисы были медленные и дорогие на объёме; позже это легло в основу моего open-source ReadyCaptcha.

Чистота

Нормализация + дедуп → одна база

Два прохода (дешёвый обход каталога, затем точечный сбор деталей), слой нормализации (чистые цены, коды стран, даты) и трёхуровневая дедупликация — автослияние, слияние с сохранением уникальных полей, ручная разметка для спорного. Записи уходят пакетами прямо в хранилище клиента: Airtable или боевую базу на AWS.

Что было сложно

  • Kasada проверяет отпечаток до выдачи контента — обычный Selenium его не проходит.
  • Лимиты на IP: вытащишь слишком много с одного адреса — сайт тихо начинает прятать данные, поэтому ротация личности должна быть автоматической и вовремя.
  • Дедуп — отдельный проект: пять пересекающихся сайтов описывают одну и ту же сущность по-разному; без настоящей трёхуровневой логики слияния каталог превращается в кашу.
  • Устойчивость на месяцы: сборщик контента отработал 5 месяцев без вмешательства, ломаясь только когда сайт менял вёрстку.

Результат

  • 550 структурированных записей в час, со спрятанными телефонами застройщиков — и ноль блокировок за всё время.
  • Пять пересекающихся сайтов сведены в один чистый дедуплицированный каталог в боевой базе клиента на AWS.
  • Сборщик для контент-аналитики, отработавший 5 месяцев автономно по расписанию.
  • Работа с капчей выросла в ReadyCaptcha — open-source инструмент, которым пользовались другие разработчики.
Что я вынес

Две вещи теперь переношу в каждый проект по сбору данных: дедупликация — это полноценная работа, заложенная с первого дня, а не уборка в конце; и рецепт «невидимого браузера» (настоящий отпечаток + перекомпилированный драйвер + ротация прокси) — мой стандарт для любого сайта с современной защитой.

Все кейсы