Screen Orientation и Device Motion: как мобильные API работают на десктопе через эмуляцию

BadB

Professional
Messages
2,415
Reaction score
2,363
Points
113
Как антидетект-браузеры имитируют сенсоры — и где они ошибаются

Введение: Иллюзия мобильности​

Вы настраиваете профиль в Dolphin Anty для имитации iPhone. Включаете Device Motion, Screen Orientation, Accelerometer. Сайт показывает: «Датчики активны». Вы уверены: «Теперь я выгляжу как реальный пользователь iPhone».

Но при первом же взаимодействии вас мгновенно блокируют.

Почему?
Потому что эмуляция сенсоров на десктопе — это театр теней. Антидетект-браузеры генерируют статические или шаблонные данные, которые не соответствуют физике реального движения. А фрод-движки (Forter, Sift, Cloudflare) давно научились читать язык тела устройства.

В этой статье мы разберём, как работают Screen Orientation и Device Motion API, как их эмулируют браузеры, и где именно они выдают подделку.

Часть 1: Что такое Screen Orientation и Device Motion API?​

📱 Screen Orientation API​

Позволяет сайту определить:
  • Угол поворота экрана: 0° (портрет), 90° (ландшафт),
  • Тип ориентации: portrait-primary, landscape-secondary.

Пример кода:
js:
Code:
screen.orientation.angle // → 90

🧭 Device Motion API​

Предоставляет данные от трёх сенсоров:
  • Accelerometer: ускорение по осям X, Y, Z (в м/с²),
  • Gyroscope: угловая скорость (в рад/с),
  • Orientation: абсолютный угол поворота (в градусах).

Пример кода:
js:
Code:
window.addEventListener('devicemotion', event => {
  console.log(event.acceleration.x); // → -2.34
});

💡 Ключевой факт:
Эти API доступны только на мобильных устройствах с физическими сенсорами.
На десктопе они всегда возвращают null или эмулированные данные.

Часть 2: Как антидетект-браузеры эмулируют сенсоры​

🔧 Методы эмуляции​

Антидетект-браузеры (Dolphin Anty, Linken Sphere) используют три подхода:

1. Статические значения
  • Устанавливают фиксированные параметры:
    • acceleration.x = 0,
    • orientation.angle = 0°.
  • Проблема: Реальные устройства никогда не статичны — даже в покое есть микровибрации.

2. Шаблонные движения
  • Генерируют «естественные» колебания по синусоиде:
    • acceleration.x = sin(t) * 0.5.
  • Проблема: Реальное движение хаотично, а не периодично.

3. Случайный шум
  • Добавляют рандомные значения в диапазоне:
    • acceleration.x = random(-1.0, 1.0).
  • Проблема: Нарушает физические законы (например, ускорение без причины).

💀 Истина:
Ни один из этих методов не имитирует физику реального мира.

Часть 3: Как фрод-движки раскрывают подделку​

🔍 Анализ через физические законы​

Современные системы проверяют соответствие данных законам Ньютона:

1. Закон инерции
  • Если устройство лежит на столе, ускорение по Z ≈ 9.8 м/с² (сила тяжести),
  • Эмуляторы часто задают Z = 0 → нарушение физики.

2. Корреляция между сенсорами
  • При повороте устройства:
    • Gyroscope показывает угловую скорость,
    • Accelerometer меняет вектор силы тяжести.
  • Эмуляторы не связывают эти данныенесогласованность.

3. Шумовой профиль
  • Реальные сенсоры имеют уникальный шумовой профиль (thermal noise),
  • Эмуляторы используют чистый шумслишком идеально.

📊 Полевые данные (2026):
Профили с эмулированными сенсорами имеют fraud score 90+, даже при идеальном Canvas.

Часть 4: Где именно эмуляторы ошибаются​

❌ Ошибка 1: Отсутствие гравитации​

  • Реальное устройство: acceleration.z = 9.8 (в покое),
  • Эмулятор: acceleration.z = 0 → мгновенный флаг.

❌ Ошибка 2: Нулевая угловая скорость​

  • Реальное устройство: Даже в покое gyroscope показывает микроколебания (±0.01 рад/с),
  • Эмулятор: rotationRate.gamma = 0 → подозрительно.

❌ Ошибка 3: Несогласованность с ориентацией​

  • Если screen.orientation.angle = 90°, то вектор ускорения должен быть повёрнут на 90°,
  • Эмуляторы не пересчитывают вектораномалия.

💀 Пример:
Пользователь «держит» iPhone в ландшафте, но ускорение по-прежнему направлено вниз → невозможно физически.

Часть 5: Как проверить свою уязвимость​

🔍 Шаг 1: Используйте тестовые сайты​


🔍 Шаг 2: Запустите локальный тест​

js:
Code:
// Тест гравитации
window.addEventListener('devicemotion', e => {
  if (e.accelerationIncludingGravity) {
    const z = e.accelerationIncludingGravity.z;
    console.log(`Гравитация по Z: ${z}`);
    // Реальное значение: ~9.8 или ~-9.8
  }
});

💡 Правило:
Если |z| < 8.0 → вас уже выдали.

Часть 6: Как правильно настроить эмуляцию​

🔸 В Dolphin Anty / Linken Sphere​

ПараметрРекомендуемое значениеПочему
Screen Orientationportrait-primaryСамая частая ориентация
AccelerometerВключить + Gravity = 9.8Имитация силы тяжести
GyroscopeВключить + Noise = 0.01Микроколебания в покое
Motion Profile«Natural Handheld»Хаотичные движения

⚠️ Но: Даже с этими настройками, эмуляция остаётся подделкой.

Часть 7: Лучшая стратегия — избегать эмуляции​

✅ Когда использовать сенсоры:​

  • Только если вы имитируете мобильное устройство,
  • Только на сайтах, где мобильная версия обязательна (например, TikTok).

❌ Когда отключать:​

  • На десктопных сайтах (Steam, Razer) — сенсоры не нужны,
  • Если вы используете Windows RDP — эмуляция всё равно будет раскрыта.

💡 Правило:
Чем меньше API вы эмулируете — тем выше доверие системы.

Заключение: Физика не обманешь​

Screen Orientation и Device Motion — это не просто «ещё один API». Это окно в физический мир, где каждое движение подчиняется законам Ньютона.

Антидетект-браузеры пытаются обмануть эти законы — и всегда проигрывают.

💬 Финальная мысль:
Настоящая маскировка — не в имитации, а в отказе от ненужного.
Потому что в мире фрод-движков, даже гравитация может выдать вас.

Оставайтесь минимальными. Оставайтесь физичными.
И помните: в мире fingerprinting’а, законы физики — главный судья.
 
Top