fix(tradein/browser): переход с Яндекса на площадку должен быть настоящим, а не заявленным #3260
No reviewers
Labels
No labels
Fable 5 ревью
GG-форсайт
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
feedback/max
generative
needs-discussion
needs-human
observability
pause-bots
performance
priority/p0
priority/p1
priority/p2
priority/p3
scope/backend
scope/db
scope/devops
scope/frontend
scope/qa
scrapers
security
site-finder
stage/1
stage/2
status/blocked
status/done
status/needs-analysis
status/needs-fix
status/qa
status/ready
status/review
status/wip
tech-debt
tradein
ux
week ревью 1
wontfix
ИРД
вторичка
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#3260
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/browser-real-search-clickthrough"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Что не так с #3258
Та правка научила якорную вкладку заходить на выдачу через поиск Яндекса, но две ветки из трёх подставляли
Referer, которого мы не заработали:https://yandex.ru/В двух последних случаях мы заявляли переход, которого не было. Это ровно то, от чего уходили: смысл всей затеи — выглядеть как человек потому, что делаем то же, что человек, а не потому, что говорим об этом в заголовке.
Почему фиктивная ветка вообще срабатывала
Ссылки в выдаче Яндекса открываются в новой вкладке (
target="_blank"). После клика исходная страница остаётся на Яндексе, проверка хоста не проходит — и вместо того, чтобы взять настоящую новую вкладку, код уходил в подстановку заголовка. То есть в типичном случае переход был настоящим, но мы его теряли и заменяли выдумкой.Что сделано
Новая вкладка перехватывается. Снимок
context.pagesдо клика, сравнение после. Попап на нужном хосте становится якорной страницей;_apply_resource_blockприменяется именно к ней (по наследству он не передаётся), вкладка с Яндексом закрывается. Это настоящий переход, а не рассказ о нём.Из-за этого
_navigate_anchor_via_searchбольше не возвращаетbool— она отдаёт страницу, на которой origin реально открыт, либоNone.Оба фиктивных фолбэка выброшены. Ссылки нет, клик увёл не туда, попап на чужом хосте, капча, упавшая навигация →
None, и вызывающий идёт на origin обычнымgotoбезReferer, ровно как до #3258.Принцип записан комментарием в коде и на месте удалённой константы
_YANDEX_REFERER— он неочевиден, и его легко «оптимизировать» обратно:Тесты
198 passed против 196. Новые: попап на нужном хосте становится якорем, оригинал закрыт, resource-block применён к попапу; попап на чужом хосте → фолбэк без
Referer, попап закрыт. Тест «ссылки нет в выдаче» переписан — теперь требует отсутствияRefererвместоyandex.ru/; смена поведения намеренная.Отдельно проверил, что использованный API есть в установленной версии:
Page.wait_for_load_state,BrowserContext.pages,BrowserContext.expect_page— все на месте.ruff checkчист.Что проверить после деплоя
Моки не эквивалент живому Яндексу. По логу будет видно, какая ветка срабатывает в реальности — у каждой своя строка: клик в текущей вкладке / клик открыл новую вкладку / ссылки нет / капча / сбой навигации. Если преобладает «ссылки нет», надо править поисковый запрос (
BROWSER_ANCHOR_SEARCH_QUERY_DOMCLICK), а не механику.Связано
#3258 (заход через поиск), #3250 (Referer на карточку), #3244 (якорная вкладка), #3251 (те же проверки для остальных площадок).