|
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
Единственный код 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 |
||
|---|---|---|
| .. | ||
| Dockerfile | ||
| server.py | ||
| test_server.py | ||
| test_server_anchor_origin_switch.py | ||
| test_server_anchor_search.py | ||
| test_server_behaviour.py | ||
| test_server_challenge_reload.py | ||
| test_server_cookie_domain.py | ||
| test_server_domclick_challenge.py | ||
| test_server_fetch_json.py | ||
| test_server_fetch_mode.py | ||
| test_server_http_status.py | ||
| test_server_no_proxy_refusal.py | ||
| test_server_pacing.py | ||
| test_server_pow_challenge.py | ||
| test_server_proxy_override.py | ||
| test_server_recycle.py | ||
| test_server_referer.py | ||
| test_server_resource_block.py | ||
| test_server_reuse_context.py | ||
| test_server_smoke.py | ||