Add warm-up GET /evaluation/realty + production browser header set (Sec-Fetch, X-Requested-With, 25s timeout) mirroring avito.py, чтобы защитить 3-step IMV flow от server-IP анти-бот 403. Refactor step B/C парсинга в pure helpers (_parse_geo_position/_parse_price/_parse_placement_history/_parse_suggestions) + fixture-driven offline тесты из живых JSON-captures. Честный диагноз: контракт (geoFieldsHash, price-блок, categoryId=24) НЕ менялся — проверено живым capture'ом с этой машины (A→B→C, recommended 7.39M). Реальная причина #565 — скорее анти-бот по PROD-IP, не код → если #565 останется после deploy, настоящий фикс = ротация egress IP воркера (devops, отдельно). code-reviewer: ✅ APPROVE no critical — warm-up non-fatal, injected-session path unchanged, refactor preserves shapes, graceful-None сохранён, fixtures без PII. Tests: 12 new (27 total). Ruff clean. Closes #565
13 lines
No EOL
727 B
JSON
13 lines
No EOL
727 B
JSON
{
|
|
"address": "Свердловская область, Екатеринбург, улица Малышева, 125",
|
|
"addressId": 22319477,
|
|
"closeSuggest": true,
|
|
"districtId": 789,
|
|
"errorText": "",
|
|
"geoFieldsHash": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJsYXRpdHVkZSI6NTYuODQwODcyLCJsb25naXR1ZGUiOjYwLjY1NDA3NywiYWRkcmVzcyI6ItCh0LLQtdGA0LTQu9C-0LLRgdC60LDRjyDQvtCx0LvQsNGB0YLRjCwg0JXQutCw0YLQtdGA0LjQvdCx0YPRgNCzLCDRg9C70LjRhtCwINCc0LDQu9GL0YjQtdCy0LAsIDEyNSIsImFkZHJlc3NJZCI6MjIzMTk0NzcsImxvY2F0aW9uSWQiOjY1NDA3MCwiZGlzdHJpY3RJZCI6Nzg5fQ.wkkTyzUmHikPyD_hMJkZIIoXmyIyGhvqpZQyKSXJ6V4",
|
|
"isFullAddress": true,
|
|
"latitude": 56.840872,
|
|
"locationId": 654070,
|
|
"longitude": 60.654077,
|
|
"parentLocationId": 653700
|
|
} |