Рецепты
Today

Про GDPR, практика (5): реклама, куки, tag managers

Рекламная часть. По ней больше всего разночтений за 8+ лет, ландшафт менялся.
Кратенько пробежимся, в чем там геморрой, и как с этим (вам) предстоит жить.

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

Убедитесь, что они в курсе происходящего, и хотя бы понимают, о чем речь.

По рекламной теме особенно надо читать практику, она не только менялась, но и отличается между регионами.

В нашем сериале было: про документы и регулятора, про консенты и идентификации, про удаление, деперсонализацию и UGC, про получение-изменение данных и гайды. Пишешь тут, пишешь готовые ответы, и хоть бы одна падла лайк поставила, ну.


В чем проблема в принципе

Основная в том, что значительный пласт рекламного взаимодействия происходит тогда, когда у вас еще нет прямых согласий и консентов. Вы того юзера еще в глаза не видели, и он не ваш юзер вообще — нет документов, нет регистраций, согласий естественно тоже, и хрен знает что там на далеком периметре происходит. Может даже не на вашей стороне.

А данные уже присутствуют, хотя бы технически-операционно. Как минимум вы (или рекламный оператор) сам выбирает, как тому юзеру рекламу показать, и какую. То есть, собирает данные и делает из них какие-то выводы.

Причем персонально, относительно конкретного Васи.
Это закон как раз хочет регулировать.

Формально системы сначала получают какие-то данные, даже чисто технические, а только потом могут уже потенциально судить и оценивать, можно ли с этим работать, по смыслу и по закону. Ты не можешь принять решение вообще никакое, если никаких данных нет. В этом коллизия.

Не только в рекламном случае, это отраслевая техническая проблема, и это проблема регуляции. Даже для того, чтобы запретить сетевой доступ к хосту через автоматический fail2ban, ты должен сначала прочитать данные подключения, и сверить с правилами. Телега вперед лошади никак не ставится.


В чем проблема именно с рекламой

Во-первых, реклама персонализируется, и данных там много. Это не просто фингерпринт и техническая стата. Это некоторая история. За использование которой вы, по сути, платите рекламному оператору, чтобы он вам юзеров каким-то образом привёл.

Данные рекламного профиля собирали не вы, вы в данном случае потребитель этой рекламной услуги. А рекламный оператор, на примере Гугла и Фейсбука, собирает охренительное количество данных не только со своих площадок, но и со всех сторонних площадок, где их код работает. А это пол-интернета.

Получается в этом случае картина:

  • какие-то посторонние люди на своих площадках подключают код Гугла, который собирает себе какие-то данные в свою пользу (не в пользу площадки, не в пользу юзера по EULA и целям, а в пользу самого Гугла)
  • вы сами передаете Гуглу в рамках услуги некислый такой, персонализированный (на пользователя) пакет данных, чтобы Гугл сделал по нему какие-то выводы. Следом еще и обогащаете событиями.

Да, вы пользователя не знаете, и не персонализировали. А гугл-то знает.

С точки зрения законодателя, такая казацкая вольница выглядит как однозначный залёт. Причем всем участвующим.

Крайние вы, потому что с вашим сервисом идет взаимодействие, значит и нагибать будут вас. А вы даже не знаете, что там делает у себя Гугл, и пользователя первый раз видите. Гугл тоже будут нагибать (и регулярно это делают), но вам от этого не легче.

Вы даже не представляете, местами в полной мере, насколько бихтехи собирают данные, и персонализируют собранное. На той стороне потенциально лежит вся история взаимодействия пользователя с половиной интернета вообще. Которую рекламный оператор вам, собственно и продает, монетизирует об вас.

Его собственные действия определяет его собственная политика, но взаимодействие с ним, с его услугой и с данными/выводами — уже ваша.

Вариант «вообще отказаться от гугла» и рекламных систем до получения консентов итд итп технически вроде бы возможен (на что часто напирает регулятор), но практически полностью бессмысленный.

Можно вообще рекламу отключить. И бизнес закрыть.
Зато регулятор будет доволен.


Куки и рефы

О чем идет речь, ликбез для гуманитариев.

— Условный гугель отмечает, идентификатором, у себя клиентское устройство пользователя, при помощи cookie, который будет передаваться серверам гугла чисто технически, когда браузер выполнит любое обращение к домену гугла. Далее браузер пользователя находится на сайтах гугла, сервера гугла получают (и могут обрабатывать) это знание каким-то образом. Окей.

