gendesign/tradein-mvp/browser
bot-backend 1200af58f5
All checks were successful
CI Trade-In / changes (pull_request) Successful in 10s
CI / changes (pull_request) Successful in 11s
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 / browser-tests (pull_request) Successful in 1m31s
CI Trade-In / backend-tests (pull_request) Successful in 4m58s
fix(tradein): сайдкар отдаёт подтверждённый бан площадки кодом 403, не 500
Единственный код 500 означал и «площадка забанила», и «сайдкар упал»:
разбор каждого инцидента начинался с ложного следа — в лог провайдера и в
houses.imv_error_reason уезжала httpx-преамбула «Server error '500 Internal
Server Error' for url 'http://tradein-browser:3000/fetch'», то есть текст
ошибки называл гонца, а не виновника.

- browser/server.py: BanPageDetectedError → 403 (доступ ограничен площадкой);
  451 — про юридическую блокировку, это не она. Своих 403 сайдкар не отдаёт
  (400/422/503), код однозначен. classify_browser_probe не задета: у неё любой
  status >= 400 → "sidecar". Тело не меняется — ban_page/status на месте.
- scraper_kit/browser_fetcher.py: текст SidecarBanPageError теперь свой —
  «площадка отдала бан-страницу (upstream 403, ответ сайдкара 403): …».
  Распознавание остаётся по ТЕЛУ и code-agnostic: tradein-browser — отдельный
  образ со своим деплоем, версии штатно расходятся на часы, и гейт по коду в
  этот час уводил бы отказ площадки в инфра-ветку.
- Тесты: 403 → SidecarBanPageError; старый 500 + ban_page → он же; чистый 500
  без ban_page → прежний инфра-диагноз; текст ошибки без «500»/«Server error».

Refs #3288 п.4
2026-09-06 01:58:02 +05:00
..
Dockerfile fix(tradein/browser): проверка шрифтов в сборке ловила угаданный порог, а не суть 2026-08-30 01:47:42 +03:00
server.py fix(tradein): сайдкар отдаёт подтверждённый бан площадки кодом 403, не 500 2026-09-06 01:58:02 +05:00
test_server.py feat(tradein/browser): имитация чтения страницы человеком, целиком opt-in (#3283) (#3308) 2026-09-01 07:34:49 +00:00
test_server_anchor_origin_switch.py fix(tradein/avito): браузерный путь ходил на каждую карточку холодным (#3251) 2026-08-30 11:47:15 +03:00
test_server_anchor_search.py fix(tradein/browser): переход с Яндекса на площадку должен быть настоящим, а не заявленным 2026-08-29 23:41:56 +03:00
test_server_behaviour.py feat(tradein/browser): имитация чтения страницы человеком, целиком opt-in (#3283) (#3308) 2026-09-01 07:34:49 +00:00
test_server_challenge_reload.py feat(tradein/browser): ходить по Домклику как человек — с Referer и с перезагрузкой зависшего рукопожатия 2026-08-29 22:53:11 +03:00
test_server_cookie_domain.py test(tradein/browser): домен инжектируемых кук — регистрируемый, не хост из url 2026-08-30 01:51:02 +03:00
test_server_domclick_challenge.py fix(tradein/domclick): недосчитанная QRATOR-страница уходила наверх как контент 2026-08-29 18:31:35 +03:00
test_server_fetch_json.py fix(tradein/domclick): площадка отдаёт одну карточку на процесс браузера, а мы держали один на весь прогон (#3205) 2026-08-29 13:14:20 +03:00
test_server_fetch_mode.py fix(tradein/domclick): свип брал BFF навигацией браузера — теперь подзапросом (#3264) 2026-08-30 11:24:28 +03:00
test_server_http_status.py fix(tradein): сайдкар отдаёт подтверждённый бан площадки кодом 403, не 500 2026-09-06 01:58:02 +05:00
test_server_no_proxy_refusal.py chore(tradein): удалить мёртвые mobileproxy env-переменные и rotate-ip (#2616 шаги 2-3) (#2650) 2026-08-05 09:35:54 +00:00
test_server_pacing.py fix(tradein/domclick): площадка отдаёт одну карточку на процесс браузера, а мы держали один на весь прогон (#3205) 2026-08-29 13:14:20 +03:00
test_server_pow_challenge.py feat(tradein/browser): ходить по Домклику как человек — с Referer и с перезагрузкой зависшего рукопожатия 2026-08-29 22:53:11 +03:00
test_server_proxy_override.py chore(tradein): удалить мёртвые mobileproxy env-переменные и rotate-ip (#2616 шаги 2-3) (#2650) 2026-08-05 09:35:54 +00:00
test_server_recycle.py fix(tradein/domclick): перезапуск браузера на карточку уничтожал пропуск QRATOR (#3212) 2026-08-29 14:09:23 +03:00
test_server_referer.py feat(tradein/browser): ходить по Домклику как человек — с Referer и с перезагрузкой зависшего рукопожатия 2026-08-29 22:53:11 +03:00
test_server_resource_block.py feat(browser): block font/media + per-provider page pacing — снизить proxy fan-out (#1812) 2026-06-19 21:28:09 +03:00
test_server_reuse_context.py test(tradein/browser): домен инжектируемых кук — регистрируемый, не хост из url 2026-08-30 01:51:02 +03:00
test_server_smoke.py test(tradein/browser): домен инжектируемых кук — регистрируемый, не хост из url 2026-08-30 01:51:02 +03:00