From 5d2af47b875fdffce5cee77dc7a7a1c8ef14aa71 Mon Sep 17 00:00:00 2001 From: bot-backend Date: Sun, 31 May 2026 06:01:30 +0000 Subject: [PATCH] =?UTF-8?q?fix(tradein):=20cian=20SERP=20warm-up=20GET=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20seed=20cookies=20(=5FCIAN=5FGK/=5Fyasc)=20?= =?UTF-8?q?(T2)=20(#846)=20Co-authored-by:=20bot-backend=20=20Co-committed-by:=20bot-backend=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../backend/app/services/scrapers/cian.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/tradein-mvp/backend/app/services/scrapers/cian.py b/tradein-mvp/backend/app/services/scrapers/cian.py index 505ea902..cbace45b 100644 --- a/tradein-mvp/backend/app/services/scrapers/cian.py +++ b/tradein-mvp/backend/app/services/scrapers/cian.py @@ -84,6 +84,25 @@ class CianScraper(BaseScraper): "Upgrade-Insecure-Requests": "1", }, ) + # Warm-up: посетить homepage чтобы получить сессионные cookies (_CIAN_GK/_yasc) + # и не выглядеть как наглый бот (первый запрос сразу на /cat.php подозрителен). + # Failure не критична — SERP-запросы продолжатся в любом случае. + try: + _warm = await self._cffi.get(f"{self.base_url}/") + logger.info( + "cian warm-up GET / → HTTP %d (cookies=%d)", + _warm.status_code, + len(list(self._cffi.cookies.jar)), + ) + # Последующие SERP-запросы выглядят как in-site navigation (Referer = /) + self._cffi.headers.update( + { + "Referer": f"{self.base_url}/", + "Sec-Fetch-Site": "same-origin", + } + ) + except Exception: + logger.warning("cian warm-up GET / failed — continuing without seed cookies") return self async def __aexit__(self, *args: Any) -> None: