feat(tradein/avito): полный обход качает вторичку родным фильтром пути (#3033) #3039

Merged
bot-backend merged 1 commit from feat/3033-avito-native-secondary into main 2026-08-21 14:22:48 +00:00

1 commit

Author SHA1 Message Date
1b47cc5d7a feat(tradein/avito): полный обход качает вторичку родным фильтром пути (#3033)
All checks were successful
CI Trade-In / changes (pull_request) Successful in 8s
CI / changes (pull_request) Successful in 9s
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Successful in 4m25s
Почему: fetch_all_secondary(secondary_only=True) строил URL ОБЩЕЙ выдачи
(/kvartiry/prodam/<room-ASgB…>), скачивал 100 % (46 573 объявления в ЕКБ)
и выбрасывал новостройки после разбора — 79,4 % страниц и антибан-бюджета
впустую. У Авито есть родной фильтр: читаемый путь
/kvartiry/prodam/1-komnatnye/vtorichka (редирект на канонический, 2 551
объявление) — проверено вживую 21.08.2026 (#3033). Чем полнее обход, тем
выше отказ (full_load 83 % banned/failed против newbuilding_sweep 9,5 %) —
объём сам по себе фактор бана.

Что: _build_rooms_url в secondary-режиме (флаг на инстансе на время
fetch_all_secondary, сбрасывается в finally) строит путь из читаемого
префикса room-slug + /vtorichka; query (s, p, pmin, pmax) без изменений —
ценовая бисекция работает как раньше, но уже по распределению вторички.
Post-parse фильтр остаётся страховкой и счётчиком: last_dropped_nb →
AvitoFullLoadCounters.dropped_novostroyki (зеркало cian #1781) — при
работающем пути ≈0, рост = Авито перестал уважать путь, видно по числу.

Тест: подмена _fetch_serp_html, probe-URL всех seed-брекетов; на main
красный по значению (ASgB-slug в пути, /vtorichka нет); контроли —
secondary_only=False не меняется, режим не течёт за пределы вызова.

Refs #3033
2026-08-21 19:15:19 +05:00