fix(tradein/avito): бан-страница площадки уезжала в транспортные сбои и не банила узел (#3283) #3304

Merged
bot-backend merged 1 commit from fix/3283c-avito-sidecar-ban-is-platform-ban into main 2026-08-31 14:53:18 +00:00

1 commit

Author SHA1 Message Date
bot-backend
62980396db fix(tradein/avito): бан-страница площадки уезжала в транспортные сбои и не банила узел (#3283)
All checks were successful
CI Trade-In / changes (pull_request) Successful in 10s
CI / changes (pull_request) Successful in 12s
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 4m52s
Сайдкар распознаёт бан-страницу Авито («доступ ограничен: проблема с IP») по
маркерам тела и отдаёт 500 с ban_page=true; клиент поднимает
SidecarBanPageError. У Домклика её разбирают (#3239/#3283), у Авито — нет:
она попадала в общий `except Exception` и заворачивалась в
AvitoSidecarUnavailableError, то есть в ban_kind='infra'. Следствие — не
ярлык, а неработающая защита: report_ban не вызывался, узел не попадал в
scrape_proxy_source_bans и продолжал выдаваться в аренду для source=avito.

Прод, прогон 5606 (31.08): 64 бан-страницы за 23 минуты,
ban_kinds={"infra":26,"platform":7}, ноль записей бана для avito, прогон
оборван по доле блоков 14/20.

detail.py — ветка `except SidecarBanPageError` перед общим `except Exception`
(порядок важен: это подкласс httpx.HTTPStatusError). serp.py — та же проверка
ДО ротации и transient-бюджета: ротация в этой ветке мертва (max_rot=0),
поэтому ретраи маркерного бана ушли бы на тот же забаненный адрес — ещё два
захода на площадку и ~4-5 с задержки перед report_ban. Бюджет задуман под
блипы сайдкара (503 «browser unavailable»), а не под отказ площадки.

Обычная 500 без ban_page по-прежнему остаётся транспортным сбоем и report_ban
не вызывает — закреплено тестами в обе стороны.

Тесты: 5257 passed, 37 skipped.
2026-08-31 17:24:21 +03:00