fix(tradein/avito-detail): живой прогрев сессии + батч-на-сессию — снимает 403 на curl-backfill (#1551) #2089
No reviewers
Labels
No labels
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
Fable 5 ревью
feedback/max
generative
GG-форсайт
needs-discussion
needs-human
observability
pause-bots
performance
priority/p0
priority/p1
priority/p2
priority/p3
scope/backend
scope/db
scope/devops
scope/frontend
scope/qa
scrapers
security
site-finder
stage/1
stage/2
status/blocked
status/done
status/needs-analysis
status/needs-fix
status/qa
status/ready
status/review
status/wip
tech-debt
tradein
ux
week ревью 1
wontfix
вторичка
ИРД
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#2089
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "fix/tradein-avito-detail-warmup-batch"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Проблема
avito_detail_backfillв curl-режиме (AVITO_DETAIL_BACKFILL_USE_CURL=true) строил холодную curl_cffi-сессию на каждую карточку и бил прямо в detail-URL → Avito-файрвол резал HTTP 403 (прод run 472: 6/8 blocked, abort на 2 enriched). Холодная сессия не имеет антибот-куки.Решение — живой прогрев + батч-на-сессию
Эмпирически отресёрчено на проде (резидентный sticky-прокси МГТС):
Referer=yandex) сеет антибот-куки → прогретая сессия держит батч detail-GET'ов. Detail-GET шлётReferer= URL search-страницы.Параметры (всё в
default_paramsjsonb — тюнятся в БД без редеплоя)research_everywarm_batchblock_cooldown_secwarm_timeout_srequest_delay_secФайлы
avito_detail.py:warm_up_session/research_in_session/build_warmed_session;fetch_detail(referer, reconnect_on_block)(kw-only, дефолты сохраняют browser/own-session/scrape_pipeline пути).avito_detail_backfill.py: use_curl-ветка строит warmed shared-сессию; warm_batch/research_every в loop; on-block cooldown+research; джиттер.Безопасность / харднинг
fetch_detailне меняются (проверено: admin.py, scrape_pipeline.py).build_warmed_session,research_in_session) обёрнуты вasyncio.wait_for(warm_timeout_s); warm_batch re-warm строит новую сессию ДО close старой (graceful degrade на timeout).Тесты
ruff line-100 clean; 324 passed, 1 skipped (tests/scrapers/ + tests/tasks/), без регрессий. Новые: warm_up_session/research_in_session, on-block cooldown+research-no-rebuild, abort-reorder.
Pre-push code-review: ⚠️ MINOR → все замечания (включая #1950-обёртки) устранены.