Хэшируем данные для Аудиторий Яндекс.Директа и Google Ads

Хэшируем данные для Аудиторий Яндекс.Директа и Google Ads

В этом цикле статей мы научимся хэшировать пользовательские данные, генерировать импортный файл для рекламных систем, а также передавать их по API Аудиторий и Management API. В этом гайде, мы напишем класс, для хэширования и генерации номер мобильных телефонов и мейлов. В конце гайда можно будет скачать готовый для работы класс.

Давайте для начала разберемся форматом файла, который вы должны подготовить перед использованием класса.

  • Формат: CSV (UTF-8)
  • Столбцы и заголовки: phone,email
  • Формат номера мобильного телефона: 79251234567
  • Скачать образец

Напомним, что для яндекса мы используем алгоритм хэширования md5, а для google sha256. Если вам неинтересно читать как работает класс Hasher (готовый класс для генерации и хэширования аудитории по списку), просто скачайте архив с кодом и образцом csv по кнопке.

 

Скачать архив с кодом

 


Хэширование md5 и sha256 в Python

Для хэширования данных будем использовать библиотеку hashlib, которая идет вместе с интерпретатором Python. Давайте импортируем библиотеку и разберем функции, которые нам понадобятся. Напишем тестовый код, для демонстрации работы:

 

import hashlib

line = '79214532167'

m = hashlib.md5() # Создаем объект класса <class '_hashlib.HASH'>
m.update(line.encode()) # Юникод-объекты должны быть закодированы перед хэшированием
print(m.hexdigest()) # дайджест HEX строки
# Вывод: 2c0beef2cdd0ddae1b7777b928c7dd29

m = hashlib.sha256() # Создаем объект класса <class '_hashlib.HASH'>
m.update(line.encode()) # Юникод-объекты должны быть закодированы перед хэшированием
print(m.hexdigest()) # дайджест HEX строки
# Вывод: cb24e31afad0ab104eabaaacf7ef203dd4ec93cbd5a506db89327a515c36a92b

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

Для того, чтобы применить функцию хэширования мы обращаемся к функции .apply, подробнее в коде ниже.

 

'''
Мы создаем еще одну захешированную колонку в DataFrame,
а к исходной колонке применяем функцию apply, 
которая применяет лямбда-функцию к каждоой строчке данной колонки,
где и происходят вызовы функции get_md5. Подробнее в полном коде под статьей.

P.S. 
Я сознательно не разбираю особенности Python, потому что не являюсь профессиональным разработчиком.
Подробнее про функции читайте в документации и в блогах экспертов.
'''
buffer_df['mail_md5'] = buffer_df['email'].apply(lambda x: self.get_md5(str(x)))

По необходимости, вы можете использовать код как отдельный инструмент, например, выгружать пользовательские данные из базы данных.

  1. Выполняем запрос к базе данных с помощью функции pd.read_sql получая на выходе DataFrame
  2. И сразу вызываем Hasher передавая в него dataframe с колонками email и phone

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

 


Требования к файлу с хэшированными данными Google Ads: https://support.google.com/google-ads/answer/7659867?hl=ru
Требования к файлу с хэшированными данными Yandex.Direct: https://yandex.ru/support/audience/file.html

Leave a Comment