— Далее пользователь посещает систему А, у которой подключен код гугла, который отдается с доменов гугла. Бразуер передаст идентификатор на сервера гугла, потому что есть обращение, и с доменов гугла он был изначально поставлен. Что с этим будет или не будет делать гугель, мы не знаем

— Следом пользователь посещает вашу систему, где аналогично подключен код гугла, который отдается с доменов гугла. Браузер пользователя точно так же передаст туда идентификатор, потому что есть к ним обращение. Передаст без вас, вы никак осознанно целенаправленно туда ничего не передавали. Браузер пользователя и гугель взаимодействуют без вас. Просто по факту того, что есть обращение к оригинальному домену гугла.

Что в этом случае делает, или не делает гугель — мы, и пользователь, можем знать только на основании их опубликованных политик. Где прописаны механики, обработка, и соответствие законам + предпочтениям пользователя. Вот из этого и надо исходить по букве закона, вне зависимости что там пишет спам в интернетах. Всё, что делает гугель сам, без вас, за это он сам несет ответственность. Про ответственность будет ниже.

То, что вы, со своей стороны, явно запрашиваете у гугла, или передаете в гугл конкретной операцией, реализованной на вашей стороне — вот это уже ваше. Вы можете не делать ничего вообще. Техническое подключение кода гугла необходимо для возможности его использования. Принимать решение, использовать или нет, вы у себя отдельно должны осознанно на каком-то основании: например, на консенте пользователя. Подразумеваемый консент не допускается, но он касается только вашего взаимодействия, а не поведения гугла. Гугл должен руководствоваться своей полиси и своими консентами, это их дело.

Самое важное: получение — не равно использование.
Всем заинтересованным вы должны уметь это сказать, и внятно показать/аргументировать.

Прикладное куководство обложено рядом требований чисто интерфейсных, я ниже упомяну. Пока тут самое важное — implied consent не работает, его нельзя, за это больно бьют. Сказать пользователю «ну ты страницу не закрыл, значит согласен» — нет, не значит, так делать нельзя, во всех аналогичных случаях.


Как решается

Во-первых, вы должны четко сами понимать, и прописать в документах зону ответственности. Какая она собственно есть:

  • непосредственно ваши взаимодействия с данными, осознанная целенаправленная передача, это ваше. Вы за них полностью отвечаете.
  • подключения третьих лиц, то есть факт подключения рекламных систем технически, ваша ответственность и ваше решение. Они могут получать и обрабатывать данные, имеют такую техническую возможность. У них есть на этот счет полиси, где написано, что они реально делают, и когда. И которые вы обязаны упомянуть в своих. У вас есть цели, для которых вы это всё подключаете — цели также надо упомянуть.
  • что там делают третьи лица самостоятельно, без вас, с консентом или без, и как соблюдают закон по отношению к юзеру, без вашего прямого взаимодействия — это не ваша зона ответственности. Это регулируется их политиками, вот вы их предоставили.
  • для вашего взаимодействия, с гуглом и кем угодно еще, необходим консент пользователя. Неважно, «пойдут данные в-туда», или «оттуда». Необходимо сделать так, чтобы без консента никакого взаимодействия с вашей стороны не происходило.

Во-вторых, надо действительно убедиться, что никакого «по умолчанию» взаимодействия, даже безобидного «как рекомендовал гугель» у вас не происходит. К счастью для нас, популярные рекламные системы у себя на 2026 действительно поотключали бОльшую часть операций «по умолчанию», прописали в свои полися, и поведением можно управлять.

В-третьих, хорошей идеей будет убедиться, что рекламные идентификаторы, которые к вам могут прилететь, действительно не используются внутри системы до тех пор, пока вы не получили нормальный консент — и он актуальный, пользователь вам ничего не запретил на этот счет, и просто не отозвал консент.

Когда у вас миллионы юзеров в датапомойке, это может быть не столь тривиально, об этом важно не забыть. Само по себе наличие где-то там обезличенного (для вас) идентификатора abcde0123 совершенно не означает, что вы можете его использовать. Или что вы будете его использовать, не будете если пользователь вам это запретил — вы и не будете, вам закон запрещает. О чем в полисях целесообразно упомянуть.

В-четвертых, следует по возможности отвязать функциональные механизмы, без которых ничего никуда не поедет, от непосредственно операций с данными (которые этими механизмами делаются). Как в анекдоте, нельзя заранее судить за разврат, даже если инструмент есть. С технической точки зрения, вы можете даже поймать всё необходимое себе куда-то на сервер, но вы НЕ можете это использовать без спросу уже для целей, и по существу задачи. И не будете.

