Хэшируем данные для Аудиторий Яндекс.Директа и 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)))
По необходимости, вы можете использовать код как отдельный инструмент, например, выгружать пользовательские данные из базы данных.
- Выполняем запрос к базе данных с помощью функции pd.read_sql получая на выходе DataFrame
- И сразу вызываем 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