CashoutGuard

Эмуляторы и фермы телефонов в приложениях для заработка: как их ловить, не блокируя реальных пользователей

Один компьютер с десятью Android-эмуляторами может выглядеть как десять телефонов в десяти разных домах. Фермы телефонов идут дальше и ставят стойки с реальными устройствами. В этом руководстве разбираем, как работает и то и другое, какие аппаратные улики им не спрятать и как честно на них реагировать.

Коротко

Эмуляторы и фермы телефонов ловят, сверяя то, что сообщает железо, с тем, за что себя выдаёт устройство: модель телефона в паре с GPU, с которым она никогда не выпускается, стандартные профили эмуляторов, программные GPU и сброшенные устройства, которые появляются снова. Блокируйте явные профили эмуляторов при клике по офферу, единичное несовпадение отправляйте на проверку, а решение принимайте по всему связанному кластеру.

Самый явный признак
Невозможная пара модели и GPU, например Pixel 8, который сообщает о GPU Adreno.
Что выдаёт эмулятор
Стандартные модели эмуляторов, очень старые сборки Android со свежим Chrome, программные GPU, экран размером с десктопный у модели телефона.
Фермы телефонов
Повторно используют одно и то же железо, чистят хранилище, закупают дешёвые модели только для китайского рынка и выполняют одни и те же офферы в одном и том же порядке.
Чего избегать
Банов целых брендов и блокировки из-за одного несовпадения модели.

Почему эмуляторы и фермы охотятся на приложения для заработка

Мобильные офферы хорошо платят. Установи игру, дойди до 20-го уровня, получи несколько долларов. Рекламодатели платят столько, потому что рассчитывают на реального игрока с реальным телефоном. Ферма подделывает игрока и забирает выплату себе.

Основных схем две. Первая — эмулятор: программы вроде LDPlayer, Nox, MEmu, BlueStacks или Genymotion, которые запускают Android на ПК. Один мощный компьютер тянет сразу много эмуляторов. Вторая — ферма телефонов: полки с дешёвыми реальными телефонами, которые часто сбрасывают между аккаунтами, а иногда управляют ими скриптами.

Цель у обеих одна. Много аккаунтов, каждый выглядит как отдельный человек на отдельном устройстве, и каждый выполняет одни и те же дорогие офферы. Сеть отменяет конверсии через несколько недель, и часто к этому моменту вы уже выплатили деньги.

За что устройство себя выдаёт и что сообщает на самом деле

Любой браузер или webview сообщает, что он собой представляет. User agent и client hints дают название модели, например Pixel 8 или SM-S918U. Это заявление легко изменить: софт для ферм меняет названия моделей в один клик.

Железо подделать сложнее. Через WebGL устройство сообщает свой графический чип (GPU). Реальные телефоны выпускаются с известным GPU. В Pixel 8 стоит GPU Mali. Американские Samsung Galaxy серии S работают на чипе Snapdragon с GPU Adreno. Если заявленная модель и GPU не совпадают, значит, устройство выдаёт себя не за то, чем является.

Заявленная модельGPU, который сообщает устройствоВердикт
Pixel 8Mali-G715Сходится: настоящий Pixel 8 выпускается с GPU этого семейства
Pixel 8Adreno 740Подделка: Pixel 8 никогда не выпускается с Adreno
Pixel 5Mali-G76Подделка: Pixel 5 выпускается с Adreno
SM-S918U (американский Galaxy)Mali-G710Подделка: американские модели работают на Snapdragon и Adreno
iPhoneAdreno или MaliПодделка: iPhone сообщает о GPU Apple
Android-телефонGPU AppleПодделка: часто под ним скрывается iPhone или Mac

Стандартные профили эмуляторов

Эмулятору нужно выдавать себя за какую-то модель телефона. Большинство пользователей не меняют настройку по умолчанию, а стандартные профили хорошо известны. Несколько популярных эмуляторов представляются моделями Samsung для корейского рынка (суффикс N, например SM-G977N) или старыми моделями Asus и vivo. Образы для разработчиков сообщают имена вроде sdk_gphone или vbox86.

Ещё одна улика — сборка Android. Эмуляторы часто работают на старых версиях Android, например 5.1 или 7.1, с номером сборки, который встречается только в образе эмулятора. Добавьте к этому современную версию Chrome, и получится сочетание, которого у реальных телефонов почти не бывает.

  • Корейская модель Samsung с американского или европейского IP. У путешественника такое возможно, у эмулятора — обычное дело.
  • Очень старая сборка Android и свежий Chrome. Настолько старые реальные телефоны редко получают новые сборки Chrome.
  • Программный GPU, например SwiftShader или llvmpipe. Телефон без настоящего графического чипа — это виртуальная машина.
  • Экран размером с десктопный у модели телефона, или телефон, который сообщает, что у него есть мышь, но нет сенсорного экрана.

Модели только для китайского рынка за пределами Китая

Некоторые телефоны продаются только в материковом Китае. Например, модели OPPO и OnePlus с кодами вроде PJx, модели Xiaomi с окончанием на C, vivo — на A, а также Huawei и Honor с окончаниями -AN00 или -AL00. Такие модели дёшево закупать оптом, и на фермах телефонов они встречаются часто.

Модель только для китайского рынка, которая подключается из США, — ещё не доказательство фрода. Люди путешествуют и привозят телефоны из-за границы. Но когда много аккаунтов на вашем сайте сообщают такие модели с американских, британских или канадских IP, это сильный признак того, что трафик идёт с фермы, а IP — от прокси.

Сброс устройств и очистка хранилища