И наконец, очень рекомендую всегда нагуглить и почитать актуальные гайды + разъяснения. От самого регулятора и регионалов, НЕ из статеек в интернетах. Потому что там ворох спекуляций и отсебятины. Впрочем, даже эта статья = все равно отсебятина, так что смотрите в первоисточники. Ебать будут по ним.

Ссылка на гайды и разъяснения регуляторов вполне годится для аргументации дизайна системы, и поведения, самому дкому/регулятору. Мы делаем вот так, потому что вот такая отраслевая практика и подходы были описаны вот тут. Держите с дкомом контакт.


Технические хаки

Очевидный даже не хак, а скорее байдизайн — всё взаимодействие «без спросу» должно быть сведено к абсолютному минимуму. Что касается сторонних систем и их поведения без вашего участия, на него вы повлиять не можете. Регулятор не может просить вас отключить гугл в принципе, забыть их адреса, просто потому что ему кажется, что там обрабатывают данные как-то не так — это надо помнить.

Когда кажется, надо креститься и читать полиси. В которой гугл обязуется соблюдать закон. Ваше добросовестное поведение состоит в том, что вы ожидаете от гугла соблюдения собственных политик и отраслевого законодательства. Всё на том.

Если пользователь руками в консоль браузера пропишет «отсылать в эту систему cookie с надписью это_моя_персональная_инфа», и браузер будет его отсылать — это не делает меня, как оператора системы, чем-то обязанным по отношению к автору, и к данным, которые я не обрабатываю и обрабатывать не собираюсь.

Еще полезный дизайн, разделить технически взаимодействие «посадочное», с которым к вам приходит какой-то пользователь, и которое вам просто явочным порядком летит откуда-то извне; и взаимодействие «последующее», которое вам может быть необходимо для обработки (которая может произойти, а может и не произойти). Рекламные системы об этой разнице в курсе, посмотрите их доки.

У рекламных систем есть опция, когда для базового получения обезличенных рекламных идентификаторов не требуется подключение черного ящика от гугла целиком. Вам прямо в рекламных ссылках будет прилетать атрибуция, это к примеру различные utm-метки (ваши), рефы, и те самые gclid/yclid/rid/ray и аналоги.

То, что вы их поймали сервером (просто по факту, вот вам их прислали, запрос пришел) нисколечко и ни для кого не означает, что они как-то используются, или будут использоваться. Записать их во временный кеш (напр., серверной сессии) без передачи обратно гуглу, просто для того чтобы потом забыть, если нет консента — понятная и оправданная защита прав пользователя.

Ты не соглашался, мы не используем. Мало ли куда там что прилетело.

Обезличенный трекинг статистики, например, точно так же к правам пользователя и данным пользователя не относится. Если у вас 100500 пользователей пришли с запросом /promo, данных о самих пользователях у вас никаких нет, вы их не получали. Это набор счетчиков, ну окей. И у пользователей прав на этот счет не образуется, пока их персональных данных в этой статистике нет; из цифры 100500 никак нельзя выделить конкретного Васю (средствами вас, или кого-то еще).

Вам, соответственно, предстоит сходить и убедиться, что ваша система действительно на практике работает так, как вы описываете (юзеру/регулятору). Расхождения могут выйти боком.

Важная оговорка: к вам будут прибегать всякие нонеймы с пафосных доменов, и рассказывать, что вы дескать неправильно обрабатываете вот тут куки, вообще всем должны как земля колхозу, и вам сейчас будут уготованы земные кары и поругание небесное. Следом обычно выясняется, что будут разводить на бабло, или предлагать свои ниибаца ценные услуги, «вот, а мы знаем как надо». Рекомендую не вестись, это просто заход «на дурака», их тонны.

Требовать от вас чего-то может либо лично юзер, либо дком/регулятор, и только он. Мнение всех остальных в этом вопросе не более чем совещательное. Даже юзер, которому там «что-то показалось», по-первых должен оформить запрос по форме, на который вы ответите, а во вторых представиться/идентифицироваться, и рассказать, какие именно его права нарушаются, чем конкретно, и в связи с какими целями.

Рекомендую заготовить типовой ответ (вместе с юротделом), который на такие заходы будет аргументированно отвечать.

