fix(tradein/scraper-kit): wire browser proxy-pool into yandex/cian SERP + persist activation flags (#2160) #2268

Merged
lekss361 merged 4 commits from fix/tradein-pool-browser-yandex-cian into main 2026-07-03 06:36:59 +00:00
Owner

Summary

  • Wiring-gap P4: USE_PROXY_POOL_BROWSER был подключён только к avito-путям. YandexRealtyScraper и CianScraper создавали BrowserFetcher в __aenter__ без proxy_provider/use_pool → yandex/cian SERP шли через один env-прокси браузера (перегружен, cian runs #564/#574 = banned). Теперь пул прокинут: providers/yandex/serp.py, providers/cian/serp.py, pipeline.py (run_yandex_city_sweep / run_yandex_full_load / run_cian_city_sweep / run_cian_full_load), scheduler.py (_job_yandex_city_sweep).
  • Ship-dark сохранён: proxy_provider=None ИЛИ флаг off → поведение байт-в-байт прежнее (env-прокси). Новые параметры keyword-only с дефолтом None.
  • Флаги активации в prod compose: USE_KIT_SCHEDULER / USE_PROXY_POOL_CURL / USE_PROXY_POOL_BROWSER перенесены из /tmp/kit-flip.yml override (прод) в docker-compose.prod.yml — иначе первый же deploy откатил бы активацию на legacy scheduler.
  • cian/newbuilding.py НЕ тронут: fetch_newbuilding() не получает config/proxy_provider от callers — отдельный рефактор.

Test plan

  • Новый tests/test_kit_serp_proxy_pool.py (5 тестов: flag-on+provider / default-dark / provider+flag-off для обоих провайдеров)
  • Регресс: test_proxy_pool_curl_paths, test_scraper_adapters_contracts, test_yandex_city_sweep, test_scraper_kit_pipeline_parity2, test_kit_browser_fetcher_proxy_pool, test_cian_city_sweep, test_scheduler, test_cian_newbuilding — 130+ passed
  • Pre-push code-reviewer: MINOR (dead-param в run_yandex_full_load) — исправлено коммитом ab335279
  • Post-deploy: poke yandex/cian/avito sweep → lease в scrape_proxies, runs done, listings прирост

Refs #2126, #2160

## Summary - **Wiring-gap P4:** `USE_PROXY_POOL_BROWSER` был подключён только к avito-путям. `YandexRealtyScraper` и `CianScraper` создавали `BrowserFetcher` в `__aenter__` без `proxy_provider`/`use_pool` → yandex/cian SERP шли через один env-прокси браузера (перегружен, cian runs #564/#574 = `banned`). Теперь пул прокинут: `providers/yandex/serp.py`, `providers/cian/serp.py`, `pipeline.py` (run_yandex_city_sweep / run_yandex_full_load / run_cian_city_sweep / run_cian_full_load), `scheduler.py` (`_job_yandex_city_sweep`). - **Ship-dark сохранён:** `proxy_provider=None` ИЛИ флаг off → поведение байт-в-байт прежнее (env-прокси). Новые параметры keyword-only с дефолтом `None`. - **Флаги активации в prod compose:** `USE_KIT_SCHEDULER` / `USE_PROXY_POOL_CURL` / `USE_PROXY_POOL_BROWSER` перенесены из `/tmp/kit-flip.yml` override (прод) в `docker-compose.prod.yml` — иначе первый же deploy откатил бы активацию на legacy scheduler. - `cian/newbuilding.py` НЕ тронут: `fetch_newbuilding()` не получает config/proxy_provider от callers — отдельный рефактор. ## Test plan - [x] Новый `tests/test_kit_serp_proxy_pool.py` (5 тестов: flag-on+provider / default-dark / provider+flag-off для обоих провайдеров) - [x] Регресс: test_proxy_pool_curl_paths, test_scraper_adapters_contracts, test_yandex_city_sweep, test_scraper_kit_pipeline_parity2, test_kit_browser_fetcher_proxy_pool, test_cian_city_sweep, test_scheduler, test_cian_newbuilding — 130+ passed - [x] Pre-push code-reviewer: MINOR (dead-param в run_yandex_full_load) — исправлено коммитом ab335279 - [ ] Post-deploy: poke yandex/cian/avito sweep → lease в `scrape_proxies`, runs done, listings прирост Refs #2126, #2160
lekss361 added 4 commits 2026-07-03 06:33:50 +00:00
P4 (#2164) подключил раздачу прокси из пула (scrape_proxies) в camoufox-браузер
только для avito-путей. Yandex/Cian SERP-скраперы создавали BrowserFetcher сами в
__aenter__ без пула → весь их трафик шёл через env-прокси браузера (перегружен).

Прокидываем proxy_provider + use_pool=config.use_proxy_pool_browser в BrowserFetcher
внутри YandexRealtyScraper / CianScraper, а сам proxy_provider — через
run_yandex_city_sweep / run_yandex_full_load / run_cian_city_sweep / run_cian_full_load
и kit-scheduler (_job_yandex_city_sweep). Ship-dark сохранён: proxy_provider=None ИЛИ
флаг off → BrowserFetcher без пула = env-прокси, поведение байт-в-байт как раньше.

newbuilding.fetch_newbuilding НЕ трогали — config/proxy_provider до неё не доходят
(сигнатура без них, callers не передают), нужен отдельный рефактор.
Флаги жили в /tmp/kit-flip.yml override на проде — любой deploy пересоздал бы
scraper без них (откат на legacy scheduler). Переносим в docker-compose.prod.yml,
чтобы активация пережила deploy.
Параметр добавлялся, но не доходил до YandexRealtyScraper — dead param
(review-замечание, live caller'а у функции в kit пока нет).
Merge remote-tracking branch 'forgejo/main' into fix/tradein-pool-browser-yandex-cian
All checks were successful
CI Trade-In / changes (pull_request) Successful in 19s
CI / changes (pull_request) Successful in 18s
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 / backend-tests (pull_request) Successful in 2m11s
78bfa9555b
lekss361 merged commit e1c5f2184c into main 2026-07-03 06:36:59 +00:00
lekss361 deleted branch fix/tradein-pool-browser-yandex-cian 2026-07-03 06:36:59 +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#2268
No description provided.