feat(scrapers): cian SERP на BrowserFetcher (camoufox), снят code-side rotate (#1806) #1810

Merged
lekss361 merged 1 commit from feat/cian-serp-browser into main 2026-06-19 17:52:00 +00:00
Owner

Closes #1806 (epic #883 Phase 2).

Что

  • cian.py: убран curl_cffi, __aenter__BrowserFetcher(source="cian") (+ __aexit__ закрывает). Warm-up GET удалён (camoufox держит сессию server-side).
  • _fetch_page_html + fetch_aroundawait self._browser.fetch(url). State-парсинг (_parse_serp_html/extract_state) без изменений (браузер отдаёт полный SSR).
  • _rotate_ip → no-op return False (прокси ротирует сам per-request). Captcha-ретрай в _walk_price_range → повторный fetch на свежем IP.

Тесты

85 passed (SERP/exhaustive/city-sweep/session) + 130 (расширенный). +5 транспорт-тестов. (1 fail test_cian_valuation::test_cache_hitpre-existing на main, вне diff.)

На ревью

  • Нет curl_cffi-fallback (browser-only, зеркалит yandex_realty) — captcha-обработка через retry на свежем IP. Достаточно ли?
  • _rotate_ip no-op: проверить, что мокающие тесты не сломаны (worker: зелёные).
  • Pre-existing test_cian_valuation fail — отдельный issue, не блок этого PR.
Closes #1806 (epic #883 Phase 2). ## Что - `cian.py`: убран curl_cffi, `__aenter__` → `BrowserFetcher(source="cian")` (+ `__aexit__` закрывает). Warm-up GET удалён (camoufox держит сессию server-side). - `_fetch_page_html` + `fetch_around` → `await self._browser.fetch(url)`. State-парсинг (`_parse_serp_html`/`extract_state`) без изменений (браузер отдаёт полный SSR). - `_rotate_ip` → no-op `return False` (прокси ротирует сам per-request). Captcha-ретрай в `_walk_price_range` → повторный fetch на свежем IP. ## Тесты 85 passed (SERP/exhaustive/city-sweep/session) + 130 (расширенный). +5 транспорт-тестов. (1 fail `test_cian_valuation::test_cache_hit` — **pre-existing на main**, вне diff.) ## На ревью - Нет curl_cffi-fallback (browser-only, зеркалит yandex_realty) — captcha-обработка через retry на свежем IP. Достаточно ли? - `_rotate_ip` no-op: проверить, что мокающие тесты не сломаны (worker: зелёные). - Pre-existing `test_cian_valuation` fail — отдельный issue, не блок этого PR.
lekss361 added 1 commit 2026-06-19 17:45:52 +00:00
feat(scrapers): cian SERP на BrowserFetcher (camoufox), снят code-side rotate (#1806)
All checks were successful
CI / changes (pull_request) Successful in 6s
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
b1fb0c5711
lekss361 merged commit 65cec74cca into main 2026-06-19 17:52:00 +00:00
lekss361 deleted branch feat/cian-serp-browser 2026-06-19 17:52:00 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#1810
No description provided.