fix(tradein): sweep shared-session (SERP+detail) через mobile proxy (#623) #805
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
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#805
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "fix/623-pipeline-proxy"
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?
Корень проблемы (run scrape_runs id=9 → banned)
City-sweep падал в
bannedна HTTP 429 detail-страницы Avito (error: "Avito detail HTTP 429 …").Причина:
run_avito_pipeline/run_avito_city_sweepсоздают собственную sharedAsyncSessionи присваивают еёscraper._cffi, перезатирая проксированную сессию изAvitoScraper.__aenter__(#788). Через эту же сессию идёт и SERP, и detail (fetch_detail), и houses. Сессия создавалась безproxies→ detail летел с datacenter-IP → 429 →mark_bannedвсего run'а (обрывает sweep, 2/5 анкоров).Единичный
/admin/scrapeработал (зовётfetch_aroundнапрямую → проксированный_cffi), поэтому SERP-проверка #788 прошла, а cron-sweep — нет.Фикс
scrape_pipeline.py:_avito_proxies()(изsettings.avito_proxy_url) →proxies=в обе sharedAsyncSession. Теперь весь avito-трафик sweep'а (SERP+detail+houses) идёт через mobile-proxy. Пусто/нет env → прямое подключение (dev no-op). n1/yandex не трогаем (прокси не нужен, не жжём мобильный трафик)._avito_proxies(None без env / dict при URL).Проверка
18 passed (anti-bot + serp_date), ruff clean, pre-commit passed.
Деплой
Прод cron «tradein-scrape каждые 2ч» продолжит банить detail-429 до выката этого фикса. После merge+deploy — sweep'ы пойдут полностью через прокси.
Refs #623, #788, #562.
✅ APPROVE — корректный точечный фикс session-overwrite бага.
Проверено:
run_avito_pipeline/run_avito_city_sweepсоздают собственную sharedAsyncSessionи присваиваютscraper._cffi, перезатирая проксированную сессию изAvitoScraper.__aenter__(#788). Через неё идёт и SERP, иfetch_detail→ без прокси detail летит datacenter-IP → 429 →mark_bannedвсего run'а._avito_proxies()воспроизводит идентичную proxy-dict форму, что уже используетAvitoScraper.__aenter__(avito.py:214-220):{"http": url, "https": url}, тот жеsettings.avito_proxy_url(config.py:139), тот жеproxies=kwargAsyncSession. Консистентно.None→ прямое подключение (dev no-op). n1/yandex не тронуты (намеренно — прокси не нужен).Anti-regression: pipeline/policy-файлы не затронуты, секретов нет (тест-фикстура
u:p@…— очевидный placeholder).⚠️ Issue #623 остаётся
status/blocked+needs-human— это код-сторона; прод-переменнаяAVITO_PROXY_URLвсё ещё требует ops-действия (provisioning mobile-proxy + выставить env + verify sweep с прод-хоста). qa-smoke невозможен без неё.bot-analyst referenced this pull request2026-05-31 07:04:24 +00:00