From 3059f09e53082b49ad0dfdf44e4022a7dc783c44 Mon Sep 17 00:00:00 2001 From: bot-backend Date: Sat, 29 Aug 2026 18:58:51 +0300 Subject: [PATCH] =?UTF-8?q?docs(tradein/domclick):=20=D0=B4=D0=B2=D0=B0=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=BC=D0=BC=D0=B5=D0=BD=D1=82=D0=B0=D1=80=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=BE=D0=BF=D0=B8=D1=81=D1=8B=D0=B2=D0=B0=D0=BB=D0=B8?= =?UTF-8?q?=20=D0=BF=D1=83=D0=BB,=20=D0=BA=D0=BE=D1=82=D0=BE=D1=80=D0=BE?= =?UTF-8?q?=D0=B3=D0=BE=20=D0=BD=D0=B5=D1=82=20=D1=81=20=D0=BC=D0=B8=D0=B3?= =?UTF-8?q?=D1=80=D0=B0=D1=86=D0=B8=D0=B8=20253?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Оба места утверждали, что у Домклика один выделенный резидентный прокси и пула нет. Это перестало быть правдой ещё в #2800 (миграция 253 сняла резервацию узла), но текст остался — и именно на него опирался тикет #3189, поставленный под «калибровку» ограничения, которого не существует. Свип к тому же ходит через пул давно (serp.py:359), а бэкфилл подключён к нему в PR #3222. Заодно докстринг называл не тот ограничитель: свип кладёт не счётчик провалов lease, а break по первому DomClickBlockedError (#2854) — до ротации дело не доходит ни при каком счётчике, отсюда buckets_completed=0. Только комментарии, поведение не меняется. Миграция 175 уже применена, а _schema_migrations трекает по имени файла без checksum — правка текста её не перезапустит. --- ...scrape_schedules_seed_domclick_detail_backfill.sql | 11 +++++++---- .../src/scraper_kit/providers/domclick/serp.py | 10 ++++++---- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/tradein-mvp/backend/data/sql/175_scrape_schedules_seed_domclick_detail_backfill.sql b/tradein-mvp/backend/data/sql/175_scrape_schedules_seed_domclick_detail_backfill.sql index 5f73cdb3..99cc76ca 100644 --- a/tradein-mvp/backend/data/sql/175_scrape_schedules_seed_domclick_detail_backfill.sql +++ b/tradein-mvp/backend/data/sql/175_scrape_schedules_seed_domclick_detail_backfill.sql @@ -38,10 +38,13 @@ -- same-site SERP-origin navigation cadence from PR #2430 -- QRATOR is -- reputation-based, not purely rate-based, but a more human cadence -- reduces the odds of tripping it in the first place. --- max_consecutive_blocks -- 3 (vs Avito's 5): DomClick has no IP-rotation recovery --- on block (one dedicated residential proxy, not a pool) -- aborting --- sooner avoids hammering an already-reputation-damaged proxy/session --- and preserves it for the next scheduled window. +-- max_consecutive_blocks -- 3 (vs Avito's 5): aborting sooner avoids hammering an +-- already-reputation-damaged proxy/session and preserves it for the +-- next scheduled window. NB the original rationale here ("one +-- dedicated residential proxy, not a pool") is obsolete: migration +-- 253 (#2800) dropped the reservation, and the backfill was wired +-- into the shared pool in PR #3222 -- all four nodes carry +-- provider_affinity='any'. -- -- Seeded with enabled=false: activation is a deliberate, separate manual step after -- this migration deploys and the orchestrator is smoke-tested against a live cookie diff --git a/tradein-mvp/packages/scraper-kit/src/scraper_kit/providers/domclick/serp.py b/tradein-mvp/packages/scraper-kit/src/scraper_kit/providers/domclick/serp.py index d7c92729..00cfe912 100644 --- a/tradein-mvp/packages/scraper-kit/src/scraper_kit/providers/domclick/serp.py +++ b/tradein-mvp/packages/scraper-kit/src/scraper_kit/providers/domclick/serp.py @@ -327,10 +327,12 @@ class DomClickScraper(BaseScraper): комнатности 2+ не собирались никогда. Замер 19.08 по активным объявлениям: студий 575, однушек 408, двушек 1, трёшек 0; у соседних площадок 2+ комнат — около двух третей выдачи. - Сдвиг НЕ лечит блок, он распределяет то, что успевает собраться, по - всем корзинам вместо одной. Работает при единственном свободном узле — - в отличие от ротации lease, которой сейчас упираться некуда: в пуле 3 - включённых узла, 2 забанены Домкликом. + Сдвиг НЕ лечит обрыв, он распределяет то, что успевает собраться, + по всем корзинам вместо одной, и работает даже когда свободен один + узел. Ротация lease тут ни при чём: свип кладёт не счётчик провалов, + а break ниже по первому же DomClickBlockedError (#2854). В пуле + четыре включённых узла, у всех provider_affinity='any' — + выделенного домклик-прокси нет с миграции 253 (#2800). skip_buckets: корзины, уже собранные предыдущим оборванным прогоном (#3118, чекпоинт done_buckets) — по ним ни одного запроса. Вместе со сдвигом #2854 это превращает случайную ротацию в систематический