fix(tradein/domclick): органический заход через SERP перед card-fetch (anti-QRATOR) #2430

Merged
lekss361 merged 1 commit from feat/tradein-domclick-organic-origin-fetch into main 2026-07-04 16:39:47 +00:00
Owner

Summary

  • Расширяет уже проверенный паттерн /fetch-json (origin-goto + settle wait, #1917) на обычный /fetch: опциональный origin — same-site якорь, на который камуфокс заходит ПЕРЕД целевым URL (реальные cookies/Referer вместо холодного goto).
  • Подключено ТОЛЬКО к DomClick fetch_detail(): перед card-фетчем заходит на {scheme}://{netloc}/pokupka/kvartiry/vtorichka (same-site SERP) — эмпирически подтверждено вживую, что снижает подозрительность у QRATOR по сравнению с холодной прямой навигацией на карточку.
  • origin — keyword-only, default None → byte-identical поведение для avito/cian/yandex (ни один из 12 существующих call-site'ов BrowserFetcher.fetch() не передаёт origin).

Test plan

  • Полный tradein-mvp/browser/ test suite: 82 passed / 4 failed (те же 4 failed воспроизведены независимо на неизменённом baseline через git stash — pre-existing _ensure_browser(proxy_override=...) signature drift из прошлого PR, не регрессия)
  • tradein-mvp/backend — все 18 файлов, ссылающихся на browser_fetcher/BrowserFetcher/fetch_detail (avito/cian/yandex/domclick): 222 passed / 0 failed
  • Полный tradein-mvp/backend suite (как в CI): 2279 passed, 6 skipped, 0 failed
  • code-reviewer: APPROVE, byte-identical default-path verification пройдена

Refs #2000 — этот PR один из шагов, не закрывает issue целиком (см. комментарий в issue про оставшийся объём: merge dormant-ветки Layer B + enable schedule).

## Summary - Расширяет уже проверенный паттерн `/fetch-json` (origin-goto + settle wait, #1917) на обычный `/fetch`: опциональный `origin` — same-site якорь, на который камуфокс заходит ПЕРЕД целевым URL (реальные cookies/Referer вместо холодного goto). - Подключено ТОЛЬКО к DomClick `fetch_detail()`: перед card-фетчем заходит на `{scheme}://{netloc}/pokupka/kvartiry/vtorichka` (same-site SERP) — эмпирически подтверждено вживую, что снижает подозрительность у QRATOR по сравнению с холодной прямой навигацией на карточку. - `origin` — keyword-only, default `None` → byte-identical поведение для avito/cian/yandex (ни один из 12 существующих call-site'ов `BrowserFetcher.fetch()` не передаёт origin). ## Test plan - [x] Полный `tradein-mvp/browser/` test suite: 82 passed / 4 failed (те же 4 failed воспроизведены независимо на неизменённом baseline через `git stash` — pre-existing `_ensure_browser(proxy_override=...)` signature drift из прошлого PR, не регрессия) - [x] `tradein-mvp/backend` — все 18 файлов, ссылающихся на `browser_fetcher`/`BrowserFetcher`/`fetch_detail` (avito/cian/yandex/domclick): 222 passed / 0 failed - [x] Полный `tradein-mvp/backend` suite (как в CI): 2279 passed, 6 skipped, 0 failed - [x] code-reviewer: ✅ APPROVE, byte-identical default-path verification пройдена Refs #2000 — этот PR один из шагов, не закрывает issue целиком (см. комментарий в issue про оставшийся объём: merge dormant-ветки Layer B + enable schedule).
lekss361 added 1 commit 2026-07-04 16:37:46 +00:00
fix(tradein/domclick): органический заход через SERP перед card-fetch (anti-QRATOR)
All checks were successful
CI Trade-In / changes (pull_request) Successful in 7s
CI / changes (pull_request) Successful in 8s
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Successful in 53s
7ab20977c3
DomClick card-фетч шёл холодным прямым goto(card_url) — эмпирически подтверждено,
что QRATOR подозрительнее относится к такой навигации, чем к заходу через
same-site SERP-страницу перед карточкой (как ведёт себя реальный пользователь).

Расширяет уже проверенный паттерн /fetch-json (origin-goto + settle wait, #1917)
на обычный /fetch: origin опционален и по умолчанию None — avito/cian/yandex
поведение не меняется (byte-identical, origin — keyword-only, ни один из 12
существующих call-site'ов /fetch не передаёт позиционный аргумент на это место).
Только domclick/detail.py::fetch_detail() передаёт origin, выведенный из
card_url как {scheme}://{netloc}/pokupka/kvartiry/vtorichka.
lekss361 merged commit 102bdbda47 into main 2026-07-04 16:39:47 +00:00
lekss361 deleted branch feat/tradein-domclick-organic-origin-fetch 2026-07-04 16:39:48 +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#2430
No description provided.