Digital Fraud Protection Playground
На данной странице можно:
- Посмотреть на зашифрованный отпечаток своего браузера в формате, в котором его получит ваш сервер
- Увидеть расшифрованные данные и реализацию метода расшифрования
- Изучить структуру отпечатка и показатель "бот/человек"
- Узнать, как интегрировать решение на свой web-ресурс
1. Зашифрованные данные
Данные в браузер приходят в зашифрованом виде:
Инициализация сбора...
2. Расшифрованные данные
После расшифрования данные выглядят следующим образом:
Ключевые метрики:
- user_id: Уникальный идентификатор браузера (Device ID).
- new_user: Отпечаток не совпал ни с одним известным — устройство видим впервые.
- confidence_score: Уверенность в сопоставлении с известным устройством (0.0 – 1.0). Для нового пользователя — 1.0.
- bot_score: Вероятность бота (0.0 – 1.0). < 0.4 - Человек 0.4 - 0.5 - Риск > 0.5 - Бот
- engine: Движок браузера (Blink, Webkit, Gecko).
- tor: Относится ли IP-адрес к подсетям узлов Tor.
- hosting: Относится ли IP-адрес к подсети хостинг-провайдеров.
- bot_hosting: Относится ли IP-адрес к хостинговой подсети, откуда мы зафиксировали подозрительную активность.
- isp_active_subnet: Относится ли IP-адрес к подсети B2C-провайдера, где мы фиксируем активность реальных пользователей.
- incognito: Режим инкогнито/приватный режим.
- vpn: Обнаружение VPN/Proxy.
- rdp: Обнаружение Remote Desktop Protocol.
3. Интеграция
1. Подключите скрипт:
HTML
<script src="https://fp.servicepipe.tech/fp/v1/<YOUR-TOKEN>/fp.js"></script>
2. Инициализация и получение данных:
JavaScript
let fp = new ServicepipeFP("https://fp.servicepipe.tech/fp/", "YOUR-TOKEN"); await fp.initSP(); await fp.run(); let result = await fp.get(); console.log(result);
3. Расшифрование на стороне сервера:
Node.js
async function decryptPayload(input, secretKeyHex) { const hexToBytes = hex => Uint8Array.from(hex.match(/.{1,2}/g).map(b => parseInt(b, 16))); const base64ToBytes = b64 => Uint8Array.from(atob(b64), c => c.charCodeAt(0)); const keyBytes = hexToBytes(secretKeyHex); const key = await crypto.subtle.importKey("raw", keyBytes, "AES-GCM", false, ["decrypt"]); const iv = base64ToBytes(input.iv); const ciphertext = base64ToBytes(input.payload); const tag = base64ToBytes(input.tag); const encrypted = new Uint8Array(ciphertext.length + tag.length); encrypted.set(ciphertext); encrypted.set(tag, ciphertext.length); const decrypted = await crypto.subtle.decrypt({ name: "AES-GCM", iv }, key, encrypted); return JSON.parse(new TextDecoder().decode(decrypted)); }
Важно: Никогда не размещайте свой секретный ключ на frontend! Используйте ключ для расшифрования данных исключительно на стороне сервера.
4. Класс ServicepipeFP
МЕТОДЫ
new ServicepipeFP(apiUrl, token, options?)
Конструктор класса.
apiUrl string
URL API сервера
token string
идентификатор для доступа к API
options object?
дополнительные параметры
prework boolean
запускает долгие методы во время инициализации для повышения производительности
maxRetries number
количество повторных попыток вызова API
fullScan boolean
включить методы сбора данных, выключенные по умолчанию
initSP()
→ Promise<void>
Инициализирует параметры сервера. Выбрасывает ошибку, если связь с сервером не устанавливается или ответ недействителен.
run()
→ Promise<void>
Выполняет сбор данных со всех сборщиков параллельно.
get(options?)
→ Promise<Object>
Собирает данные, генерирует полезную нагрузку и отправляет на сервер. Выбрасывает ошибку при сбое сбора или отправки данных.
options object?
дополнительные параметры
customData string?
дополнительные данные для включения в отпечаток
customID string?
дополнительный клиентский ID