Что вы соблюдаете закон, вот ваши полиси, и никакие обработки данных и взаимодействия в этой связи не происходят без явного согласия пользователя, как требует законодатель и его предписания. Ваша система не производит никаких действий по отношению к пользователю без получения явного консента, и вы строго за этим следите.

Обезличенные данные для статистических целей не создают правовых последствий по отношению конкретному пользователю, потому что объект права в данном случае отсутствует, в ваших системах и на вашей стороне.

Если у пользователя есть обоснованное аргументированное мнение, что третья система чем-то нарушает его права, без вашего непосредственного участия, то следует обратиться к ним (вот их DPO) и к регулятору, а вы, со своей стороны, готовы предоставить все релевантные ситуации данные в рамках, не нарушающих ничьи права, для рассмотрения ситуации по существу.

Пользователь и жалобщик, как и сама разводящая вас на бабло контора, могут даже добежать до регулятора и действительно пожаловаться туда. Но если все обстоит так, как в вашем ответе, дком/регулятор будут на вашей стороне. Они тоже в курсе, о толпе бегающих по рынку подобных разводил.

Следите только, чтобы регламент вопросов-ответов соблюдался, и фактура предоставленная пользователем никого не убеждала в обратном. Максимум что получите, регулятор попросит вас что-то подкрутить, или прояснить текстом в полисях. Это не страшно.


Рекламные контейнеры (GTM)

Если у вас используется система фронтенд-контейнеризации, всякие tag managers и их аналоги, её можно обвесить условиями и проверками, чтобы ничего потенциально проблемного не происходило по-умолчанию, без спросу и раньше требуемого. Вообще это достаточно удобно, потому что единая точка управления.

Множество систем которые «показывают пользователю уведомления о куках», и хотят за это бабла, по сути делают то же самое (если вообще делают).

У них правда уже нарисованные интерфейсы, рамочные текста согласий-уведомлений, это может быть полезно — или использовать, или сп-здить к себе (точнее, взять за пример).

С самим оригинальным GTM, который Google Tag Manager, ситуация двоякая. Всех смущает, что на нем написано Google — значит, взаимодействие с ним уже чем-то там потенциально чревато. Даже просто подключение, потому что это домены гугла, и дальше всё то, что описано выше.

Гугл после ряда дорогостоящих пиздюлей клянется, что ничего рекламно-ориентированного и предосудительного на тупом подключении самой контейнеровозки не происходит. Но пользователи почему-то не верят на слово.

Плюс к тому, с оригинальным GTM есть еще и другая проблема: его блочат всякие спаморезки. Видимо, не доверяют. И если у вас на GTM завязана какая-то сложная логика, она может просто тупо не заработать, потому что весь механизм ультимативно зарезан на взлёте. Даже вполне нужные и правомочные штуки, как получение тех самых консентов — а нечем их получать больше, весь код отрезали нахрен.

Получается, тупо настреляли сами себе в ноги. А доля юзеров со спаморезками, фильтрами и адблоками может запросто превышать 50% входящего трафика.

Можно взять любую другую. Можно написать свою, заодно будет всё под контролем. Клиентская часть гугловского GTM+DL тупая как угол дома. Аналоги на рынке присутствуют, косые-кривые, но даже у бесплатного piwik/matomo server такая есть. В общем, сходите покопайтесь, гугл в помощь.

Относительно управления, вот эти самое «окошки про куки» и консенты, есть ряд разъяснений и (естественно) ограничений. Кратко:

  • нельзя implied, «ты пользуешься, значит согласен». Согласие должно быть явное, и написано, с чем конкретно: полиси, цели
  • нельзя совмещенное, «ты согласен вот с тем, вот с тем, и еще вот тут заодно». Нельзя «с запасом», заранее согласен на всё на год вперед
  • нельзя ограничивать доступ целиком, это важно, это нужно аргументировать. Вариант «ты не согласен с рекламой, мы тебя забаним сами» не бьется с целями; а ограничивать пользователя волюнтарно нельзя, вы навязываете необоснованное требование. Но можно делать слоёное: да, зарегать мы тебя можем, а больше ничего не можем, т.к ты не согласен с базовыми вещами, цель не реализуема (почему)
  • нельзя любым образом технически продавливать преференции выбора. Это когда согласие жирно и явно, а отказ в мелком шрифте и через три экрана. Даже разные кнопки делать — не рекомендуется
  • что касается кук, нельзя произвольно включать всё что угодно в необходимость. Потому что она смотрится с точки зрения юзера, а не с вашей. Вам реклама необходима, а юзеру нет — у вас разные цели реализуются. С другой стороны, серверная сессия в которую вы временно запишете данные, чтобы уже когда можно, принимать (или не принимать) решения — это вполне функциональная необходимость
  • дефолт для всего, что опциональное — выкл. Как технически (понятно), так и в интерфейсе. Заход «хочешь отказаться — иди снимай 50 галочек» нельзя.
  • функциональную неотключаемую блокировку на весь viewport нельзя, т.к неоправданное ограничение доступа

