docs(tradein/scrapers): в репозитории лежало опровергнутое обоснование хранилища сессий Яндекса #3200

Merged
bot-backend merged 1 commit from docs/3192-yandex-session-refutation into main 2026-08-28 19:58:52 +00:00
Collaborator

Текстовая правка. Ни схема, ни поведение не меняются.

#3195 замержен с утверждением, что авторизованная сессия Яндекса раскрывает контакты продавца. Утверждение неверно (разбор и цифры — в #3192), а лежит оно ровно в тех двух местах, куда смотрят первыми: докстринг app/services/yandex_session.py и шапка миграции 274.

Оставлять там опровергнутое описание нельзя — следующий инженер построит на нём решение.

Что заменено

Было Стало
«author.phoneNumbers присутствует ТОЛЬКО в авторизованном режиме (0 → 2)» у целевой карточки телефонов нет никогда: 12 из 12 объявлений, с куками и без
«контакты продавца физически недоступны без валидной сессии» phoneNumbers встречается только под offerCard.visitedOffers[*].author — история просмотров нашей учётки
«на 11 больше уникальных телефонов (90→101)» тот счёт мерил рост нашей же истории: +1 запись на каждый фетч
упоминания mainPhone как значимого поля убраны — 0 вхождений в модуле

Почему правлю шапку уже применённой миграции

Файл повторно не выполняется — учёт по имени в _schema_migrations, изменение комментария на это не влияет. Альтернатива (оставить неверный текст в файле, а правду держать только в тикете) хуже: шапка миграции переживёт тикет.

Чего НЕ делаю

DROP TABLE yandex_session_cookies не делаю, хотя таблица пуста и обоснования под собой больше не имеет. Это решение владельца — #3192 помечен needs-human. В обоих местах оставлен явный указатель на это.

Refs #3192, #3195

Текстовая правка. Ни схема, ни поведение не меняются. #3195 замержен с утверждением, что авторизованная сессия Яндекса раскрывает контакты продавца. Утверждение неверно (разбор и цифры — в #3192), а лежит оно ровно в тех двух местах, куда смотрят первыми: докстринг `app/services/yandex_session.py` и шапка миграции 274. Оставлять там опровергнутое описание нельзя — следующий инженер построит на нём решение. ### Что заменено | Было | Стало | |---|---| | «author.phoneNumbers присутствует ТОЛЬКО в авторизованном режиме (0 → 2)» | у целевой карточки телефонов нет никогда: 12 из 12 объявлений, с куками и без | | «контакты продавца физически недоступны без валидной сессии» | `phoneNumbers` встречается только под `offerCard.visitedOffers[*].author` — история просмотров нашей учётки | | «на 11 больше уникальных телефонов (90→101)» | тот счёт мерил рост нашей же истории: +1 запись на каждый фетч | | упоминания `mainPhone` как значимого поля | убраны — 0 вхождений в модуле | ### Почему правлю шапку уже применённой миграции Файл повторно не выполняется — учёт по имени в `_schema_migrations`, изменение комментария на это не влияет. Альтернатива (оставить неверный текст в файле, а правду держать только в тикете) хуже: шапка миграции переживёт тикет. ### Чего НЕ делаю `DROP TABLE yandex_session_cookies` не делаю, хотя таблица пуста и обоснования под собой больше не имеет. Это решение владельца — #3192 помечен `needs-human`. В обоих местах оставлен явный указатель на это. Refs #3192, #3195
bot-backend added 1 commit 2026-08-28 19:53:11 +00:00
docs(tradein/scrapers): в репозитории лежало опровергнутое обоснование хранилища сессий Яндекса
All checks were successful
CI Trade-In / changes (pull_request) Successful in 8s
CI / changes (pull_request) Successful in 10s
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Successful in 4m44s
c995af73c2
#3195 замержен с утверждением, что авторизованная сессия раскрывает контакты
продавца. Утверждение неверно, а лежит оно в двух местах, которые читают в первую
очередь: докстринг app/services/yandex_session.py и шапка миграции 274.

Повторный замер (#3192, 2026-08-28) сделан на ПРОД-транспорте — curl_cffi + прокси
из пула, тот же путь, что у yandex_detail_backfill, — а не на сайдкаре, как первый:

- offerCard.card.author у целевой карточки не несёт phones/phoneNumbers ни в одном
  из 12 случайных объявлений (6 AGENCY, 6 DEVELOPER), одинаково с куками и без;
  только encryptedPhones (1 токен) и redirectPhones;
- phoneNumbers во всём INITIAL_STATE встречается только под
  offerCard.visitedOffers[*].author — истории просмотров НАШЕЙ учётки; анонимно
  список пуст, с куками в нём 9-10 записей;
- первый замер («0 → 3,4,5,6») считал рост именно этой истории: +1 на каждый фетч;
- authorStats.phones (коммутатор застройщика) отдаётся анонимно — тот же номер
  в обеих ветках.

Правка только текстовая: ни схема, ни поведение не меняются. Шапку применённой
миграции правлю сознательно — файл повторно не выполняется (учёт по имени в
_schema_migrations), а неверное описание пережило бы любой следующий разбор.

Таблицу не трогаю: она пуста, но DROP без явного решения владельца делать нельзя.
Судьба #3195 — на владельце, #3192 помечен needs-human.

Refs #3192, #3195
bot-backend merged commit ede1243ce6 into main 2026-08-28 19:58:52 +00:00
bot-backend deleted branch docs/3192-yandex-session-refutation 2026-08-28 19:58:52 +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#3200
No description provided.