Следите за использованием ключа, пока не упёрлись в лимит
Наблюдение за заголовками квоты по ходу работы показывает приближение к лимиту задолго до того, как запрос будет отклонён.
Большинство реальных посетителей подключаются из домашних или мобильных сетей. Большая часть автоматизированного трафика идёт из дата-центров и от облачных хостинг-провайдеров. Эта разница хорошо видна в полях asn и org при определении IP.
GET /v1/ip?ip=203.0.113.99{
"status": "ok",
"ip": "203.0.113.99",
"version": 4,
"found": true,
"country": "United States",
"country_code": "US",
"region": "Virginia",
"city": "Ashburn",
"postcode": "20147",
"lat": 39.0438,
"lon": -77.4874,
"timezone": "America/New_York",
"asn": 16509,
"org": "Example Cloud Hosting"
}Ведите короткий список шаблонов названий организаций или конкретных номеров ASN, которые, по истории вашего собственного трафика, связаны с облачным хостингом и известными платформами автоматизации, и помечайте трафик из этих сетей для дополнительной проверки, например CAPTCHA или пониженной оценки доверия, а не блокируйте его сразу. Облачные диапазоны IP используются и вполне законно, в том числе корпоративными VPN и инфраструктурой мобильных операторов, поэтому этот сигнал лучше всего работает в сочетании с поведенческими сигналами, а не сам по себе.
Сочетание проверки ASN с полем country_code выявляет другой шаблон. Аккаунт, который заявляет, что находится в одной стране, но постоянно входит с адреса дата-центра, зарегистрированного в другой, вместе даёт более сильный сигнал, чем каждый факт по отдельности. Ни одно из полей само по себе ничего не доказывает, поскольку реальные клиенты путешествуют и пользуются VPN по совершенно обычным причинам, но в системе оценки эту комбинацию стоит учитывать с большим весом, чем любую из проверок по отдельности.
Выполняйте проверку ASN в тот момент, когда трафик впервые попадает в ваше приложение, например на форме регистрации или при попытке входа, а не постфактум, чтобы сигнал действительно мог повлиять на то, что произойдёт дальше. Кешируйте результат на время сессии, поскольку ASN адреса не меняется посреди сессии.
Посетителю, которого один раз оценили при регистрации и который позже возвращается с того же сетевого адреса, не нужно каждый раз проводить новое определение, поскольку поля asn и org для данного адреса остаются стабильными от сессии к сессии. Кешируйте классификацию по самому адресу, а не только по сессии, чтобы заведомо безопасный домашний адрес не перепроверялся при каждом будущем визите.
Если сразу блокировать каждый запрос от узнаваемого хостингового или облачного ASN, а не оценивать его, вы отсекаете реальную долю легитимного трафика вместе с автоматизированным трафиком, который на самом деле хотели остановить. Выходные узлы корпоративных VPN, некоторые мобильные операторы и браузеры, ориентированные на приватность, проходят через инфраструктуру, которая может выглядеть так же, как хостинг-провайдер. Используйте поля ASN и org как один из входных параметров для решения об оценке или дополнительной проверке, а не как самостоятельное правило автоматической блокировки.
Одно определение на новую сессию с последующим кешированием означает один запрос на посетителя, а не по одному на каждый его запрос. На сайте с заметным объёмом регистраций или входов при умеренном трафике это укладывается в 2 500 бесплатных запросов в день, которые входят в каждый ключ, а когда объём вырастет сверх этого, можно перейти на предоплаченный баланс или ключ Unlimited.
Сетевое происхождение это один сигнал из нескольких, а не окончательный вердикт, но добавить его в процесс регистрации или входа недорого. В документации по определению IPv4 и документации по определению IPv6 описано каждое поле, которое возвращает эндпоинт.