Геофрод — это когда пользователь делает вид, что он из «правильной» страны, города или даже района, чтобы получить доступ к функциям, бонусам или тарифам, на которые он в реальности не должен претендовать. У букмекеров это про бонус-абьюз и мультиаккаунтинг, у финтеха — про регуляторные ограничения, у стриминга — про права на контент. Сценарий знакомый: VPN, мобильный прокси, антидетект-браузер, эмулятор Android и немного фантазии. Хорошая новость в том, что фантазии часто не хватает — и это шанс для антифрода.
Куда и зачем подменяют локацию
Мотивации банальны, но устойчивы. Игроку хочется более щедрых бонусов, арбитражнику — дешевых офферов, «серому» магазину — обходить геофенсы платежей. Подменяют IP через VPN/прокси, маскируют устройство под «чистый» браузер, запускают приложение в эмуляторе или корпоративной VDI, где всё выглядит стерильно. Если прозрачно объяснить риски и поставить несколько «ступеней правды», часть схем отпадет сама собой.
- Бонус-абьюз: свежий IP, «новое» устройство, другой регион.
- Регуляторные обходы: доступ из запрещенной страны.
- Ценовая дискриминация: подмена города/страны под выгодный тариф.
Сигналы IP-уровня: мелочи, которые выдают схему
IP — первый пласт. Да, многие базы геолокации ошибаются на сотни километров, зато на уровне инфраструктуры много правды. Смотрите шире, чем просто «IP из нужной страны».
- ASN и тип сети: датацентр против «жилого» провайдера. Проверьте базами GeoIP2 , IPinfo или IP2Proxy .
- Протоколы и стек: игнор IPv6, аномальный TTL, редкие TCP-опции — у реальной мобильной сети они стабильнее.
- TLS-отпечаток: несовпадение JA3 браузера и заявленного агента; отличный повод усомниться. Почитайте про JA3 .
- DNS-поведение: резолв через публичные резолверы «не того» региона или нестандартные тайминги.
- Часовой пояс и язык: Accept-Language и local time не дружат с заявленным городом.
- WebRTC: ICE-кандидаты нередко сдают реальный интерфейс. Справка по API есть на MDN .
- Anycast и CGNAT: пачки клиентов «в одном» IP путают модели — готовьте правила на плотность/энтропию.
Практика простая: складываем признаки в скоринговую карту, где «датацентр+мобильный User-Agent+нестандартный JA3» весит больше, чем «IP странный, но остальное норм».
GPS и Wi-Fi-треангуляция: когда физика помогает
GPS сам по себе не панацея: на Android его можно «мокать», а в браузере пользователь вообще вправе отказать в разрешении. Но если соединить GPS, Wi-Fi-скан, соты и инерциальные датчики, картина получается убедительнее. Плюс Wi-Fi-треангуляция часто точнее в городе.
- Скрещиваем источники: IP-страна, GPS-координаты, Wi-Fi BSSID вокруг, CellID. Отклонение больше допустимого — триггер на дополнительную проверку.
- Скорость перемещения: «перелет» на 3000 км за минуту выглядит эпично, но плохо для доверия.
- Альтиметр и спутники: реальный GPS дает высоту и число спутников, мок-локейшн — нет или «рисует» слишком ровно.
- Wi-Fi-каталоги: сверяйте BSSID через открытые источники вроде Mozilla Location Service (при соблюдении приватности и условий сервиса).
Подход «мягкого несоответствия»: не баним, а делаем шаг верификации. Например, попросить включить геолокацию, пройти мини-челлендж или подтвердить адрес при следующем пополнении.
Эмуляторы и VDI: гладко на скриншоте, шумно в телеметрии
Эмуляторы любят схемы с массовыми аккаутами. Там легко менять IMEI, модель, язык. Но эмулятор — это целый зоопарк артефактов: отсутствующие сенсоры, графический рендерер вроде SwiftShader, странная батарея, одинаковые ширина/высота экрана, «мёртвые» камеры.
- Play Integrity: на Android используйте Play Integrity API как замену SafetyNet. Это база для «attested» статуса устройства.
- App Attest / DeviceCheck: для iOS — DeviceCheck и App Attest .
- Heurистики: ро/проперти Android (ro.kernel.qemu), редкие ABI, пустые сенсоры, библиотечные следы эмуляторов, GPU-рендерер, одинаковые build fingerprint, повторяющиеся серийники.
- VDI/корп-среды: Citrix/VMware дают характерные драйверы дисплея и редирект-модули. Почитайте про продукты Citrix и VMware Horizon , чтобы знать, что искать.
В браузере VDI/VM тоже видно: нестандартный Canvas/WebGL, высокая джиттерность таймеров, стабильные шрифты независимо от локали. Хорошая новость: все это отлично складывается в отпечаток устройства.
Отпечаток устройства: Canvas/WebGL, шрифты, тайминги
Антидетект-браузеры пытаются «подделывать» каждый слой. Но когда мы считаем десятки независимых признаков, собрать правдоподобную мозаику становится сложно. Традиционные векторы — Canvas/WebGL, аудио-контекст, набор шрифтов, метрики ввода, задержки событий, длина кадров анимации, нестабильности High-Resolution Time.
- Многослойность: 1-2 сигнала легко подменить, 40+ — уже нет. Снимайте профиль рендеринга и времени реакции интерфейса.
- Динамика: не только «что», но и «как» меняется со временем. Ровная как линейка телеметрия — подозрительно.
- Коммерческие и open-source решения: посмотрите на Fingerprint или FingerprintJS как отправную точку.
Архитектура антифрода: правила плюс ML
Золотая середина — комбинация детерминированных правил и модели, которая «понимает» контекст. Правила ловят грубые нарушения, модель — сложные комбинации. Любая гипотеза проверяется A/B и влияет на бизнес-метрики, а не на «ощущения команды».
- Сбор телеметрии: IP/ASN, TLS-отпечатки, WebRTC, Canvas/WebGL, GPS/Wi-Fi/CellID, сенсоры.
- Нормализация: одинаковые схемы логирования в вебе и мобайле.
- Правила: «датацентр+мобайл UA» или «перелет 1000 км за 5 минут».
- ML: признаки на граф связей устройств/аккаунтов. Для графа удобен, например, Neo4j .
- Чек-ауты: мягкие челленджи вместо жестких банов.
Практические кейсы
Чтобы не звучать как учебник, несколько «живых» паттернов.
- Мобильный прокси-ферма: IP вроде бы мобильный, но TLS-отпечаток а-ля headless, WebRTC выдает внутреннюю подсеть, Wi-Fi вокруг «нулевой». Решение: комбинированный скоринг + выборочный GPS-челлендж.
- VDI-колл-центр: город «Москва», но Canvas однотипный для сотен сессий, а видеодрайвер «виртуальный». Решение: профиль VDI-сигнатур + лимиты на рисковые операции.
- Эмулятор-абьюз: Play Integrity не проходит, сенсоры пустые, батарея статична. Решение: отключение бонусов/выплат до прохождения доппроверки.
Пошаговый план внедрения
Стратегия «не всё сразу, а слоями» обычно побеждает.
- Быстрые фильтры: датацентр-IP, явный VPN/прокси, конфликт языка и таймзоны.
- Фингерпринт браузера и JA3 сверка с User-Agent.
- Гео-сверка: IP против GPS/Wi-Fi; скоростные аномалии.
- Мобильная аттестация: Play Integrity / App Attest; базовые анти-эмуляторные проверки.
- Граф устройств/аккаунтов: общие IP, куки/токены, железо, поведение.
- Челленджи по риску: селективные, с уважением к UX.
Таблица: сигнал, риск, как обойти и как защититься
Сигнал | Что говорит | Как пытаются обойти | Как снизить ложные срабатывания |
---|---|---|---|
ASN датацентра | VPN/прокси | Мобильные прокси | Комбинировать с JA3 и WebRTC |
JA3 не совпадает с UA | Подмена клиента | Тонкая настройка антидетекта | Порог по совокупности признаков |
GPS vs IP конфликт | Подмена локации | Мок-локейшн | Wi-Fi-треангуляция и скорость перемещения |
Пустые сенсоры | Эмулятор | Инъекции случайного шума | Анализ динамики и App Attest/Integrity |
Видеодрайвер виртуальный | VDI/VM | Смена агента | Сигнатуры VDI + Canvas/WebGL профиль |
WebRTC ICE выдаёт «левый» интерфейс | Прокси/туннель | Отключение WebRTC | Graceful-degradation: больше веса другим сигналам |
Приватность и право: где границы
Даже лучшая антифрод-система рассыпается без корректной работы с персональными данными. Разрешения на геолокацию — только по делу и с понятным объяснением. BSSID и другие идентификаторы храните в хэшированном виде и с ограниченным сроком. Ознакомьтесь с требованиями GDPR и быстро отвечайте на запросы пользователей по данным.
Метрики успеха: не «ловим всех», а «окупаем инвестиции»
Считать надо не банально «сколько поймали», а какой вред не допустили и какой ценой. Смотрите на удержание, ложные отказы, долю «честного» трафика, прошедшего без трения. И да, любой новый эвристике — A/B-тест, иначе легко «поймать» лишнего.
Инструменты и ссылки, с которых удобно стартовать
- MaxMind GeoIP2 и IPinfo для IP-интеллидженса.
- IP2Proxy для классификации VPN/прокси.
- Google Play Integrity API , Apple DeviceCheck и App Attest для аттестации устройств.
- JA3 как отправная точка по TLS-отпечаткам.
- Документация WebRTC для анализа ICE-кандидатов.
- Mozilla Location Service для Wi-Fi-треангуляции.
- Fingerprint и FingerprintJS по отпечатку браузера.
Итог
Подмена локации, VPN/прокси, эмуляторы и VDI — это не «магия», а набор плохо согласованных сигналов. Если слушать сеть, устройство и поведение одновременно, картина складывается быстро. Делайте ставку на многослойность: IP-уровень, GPS/Wi-Fi-треангуляция, отпечаток устройства и аттестация. Добавьте внятные челленджи по риску и уважение к приватности — и геофрод превращается из головной боли в управляемую метрику.