Перейти до вмісту
AutoValue
28 серпня 2026 р. · Data Quality

Літо, коли наша кількість оголошень «зламалася»: щоденник зсередини краулера

AutoValue Editorial
Літо, коли наша кількість оголошень «зламалася»: щоденник зсередини краулера

Здебільшого я тримаю відкритою вкладку, яка просто показує кількість джерел. Нічого гарного — жодних графіків, жодних фільтрів, просто число біля кожного з 1 375 сайтів, з яких ми забираємо оголошення, і мітка часу останнього підключення кожного з них. Здебільшого це нудно так, як інфраструктура і має бути нудною. Цього літа все було інакше, і я думаю, що історія про те, що пішло не так, буде для вас, як для людини, що шукає авто, кориснішою за більшість порад «як купити вживане авто», які ми могли б написати натомість. Це про те, що насправді означають «дані в реальному часі», коли джерело, яке їх живить, — це 1 375 окремих вебсайтів, які вам нічим не зобов'язані.

Середина липня: число, яким я пишався

До середини липня ми довели реєстр джерел до 1 190 сайтів у 73 регіонах — результат кількох тижнів звірки дублікатів і мертвих посилань, які потихеньку роздували наш власний підрахунок. Пам'ятаю, як думав, що 1 190 реальних, підключених джерел — це те, чим варто пишатися. Це чимало окремих сайтів дилерів, дошок оголошень і аукціонних фідів, кожен зі своєю структурою HTML, своїми лімітами на кількість запитів, своєю думкою про те, чи скрапер — це клієнт, чи атака.

Потім почала давати результати кампанія з опрацювання накопиченого списку — черги з 683 джерел, які місяцями чекали своєї черги, деякі заблоковані, деякі просто ще не побудовані. За другу половину липня 274 з них були побудовані й підключені. До кінця місяця робоча кількість зросла до 1 464. Це той тиждень, скріншот якого хочеться зберегти.

Початок серпня: 241 джерело зникло

А потім — число, яке псує весь тиждень: за одну ніч 241 джерело перейшло в деградований стан. Не через щось, що зробили ми, — обліковий запис нашого провайдера проксі призупинили через несплату, а величезна частка нашого трафіку йде через ротаційні IP-адреси саме для того, щоб нас не блокували сайти, які обмежують швидкість запитів для скраперів. Немає проксі — немає свіжих сторінок, немає свіжих оголошень. Джерела не повідомляють, що вони зламані; вони просто тихо перестають повертати нові дані, поки їхні старі оголошення сидять там, виглядаючи актуальними.

Це та частина, яка не відображається в лічильнику оголошень на жодному сайті з авто, включно з нашим, якщо ви спеціально не шукаєте: «живий» маркетплейс може мати застарілі рядки поруч зі свіжими і зовні виглядати абсолютно однаково. Ми обумовили нові запуски краулера реальною перевіркою стану проксі, щоб мертвий пул не міг непомітно ще більше погіршити якість, і призупинили частини розкладу, які могли б погіршити ситуацію. Це не гламурна робота. Це та робота, про яку, якщо ви ніколи про неї не чуєте, значить, хтось зробив свою справу.

Відступ, бо про це варто сказати прямо: будь-який сайт, який стверджує, що має фіксовану, кругле число оголошень щодня, або насправді не є актуальним у реальному часі, або просто не розповідає вам про такі тижні, як цей.

Заморозка

Поновлення проксі виправило більшість проблем. Чого я не очікував, так це того, що сам краулер заблокується кілька тижнів по тому — дедлок при завершенні роботи, вісімнадцять з дев'ятнадцяти робочих потоків застрягли у futex_wait, нуль витраченого процесорного часу, і так 75 годин поспіль. Жодного збою, жодного лога помилок, що на когось кричить. Просто... нічого не відбувається, поки панель керування продовжує показувати останній успішний прохід так, ніби він актуальний. Ми ще не встановили сторожовий процес на цьому конкретному хості, а це той тип речення, яке пишеш лише після того, як описане в ньому вже одного разу з тобою сталося.

Ми побудували сторожовий процес. Ми призупинили розклад, доки поновлення проксі не підтвердило свою стабільність, а не ризикнули напівдеградованим краулінгом, який міг би непомітно замінити хороші рядки поганими — джерело, яке пройшло краулінг, отримує свої оголошення заміненими, а не об'єднаними, тому невдалий прохід не просто не додає даних — він може активно видалити хороші рядки і поставити на їхнє місце гірші. Саме через цю асиметрію ми краще проведемо день на застарілих даних, ніж на деградованих.

Де опинилося число

Ось підрахунок на сьогодні і форма тих шести тижнів, які привели нас сюди:

Ми зупинилися на 1 375 джерелах у 73 регіонах, які живлять 1 108 535 актуальних оголошень, з яких 12 823 наразі позначені як такі, що коштують нижче за ціни свого регіонального кластера. Це приблизно на 90 джерел менше за липневий пік — частина з тих 241 деградованих так і не відновилася повністю, деякі виявилися сайтами, які тим часом змінили свою позицію щодо антибот-захисту і потребували перебудови, а не просто повторного підключення. Над кількома з них ми досі працюємо.

Що це насправді означає для вас

Ніщо з цього не змінює, яке авто вам варто купити. Але це має змінити те, як ви читаєте будь-яке число «актуального асортименту» на будь-якому сайті з авто, не лише нашому. Франція наразі очолює наш регіональний підрахунок із 67 569 оголошеннями, Японія відстає ненабагато з 61 940, і ці числа рухаються — не тому, що сам ринок вживаних авто коливається настільки швидко, а тому, що рухається інфраструктура, яка за ним спостерігає. Оголошення, яке застаріло на три дні через деградацію джерела, виглядає точнісінько як свіже, якщо платформа не чесна щодо цієї різниці.

Ми краще розповімо вам про 75-годинну заморозку, ніж вдаватимемо, що наше число ніколи не хитається. Набір даних, який ніколи не визнає поганого тижня, — це набір даних, якому варто довіряти менше, а не більше.

Data QualityWEB ScrapingMethodologyTransparencyMarket Data
Поділитися

Схожі статті