[tradein][scrapers] avito_detail_backfill: browser-fetch падает → curl-fallback → анти-бот 429 (+ снапшот тащит legacy не-ЕКБ листинги) #1814

Closed
opened 2026-06-19 18:51:11 +00:00 by lekss361 · 0 comments
Owner

Проблема

При параллельном backfill-тесте (2026-06-19) avito_detail_backfill массово падает: 2/6 enriched, 4/6 failed с curl: (56) CONNECT tunnel failed, response 429. Прокси-изоляция тут ни при чём (avito теперь полностью на своём auv-аккаунте, browser+curl) — проблема в самом fetch-пути.

Анализ

  • avito_detail_backfill.py:102-107 — при browser_mode создаёт BrowserFetcher(), ставит scraper._browser, и :191-194 зовёт fetch_detail(url, cffi_session=session, browser_fetcher=browser_fetcher).
  • Значит browser передаётся, НО ошибка curl: (56) 429 = сработал curl-fallback (#1805: browser firewall/empty → curl retry) → avito-антибот банит curl-фингерпринт даже на хорошем IP (browser camoufox проходит, curl — нет).
  • Browser-fetch падает на этих листингах, вероятно потому что снапшот тащит legacy НЕ-ЕКБ листинги: avito.ru/moskva/..., /sankt-peterburg/..., /tyumen/... (svob._planirovka) — старые/мёртвые объявления вне таргет-региона.

Что сделать

  1. Снапшот backfill ограничить ЕКБ-регионом (или активными листингами) — не тратить фетчи на legacy Москва/СПб (SELECT ... WHERE добавить region/EKB-фильтр или is_active).
  2. Не падать в curl-fallback для avito detail при browser-firewall — curl всё равно 429'ится (анти-бот). Лучше: пометить листинг failed/skip и идти дальше (browser-only, как cian SERP), чем жечь curl на бан.
  3. Опц.: на browser-fetch вернувший firewall/redirect для мёртвого листинга → deactivate listing (не ретраить вечно).

Контекст (что УЖЕ ок)

  • Прокси per-provider полностью изолированы: avito=auv (browser+curl), cian=ha, yandex=ti, generic=mproxy. Все 4 аккаунта живы.
  • cian backfill в том же тесте: 5/6 ok (browser, ha, pacing 12с) — работает.

Усилие

S-M (region-фильтр снапшота + browser-only для avito detail). Блокирует чистый avito-fill.

Файлы: tradein-mvp/backend/app/tasks/avito_detail_backfill.py, avito_detail.py (fallback). Cross-ref #1805 (avito SERP browser), #1812 (pacing). Анализ: vault research/Avito_Scraper_Endpoint_Map_0619.md.

## Проблема При параллельном backfill-тесте (2026-06-19) `avito_detail_backfill` массово падает: **2/6 enriched, 4/6 failed** с `curl: (56) CONNECT tunnel failed, response 429`. Прокси-изоляция тут ни при чём (avito теперь полностью на своём `auv`-аккаунте, browser+curl) — проблема в самом fetch-пути. ## Анализ - `avito_detail_backfill.py:102-107` — при `browser_mode` создаёт `BrowserFetcher()`, ставит `scraper._browser`, и `:191-194` зовёт `fetch_detail(url, cffi_session=session, browser_fetcher=browser_fetcher)`. - Значит browser передаётся, НО ошибка `curl: (56) 429` = сработал **curl-fallback** (#1805: browser firewall/empty → curl retry) → avito-антибот банит curl-фингерпринт даже на хорошем IP (browser camoufox проходит, curl — нет). - Browser-fetch падает на этих листингах, вероятно потому что **снапшот тащит legacy НЕ-ЕКБ листинги**: `avito.ru/moskva/...`, `/sankt-peterburg/...`, `/tyumen/...` (`svob._planirovka`) — старые/мёртвые объявления вне таргет-региона. ## Что сделать 1. **Снапшот backfill ограничить ЕКБ-регионом** (или активными листингами) — не тратить фетчи на legacy Москва/СПб (`SELECT ... WHERE` добавить region/EKB-фильтр или `is_active`). 2. **Не падать в curl-fallback для avito detail** при browser-firewall — curl всё равно 429'ится (анти-бот). Лучше: пометить листинг failed/skip и идти дальше (browser-only, как cian SERP), чем жечь curl на бан. 3. Опц.: на browser-fetch вернувший firewall/redirect для мёртвого листинга → deactivate listing (не ретраить вечно). ## Контекст (что УЖЕ ок) - Прокси per-provider полностью изолированы: avito=auv (browser+curl), cian=ha, yandex=ti, generic=mproxy. Все 4 аккаунта живы. - cian backfill в том же тесте: **5/6 ok** (browser, ha, pacing 12с) — работает. ## Усилие S-M (region-фильтр снапшота + browser-only для avito detail). Блокирует чистый avito-fill. **Файлы:** `tradein-mvp/backend/app/tasks/avito_detail_backfill.py`, `avito_detail.py` (fallback). Cross-ref #1805 (avito SERP browser), #1812 (pacing). Анализ: vault `research/Avito_Scraper_Endpoint_Map_0619.md`.
lekss361 added the
bug
priority/p2
scope/backend
scrapers
status/ready
tradein
labels 2026-06-19 18:51:20 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#1814
No description provided.