Gmail и Google Workspace игнорируют точки в локальной части адреса. john@gmail.com, j.ohn@gmail.com и j.o.h.n@gmail.com доставляются в один и тот же адрес. У Яндекса тот же приём: точка и дефис в локальной части взаимозаменяемы, поэтому ivan.petrov@yandex.ru, ivan-petrov@yandex.ru и ivan-petrov@ya.ru — один ящик. В обоих случаях владелец адреса может создать практически неограниченное число адресов, которые выглядят по-разному, не заводя ни одного нового аккаунта.
Почему это используют для злоупотреблений
Поскольку каждый вариант написания проходит как отдельный адрес, приём — стандартный способ провести одного человека через систему, рассчитанную на одну регистрацию на человека. Один аккаунт Gmail или Яндекса может забрать бесплатный пробный период, реферальный бонус или промокод столько раз, сколько существует способов расставить точки или дефисы в локальной части, — при этом каждая регистрация выглядит для базы, которая проверяет лишь существование адреса, как отдельный настоящий пользователь.
Как это обнаруживает CleanContact
CleanContact отслеживает канонический адрес за каждым проверяемым адресом Gmail, Googlemail, Яндекса и ya.ru по тем же правилам, что и поле normalized: для Gmail точки в локальной части убираются, а домен приводится к gmail.com; для Яндекса каждый дефис превращается в точку, а домен приводится к yandex.ru. Разные написания одного канонического адреса считаются в рамках вашего ключа API за скользящее временное окно. Как только для одного и того же адреса встретилось два и более разных написания, каждая следующая проверка этого адреса возвращает вместе с обычным вердиктом объект risk. Для обоих провайдеров используется один и тот же флаг gmailDotTrick.
Пример
Обычный вызов проверки выглядит как всегда:
curl -H "X-API-Key: <ваш-ключ>" \
"https://api.cleancontact.ru/validate?email=j.o.h.n.doe@gmail.com"Как только для этого же адреса встретится второе написание, в ответе появится поле risk:
{
"value": "j.o.h.n.doe@gmail.com",
"result": {
"status": "Good",
"detail": "Mailbox accepts mail"
},
"risk": {
"gmailDotTrick": true,
"aliasOf": "johndoe@gmail.com",
"seenVariants": 3
}
}Адрес Яндекса работает так же — здесь ранее проверяли ivan.petrov@yandex.ru, и написание через дефис на ya.ru совпало с ним:
{
"value": "ivan-petrov@ya.ru",
"normalized": "ivan.petrov@yandex.ru",
"result": {
"status": "Good",
"detail": "Mailbox accepts mail"
},
"risk": {
"gmailDotTrick": true,
"aliasOf": "ivan.petrov@yandex.ru",
"seenVariants": 2
}
}Что это даёт
- Ловите мультиаккаунтинг на входе — помечайте или блокируйте регистрацию, которая повторно использует адрес, уже встреченный под другим написанием, до того как пробный период или промокод заберут дважды.
- Вердикт остаётся честным — Good, Bad или Unknown никогда не меняются из-за сигнала risk. Ящик в любом случае реально принимает почту — risk лишь сообщает, что это не уникальный человек.
- Видна вся картина, а не одно совпадение — seenVariants показывает, сколько разных написаний уже встретилось, поэтому с ящиком с двумя вариантами и с ящиком с двенадцатью можно поступать по-разному.
Сигналу нужно как минимум два разных написания одного адреса, прежде чем он сработает — единичная проверка любого адреса, как бы он ни был написан, поля risk не вернёт. Отслеживание привязано к вашему собственному ключу API, поэтому отражает только трафик вашей собственной формы регистрации, и включать здесь ничего не нужно.