feat(tradein): yandex SERP curl_cffi+cookies transport + rooms×price combos (T4+T5) #847
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#847
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/tradein-yandex-curlcffi-combos"
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?
Из inbox-ноты 2026-05-30-2050 (local→server). Эталон — рабочий локальный
scripts/local-sweep-ekb-yandex.py.T4 транспорт:
YandexRealtyScraper.__aenter__/_http_get→ curl_cffiAsyncSession(impersonate=chrome120)+ опц. cookies (YANDEX_COOKIES_FILEenv, отсутствует → warning, не падает) — по образцуyandex_valuation.py. Captcha-detect (/showcaptchaи пр.) →[]+warning. NBSP-fix перед parse_rub. Парсинг area (#783) НЕ тронут.T5 combos:
_build_url(page,rooms,price_min,price_max)+fetch_around_multi_room(rooms×price_ranges)dedup, обход SERP-cap ~575→~4000. Backward-compat сохранён.pytest: 45 в test_yandex_realty_serp + 262
-k yandex. ruff clean. (2 предсущ. фейла в test_estimator_yandex_integration — на main тоже, не связаны.)⚠️ datacenter-IP всё равно ловит captcha — cookies помогают, residential/proxy — отдельная infra-задача.
✅ APPROVE — yandex curl_cffi transport (T4) + rooms×price combos (T5), backward-compat, best-effort.
Проверено:
__aenter__/__aexit__/_http_get→ curl_cffiAsyncSession(impersonate=chrome120)— зеркалит рабочийyandex_valuation.py._http_getвозвращает curl_cffi Response (совместимый.status_code/.text);fetch_aroundоборачивает в try/except → graceful[]. Потеря per-method retry задокументирована → degrade в empty-page, не crash. ОК для best-effort скрейпера.yandex_cookies_file→ envYANDEX_COOKIES_FILE— имя поля == целевой env (дефолтный mapping корректен, избежали бага #818 с alias). Cookies best-effort (_load_cookies_from_file→{}+warning)._is_captcha, маркеры в первых 5000 lowercased) →[]+warning. NBSP-fix (\xa0→space) в fetch_around + _parse_html safety-net — чинит price-parse, numeric area (#783) не затронут.fetch_aroundопц. rooms/price (default None) → legacy-вызовы не ломаются;fetch_around_multi_roomboth-None → single citywide sweep (тест подтверждает)._build_urlrooms-slug/price/newFlat-guard, collision-free (тест). Старые**_legacy_kwargsсохранены (rooms-kwargs и раньше игнорировались → нет регрессии).Anti-regression: prod-transport-свап зеркалит проверенный pattern, всё graceful (captcha/exc/non-200 → []). config-поле после #818-полей (нет конфликта). self-extending файлов нет, секретов нет (cookies из env-файла).
Advisory (не блок): 2 предсущ. фейла
test_estimator_yandex_integration(на main тоже — integration, вероятно captcha-blocked live-data, не связаны с этим PR). ⚠️ datacenter-IP всё равно ловит captcha — cookies/residential = отдельная infra.Мержу. (Inbox-нота T4+T5, без linked-issue.)