Ну и так далее. В гайдах есть.

Видел оправданное решение у коллег, которое резко снижает набег cookie-истеричек. Там на входе прилетает борода идентификаторов, в километр длиной — /someshit? ref=…&gclid=…&utm_camp=…&utm_key=… ну вы поняли.

Решение такое: если бекенд видит такую простыню, то пишет её всю к себе, и отдает редирект-303 на пустой /someshit. Где висит только одна сессионная кука jsession, можно проверить в консоли. После всех необходимых консентных танцев, можно по надобности из нее что-то вытащить уже, или не вытащить если не разрешили. И если надо, явно передать в уже инициализированные рекламные системы.

Технически разницы немного, а практически набег мамкиных профессионалов, которые идут в консоли куки смотреть — резко снизился.


А, не хватает раздела «как мы делали». В разных местах, разные системы, но примерно так и делали, как описано.

  • для диких юзеров ничего нельзя, по самому минимуму, потому что консент. Запоминать что-то можно, пользоваться нельзя. Поначалу от подключения внешних систем были вопли, но во-первых подключение не значит использование, а во-вторых инструменты к текущему времени повзрослели, практик стало больше, воплей меньше
  • если используется gtm, все его операции (теги, контейнеры) смотрят на наличие консентов, прямо в data layer в переменные js. Можно — работаем, нет — ничего и не выполнится. Что-то повисшее в триггерах на load без спросу — это алерт и залёт
  • внутри системы трекаются консенты. И делали одну сводную метку, типа статус этого юзера для нас юридически, в сумме, можем ли мы с ним работать нормально. Сразу по всему списку консентов, которые нам нужны для работы. «Все есть» — окей, «немного устаревшие» (но весь список) — плюс-минус нормас, «чего-то нет» — нахер его, он проблемный. Причем последних через время залочит автоматика, я уже писал. Нафиг те риски
  • устройство системы и правил должно быть отражено в доках, в основном чтобы показать сомневающимся и регуляторам. Нормальным людям на них пофиг, возможно потому что мы сами-то не рекламный провайдер, никого особо не перепродавали, и цели конкретные и всем понятные (во всех кейсах)
  • контейнеровозка = имба и добро, потому что партнерский налив и «ой, а вы нам подцепите нашу аналитику там тоже» должны централизованно регулироваться
  • консенты на вебе нас интересуют только до тех пор, пока юзер нам не представился/зарегался, и мы не обработали согласия нормально. А если это не наш юзер, регаться он не будет, то и хрен с ним — все равно никаких договорных отношений с нами нет, услуг нет, обязательств нет, и захотеть он (от нас) может только узкий список странного
  • паникёры, разводилы и жалобщики запросто заябывают всех. You’ve been warned.

Человеческий фактор

Не могу не поныть, что потратил годы своей бесценной жизни, рассказывая вышеизложенное и добросовестно тыкая мордой в факты (и разъяснения) паникёров и белок-истеричек из юротдела. Совсем непроходимых даже уволили (потому что надо решения прорабатывать, а не бегать с воплями).

Но могу сказать, что всё это ни фига не просто.

Вкурите design practices и доступные guidelines. Если есть контакт с регулятором, спросите у него — это отраслевая беда, задача и коллизия, не только ваша личная. Вам не надо быть святее папы римского и отключать все системы с аргументацией «ой, как бы там чего не вышло».

Понятно, что юротделу так типа проще, но «как проще» отключить сервера — у них не спрашивают. Спрашивают, как выполнить требования регулятора.

Невозможна ситуация, когда вся отрасль как-то эту проблему решает, а тут танцорам опять что-то не так. Значит, плохо искали решения, особенно когда все гайды написаны.


Про то, как не создать себе deadlock-ситуаций, и не класть юзерские данные в неизменяемый блокчейн — описывают бай-дизайны, design guidelines. Они гуглятся.

Но это позже, если мне вообще будет не лень.

Hope that helps.