fix(tradein/browser): куки клались на поддомен и вечно держали QRATOR-загрузчик (#3261) #3262
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#3262
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "fix/browser-cookie-domain-and-fonts"
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?
Закрывает #3261.
Что было
Сайдкар инжектил куки на домен из url карточки — для
ekaterinburg.domclick.ruэто.ekaterinburg.domclick.ru. Настоящие куки площадки живут на.domclick.ru(видно в записи ручной сессии 29.08:.domclick.ru qrator_jsid2,.domclick.ru qrator_jsr).Куки поддомена родительские не заменяют, а сосуществуют с ними: как только площадка выдаёт свежий
qrator_jsid2на.domclick.ru, браузер шлёт в одном запросе две куки с этим именем, и первой — более специфичную, нашу протухшую. QRATOR читает её и держит страницу на 274-байтном загрузчике, рукопожатие не завершается никогда.Замер
Прод-сайдкар против пропатченного, один и тот же снимок кук из БД, одни и те же узлы, чередование плеч, свежий контекст на пробу. Прогон повторён с обратным порядком узлов и плеч — выиграли те же узлы, так что это не эффект очерёдности:
.domclick.ru)Отдельно изолированы шрифты — третьим плечом собран образ только со шрифтами на прод-овском
server.py:Чинит именно домен кук. Шрифты сами по себе не дают ничего.
Локальный контроль в тот же час: через те же узлы с камуфоксом на машине разработчика 3 из 4 узлов отдавали карточки (426 КБ / 384 КБ / 867 КБ), пока прод отказывал на всех четырёх, — то есть пул был живой, отказывал сервер.
Шрифты
Прод-контейнер нёс 8 файлов / 3 семейства (только DejaVu) при камуфоксе с
os="windows"— браузер, называющий себя Windows, но не знающий Arial/Times New Roman/Calibri, ловится перечислением шрифтов. Добавлены метрически совместимые Liberation/Carlito/Caladea. С отказами Домклика это, как показано выше, не связано — правка про правдоподобие отпечатка, отдельная нестыковка.Проверка сборки смотрит не на число файлов, а на алиасы: первая версия требовала ≥30 файлов и покраснела на фактических 20 — порог был угадан. Теперь гейт проверяет, что
fc-match Arial→ Liberation Sans и так по всем пяти алиасам.Ограничение, принятое сознательно
_cookie_domainберёт два последних лейбла. Дляexample.co.ukэто дало бы.co.uk, но все площадки проекта — в зонах первого уровня (domclick.ru, avito.ru, cian.ru, yandex.ru); тащить publicsuffix-список ради гипотетического случая дороже, чем он стоит. Оговорено в докстринге.Тесты
Новый
test_server_cookie_domain.py(8 проверок). Три существующих теста закрепляли ровно то поведение, которое оказалось багом (.ekaterinburg.domclick.ru/.www.avito.ru/.realty.yandex.ru) — переведены на новый контракт, докстринги объясняют почему. Прогон сайдкара целиком: 206 passed.