Фермы знают, что сайты сохраняют ID устройства. Поэтому перед каждым новым аккаунтом они стирают данные приложения, чистят браузер или сбрасывают телефон. Появляется новый ID, и сайт думает, что перед ним новое устройство.

Сброс удаляет сохранённый ID, но не железо. GPU, размер экрана, сборка Android и установленные шрифты каждый раз остаются прежними. Если хранилище устройства пустое, а железо совпадает с устройством, которое вы видели час назад, его почти наверняка сбросили.

  • Пустое хранилище, знакомое железо. Отметьте такое устройство и свяжите его с прежним.
  • Много аккаунтов на один аппаратный профиль за короткое время, и у каждого новый ID.
  • Одинаковый порядок офферов у этих аккаунтов — признак одного скрипта или одного исполнителя.

Как действовать, не блокируя реальных пользователей

Сигналы устройства сильные, но не идеальные. Отпечаток браузера можно подделать, а дешёвые телефоны иногда сообщают странные значения. Справедливая политика использует эти сигналы, чтобы притормозить деньги, а не чтобы наказывать по одной улике.

  1. Блокируйте при клике по офферу только явные профили эмуляторов и программные GPU. Реальных игроков с реальными телефонами это не затронет.
  2. При единичном несовпадении модели — проверка, а не блокировка. Отправьте вывод в очередь вместе с доказательствами.
  3. Решайте по кластеру. Если у десяти аккаунтов один и тот же поддельный профиль, принимайте решение по всем десяти сразу.
  4. Ведите allowlist. Тестировщики, сотрудники и проверенные пользователи с необычным железом не должны попадать под флаг каждую неделю.
  5. Сначала измерьте. Запустите проверки без блокировки на несколько дней и посмотрите, сколько выводов они бы затронули.

Как CashoutGuard это автоматизирует

JavaScript-сборщик CashoutGuard считывает модель, GPU, экран и сборку. Ваш сервер вызывает /v1/evaluate при регистрации, клике по офферу, конверсии и выводе и получает оценку от 0 до 100 вместе с причинами.

  • device_spoofed — когда заявленная модель и GPU не могут принадлежать одному и тому же телефону.
  • emulator_profile — для стандартных моделей эмуляторов и сборок Android, которые бывают только у эмуляторов.
  • emulator_or_vm и automation_detected — для виртуальных машин и браузеров под управлением скриптов.
  • device_market_mismatch — для моделей только для китайского рынка за пределами Китая.
  • storage_cleared_reappeared и device_shared_with_accounts — для сброшенных устройств и общего железа.

Раздел «Фрод-кольца» связывает аккаунты по устройству, адресу выплат, email и IP, поэтому ферма видна как один кластер. Новые сайты стартуют в теневом режиме, так что вы видите результаты до того, как что-либо будет заблокировано. Читайте документацию или сравните тарифы на странице цен.

Нативные Android-приложения: проверки, которые браузеру недоступны

Приложение для заработка под Android видит больше, чем веб-страница. Android SDK CashoutGuard работает внутри вашего приложения и проверяет сам телефон: свойства и файлы эмулятора, рутованную систему, фреймворки для хуков вроде Frida и Xposed, которые подменяют то, что читает приложение, отладчик, приложения для подмены геолокации и VPN, запущенный на устройстве, даже когда IP выглядит резидентным.

Кроме того, SDK присваивает каждому телефону ID, который переживает удаление и переустановку приложения. Он вычисляется из Android ID с солью из вашего ключа, поэтому для кого-либо ещё он бесполезен. Фермер, который сбрасывает приложение, чтобы завести новый аккаунт, снова определяется как то же самое устройство, и новый аккаунт связывается со старыми.

ПроверкаКод причиныПочему это важно для приложения заработка
Свойства, файлы и железо эмулятораemulator_or_vmФермы эмуляторов круглосуточно гоняют платные установки и playtime-офферы
Рутованный телефонdevice_rootedRoot позволяет приложению подделать ID устройства и геолокацию; сам по себе сигнал слабый, вместе с другими признаками — сильный
Frida, Xposed или Substrate в приложенииautomation_detectedХуки переписывают то, что видит ваше приложение, включая все остальные проверки
VPN, запущенный на телефонеip_vpnОткрывает офферы для более богатых стран, даже когда выходной IP выглядит резидентным
Тот же телефон после переустановкиdevice_shared_with_accountsОдин человек, много аккаунтов и по одной выплате за раз

Интеграция — это один вызов перед каждой выплатой: приложение получает request_id при регистрации, клике по офферу и выводе, а ваш сервер запрашивает /v1/evaluate. Код на Kotlin — в руководстве по интеграциям.

Частые вопросы

Можно ли просто заблокировать все Android-эмуляторы?

Для офферов и выводов — да, если детекция основана на явных профилях эмуляторов или программных GPU. Мало кто из реальных пользователей приложений для заработка выполняет платные офферы внутри эмулятора.

Что, если телефон реального пользователя выглядит подделанным?

Именно поэтому единичное несовпадение должно отправлять вывод на проверку, а не блокировать его. Посмотрите на аккаунт целиком: другие устройства, адрес выплат, скорость выполнения офферов и историю.

Можно ли обнаружить фермы с реальными телефонами?

Сложнее, чем эмуляторы, но можно. Фермы повторно используют железо, чистят хранилище, закупают дешёвые модели только для китайского рынка и выполняют одни и те же офферы в одном и том же порядке. Если связывать аккаунты по устройству и адресу выплат, ферма складывается в единый кластер.

Модель только для китайского рынка за пределами Китая — это фрод?

Нет. Это значит, что телефон привезён из-за границы или пользователь путешествует. Значимым этот признак становится, когда он появляется вместе с прокси, общими устройствами или множеством похожих аккаунтов.

Читайте также