[tradein][scrapers] #883 Phase 2: cian.py SERP — миграция на BrowserFetcher (camoufox) #1806

Closed
opened 2026-06-19 17:34:16 +00:00 by lekss361 · 0 comments
Owner

Цель (epic #883, Phase 2)

Перевести cian SERP-фетч (cian.py) с curl_cffi на camoufox-браузер. Браузер per-provider + прокси ha.mobileproxy.space задеплоены, cian /fetch = 200/944KB (проверено после починки прокси #1801).

Текущее состояние

cian.py — pure curl_cffi: _fetch_page_html()self._cffi.get(url). SERP = HTML с embedded state-парсингом. Анти-бот cian = Google reCAPTCHA (на чистом IP проходит).

Что сделать

  1. В __aenter__ поднимать BrowserFetcher(source="cian"); _fetch_page_htmlawait self._browser.fetch(url).
  2. Сохранить state-парсинг (cian SERP HTML содержит state — браузер отдаёт полный SSR, как curl_cffi).
  3. IP-ротация: прокси ротирует сам → code-side _rotate_ip (changeip) больше не нужен (можно убрать вызовы или оставить no-op).
  4. Опционально curl_cffi fallback.
  5. Тесты: обновить cian SERP-тесты под browser-путь.

Усилие

M (150–250 LOC).

Файлы: tradein-mvp/backend/app/services/scrapers/cian.py + тесты. Cross-ref #883/#886, #1791 (cian_detail уже пофикшен). Не трогать cian_valuation (внешний API).

## Цель (epic #883, Phase 2) Перевести cian SERP-фетч (`cian.py`) с curl_cffi на camoufox-браузер. Браузер per-provider + прокси `ha.mobileproxy.space` задеплоены, cian `/fetch` = **200/944KB** (проверено после починки прокси #1801). ## Текущее состояние `cian.py` — pure curl_cffi: `_fetch_page_html()` → `self._cffi.get(url)`. SERP = HTML с embedded state-парсингом. Анти-бот cian = Google reCAPTCHA (на чистом IP проходит). ## Что сделать 1. В `__aenter__` поднимать `BrowserFetcher(source="cian")`; `_fetch_page_html` → `await self._browser.fetch(url)`. 2. Сохранить state-парсинг (cian SERP HTML содержит state — браузер отдаёт полный SSR, как curl_cffi). 3. IP-ротация: прокси ротирует сам → code-side `_rotate_ip` (changeip) больше не нужен (можно убрать вызовы или оставить no-op). 4. Опционально curl_cffi fallback. 5. Тесты: обновить cian SERP-тесты под browser-путь. ## Усилие M (150–250 LOC). **Файлы:** `tradein-mvp/backend/app/services/scrapers/cian.py` + тесты. Cross-ref #883/#886, #1791 (cian_detail уже пофикшен). Не трогать cian_valuation (внешний API).
lekss361 added the
enhancement
priority/p1
scope/backend
scrapers
status/wip
tradein
labels 2026-06-19 17:34:43 +00:00
Sign in to join this conversation.
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#1806
No description provided.