gendesign/tradein-mvp/backend/tests/scrapers
bot-backend 26cd8dbe34
All checks were successful
CI / changes (pull_request) Successful in 10s
CI Trade-In / changes (pull_request) Successful in 8s
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 Trade-In / backend-tests (pull_request) Successful in 4m52s
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
fix(tradein/avito): повтор после блока терял прокси и уходил с адреса машины
Обе ветки повтора в `fetch_detail` — 403/firewall и 429 — пересоздавали
эфемерную сессию вызовом `_build_detail_session()` БЕЗ `config`. Прокси
kit-версия читает только из `config.scraper_proxy_url`, поэтому такая сессия
уходила напрямую.

Замысел ветки прямо обратный, он записан в её же комментарии: «эфемерная
свежая сессия (новый CONNECT-туннель = свежий exit-IP)». Ветка вообще
исполняется только при backconnect=True, а он вычисляется как «задан
config.scraper_proxy_url» — то есть в момент вызова достоверно известно, что
прокси есть, и он терялся.

ПОЧЕМУ НЕ БЫЛО ВИДНО. Пока адрес самой машины не был заблокирован, прямой
повтор часто срабатывал, и подмена канала выглядела как успех. Замер 27.08 из
прод-контейнера, один и тот же URL Авито:

    через прокси — 200, 3.3 МБ страницы
    напрямую     — 429, «доступ ограничен», firewall

С этого момента каждый повтор после блока обречён. Обогащение
avito_detail_backfill по суткам: 21-25.08 — 178/129/147/138/111, 26.08 — 23,
27.08 — 0 при 25 блоках. Обвал начинается ровно с окна, в котором сменился
адрес машины.

Тот же класс ошибки чинили в #2330 для build_warmed_session; в пути повтора он
оставался.

Три теста: обе ветки на месте (страховка от проверки пустоты), ни одна не
строит сессию без config, и отдельно доказано, что без config прокси в сессии
действительно нет. Проверил красноту на старом коде — падает с точным текстом.
Прогон: 107 тестов scrapers зелёные, ruff чист.

Refs #3034, #3045
2026-08-27 15:33:29 +03:00
..
__init__.py fix(tradein/avito): anti-bot hardening — sleep + abort + shared session (#487) 2026-05-23 20:08:40 +00:00
test_3034_detail_retry_keeps_proxy.py fix(tradein/avito): повтор после блока терял прокси и уходил с адреса машины 2026-08-27 15:33:29 +03:00
test_avito_clean_address_rating_tail.py fix(tradein/avito): рейтинг дома перестаёт уезжать в адрес объявления (#2814) 2026-08-10 14:32:25 +05:00
test_avito_detail_kit_warmed_session_config.py fix(tradein/scraper-kit): точность докстрингов про прод-путь build_warmed_session 2026-07-04 03:01:27 +03:00
test_avito_detail_warmup_antibot_cookies.py fix(tradein/scraper-kit): actualize avito fingerprint - impersonate/Sec-Fetch-Site/referer/cookie-check 2026-08-21 17:02:53 +03:00
test_avito_imv_browser_transport.py chore(tradein/scraper-kit): удалить 5 orphaned legacy-модулей (#2277 финальный шаг, частичный) 2026-07-04 10:41:46 +03:00
test_avito_imv_kit_parity.py chore(tradein/scraper-kit): удалить 5 orphaned legacy-модулей (#2277 финальный шаг, частичный) 2026-07-04 10:41:46 +03:00
test_avito_unix_date_tz_consistency.py chore(tradein/scrapers): удалить весь legacy scrapers/ каталог — final E (#2397, #2277) 2026-07-04 15:58:15 +03:00
test_base_clamp_date.py fix(tradein/scrapers): clamp implausible listing/publish dates (LOW audit R2 #6) (#2507) 2026-07-12 22:11:06 +00:00
test_domclick_detail.py fix(tradein/domclick): sale_type перестаёт быть третьим словарём (#2674) (#2696) 2026-08-06 06:11:45 +00:00
test_yandex_valuation_kit_migration.py chore(tradein/scraper-kit): удалить 5 orphaned legacy-модулей (#2277 финальный шаг, частичный) 2026-07-04 10:41:46 +03:00