Следите за использованием ключа, пока не упёрлись в лимит
Наблюдение за заголовками квоты по ходу работы показывает приближение к лимиту задолго до того, как запрос будет отклонён.
Специализированный сервис обнаружения мошенничества избыточен для большинства небольших форм регистрации. Простая проверка, сравнивающая то, на что указывает IP-адрес, с тем, что заявлено в форме регистрации, сама по себе отсеивает заметную долю явно несоответствующих попыток.
GET /v1/ip?ip=198.51.100.200{
"status": "ok",
"ip": "198.51.100.200",
"version": 4,
"found": true,
"country": "Brazil",
"country_code": "BR",
"region": "Sao Paulo",
"city": "Sao Paulo",
"postcode": "01310",
"lat": -23.5505,
"lon": -46.6333,
"timezone": "America/Sao_Paulo",
"asn": 8901,
"org": "Example Cloud Provider"
}Если форма регистрации запрашивает страну для оплаты и введённое значение не совпадает с country_code из определения IP, само по себе это ничего не доказывает, поскольку и поездки, и использование VPN распространены и вполне законны. Считайте несовпадение одним баллом, добавленным к простой оценке, а не поводом для автоматического отказа.
Поле org часто показывает, принадлежит ли адрес домашнему интернет-провайдеру или дата-центру либо провайдеру облачного хостинга. Регистрация из сети облачного хостинга, откуда реальный частный клиент заходит редко, заслуживает более высокой оценки, чем регистрация от узнаваемого домашнего провайдера, но опять же сама по себе не является поводом для автоматического отказа.
Если вы заметили, что определённые значения ASN регулярно встречаются среди злонамеренных регистраций, ведение короткого списка этих конкретных номеров asn и добавление фиксированного балла каждый раз, когда новая регистрация совпадает с одним из них, является лёгким способом учитывать эту закономерность в дальнейшем, без полноценной сторонней базы репутации ASN для проверки такого скромного масштаба.
if ip_info["asn"] in known_abuse_asns:
score += 2Сложите несколько простых проверок: несовпадение страны, происхождение из хостинговой сети и всё остальное, что специфично для вашего процесса регистрации, в одну числовую оценку. Всё, что превышает заданный вами порог, направляйте на ручную проверку или дополнительный шаг подтверждения, например подтверждение по электронной почте, а не блокируйте сразу.
Не оценивайте каждую регистрацию через VPN или из хостингового диапазона как автоматически высокорисковую без какого-либо другого контекста. Многие добросовестные клиенты заходят из корпоративной сети, которая случайно маршрутизируется через диапазон IP дата-центра, или через VPN, которым пользуются по вполне обычным причинам конфиденциальности. Если учитывать тип сети как один сигнал из нескольких, а не как единственный дисквалифицирующий признак, проверка не будет отталкивать реальных клиентов из-за ложного срабатывания.
Общая офисная сеть или NAT операторского уровня у крупного мобильного оператора может за короткое время собрать за одним IP-адресом множество не связанных между собой, вполне законных регистраций. Если в рамках проверки вы также считаете число регистраций с одного IP, задайте этот порог с достаточным запасом, чтобы учесть такие случаи, или оценивайте его вместе с сигналами о стране и сети, а не как отдельное правило.
Такая проверка нужна для того, чтобы отсекать очевидные примитивные злоупотребления, а не заменять полноценную систему защиты от мошенничества в бизнесе, где потери от мошенничества представляют серьёзную проблему. Считайте её первым фильтром, а не окончательным вердиктом.
Один запрос на каждую попытку регистрации означает один запрос к API. Даже форма, на которую регистрации поступают непрерывным потоком, при типичных объёмах легко укладывается в 2 500 бесплатных запросов в день, которые входят в каждый ключ. Заголовки ответа X-Quota-Used и X-Quota-Free-Remaining позволяют просто отслеживать, какую часть этой квоты расходует внезапный всплеск попыток регистрации.
Лёгкая оценка, построенная на паре сигналов, полученных по IP, отсекает больше, чем полное бездействие, и не требует затрат на отдельную антифрод-платформу. В документации по определению IPv4 перечислены все поля, доступные для такой проверки.