v1.0.4

Digital Fraud Protection Playground

На данной странице можно:

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