🇺🇸 EN Открыть дашборд →
📖 Документация

Инструкции по подключению

Выбери свой способ интеграции — пошаговое руководство для каждого

Для любого сайта без сервера
1
Получи API ключ
Зарегистрируйся на outrisker.com → перейди в раздел API ключи → нажми Создать ключ → скопируй ключ вида or_xxxxxxxxxxxx
Ключ показывается один раз — сохрани его сразу
2
Вставь сниппет на сайт
Открой HTML файл своего лендинга. Найди строку </body> в самом конце. Вставь код перед этой строкой:
HTML / JavaScript
<!-- Outrisker Anti-Fraud Protection -->
<script>
(function() {
  var API_KEY = 'or_ВАШ_КЛЮЧ'; // ← вставь свой ключ
  var THRESHOLD = 70;   // порог блокировки (0-100)

  // Получаем click_id из URL
  var uid = new URLSearchParams(location.search)
    .get('click_id') ||
    new URLSearchParams(location.search)
    .get('sub1') || 'anon';

  fetch('https://api.outrisker.com/api/check', {
    method: 'POST',
    headers: {
      'X-API-Key': API_KEY,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({ ip: 'auto', user_id: uid })
  })
  .then(function(r) { return r.json(); })
  .then(function(d) {
    if (d.risk_score >= THRESHOLD) {
      // Скрыть форму:
      var form = document.querySelector('form');
      if (form) form.style.display = 'none';
      // Или редирект: location.href = '/blocked.html';
    }
  })
  .catch(function() {});
})();
</script>
Замени or_ВАШ_КЛЮЧ на свой реальный ключ из дашборда
3
Настрой параметр click_id
Укажи в трекере чтобы он передавал ID клика в URL лендинга:
Параметры по трекерам
Keitaro?click_id={click_id}
Binom?click_id={binom_click_id}
Voluum?click_id={clickid}
Без трекера?sub1=любой_id
4
Проверь что работает
Открой сайт в браузере → DevTools (F12) → Network → найди запрос к api.outrisker.com → в ответе увидишь risk_score
Скор ≥70 = форма скрыта. Скор <70 = пользователь видит страницу как обычно
Интеграция через постбэк URL
1
Получи API ключ в Outrisker
Зайди в outrisker.comAPI ключиСоздать ключ → скопируй ключ
2
Добавь постбэк в Keitaro
В Keitaro: Кампания → Редактировать → Постбэки → Добавить постбэк
Тип: HTTP запрос. URL:
Postback URL
https://api.outrisker.com/api/check
  ?ip={ip}
  &user_id={click_id}
  &api_key=or_ВАШ_КЛЮЧ
Замени or_ВАШ_КЛЮЧ на свой ключ. Макросы {ip} и {click_id} Keitaro подставит автоматически
3
Настрой правило блокировки
Кампания → Потоки → Добавить поток → Правила → Добавить правило:
Настройка правила
ПараметрGET параметр: risk_score
УсловиеБольше или равно
Значение70
ДействиеЗаглушка / 404
4
Или используй PHP скрипт (продвинутый вариант)
Keitaro → Инструменты → Скрипты → Новый скрипт. Тип: PHP:
PHP
<?php
$ip      = $_SERVER['HTTP_X_FORWARDED_FOR']
           ?? $_SERVER['REMOTE_ADDR'];
$api_key = 'or_ВАШ_КЛЮЧ';
$uid     = $_GET['click_id'] ?? 'unknown';

$ch = curl_init('https://api.outrisker.com/api/check');
curl_setopt_array($ch, [
  CURLOPT_POST          => true,
  CURLOPT_POSTFIELDS    => json_encode([
    'ip'      => $ip,
    'user_id' => $uid
  ]),
  CURLOPT_HTTPHEADER    => [
    'X-API-Key: ' . $api_key,
    'Content-Type: application/json'
  ],
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_TIMEOUT       => 1,
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);

if (($result['risk_score'] ?? 0) >= 70) {
    http_response_code(403);
    exit;
}
5
Проверь в дашборде
После первых кликов зайди в Outrisker → Запросы — увидишь все проверенные IP с их скорами и флагами
Готово! Теперь каждый клик проверяется автоматически
Интеграция через PHP на лендинге
1
Получи API ключ в Outrisker
Зайди в outrisker.comAPI ключиСоздать ключ → скопируй ключ
2
Добавь код в начало index.php лендинга
Открой файл лендинга (обычно index.php). Вставь в самое начало, до любого HTML:
PHP — index.php
<?php
// Outrisker — защита от фрода
$ip      = $_SERVER['HTTP_X_FORWARDED_FOR']
           ?? $_SERVER['REMOTE_ADDR'];
$api_key = 'or_ВАШ_КЛЮЧ';
$uid     = $_GET['binom_click_id']
           ?? $_GET['click_id']
           ?? 'unknown';

$response = @file_get_contents(
  'https://api.outrisker.com/api/check',
  false,
  stream_context_create(['http' => [
    'method'  => 'POST',
    'header'  => "X-API-Key: ".$api_key.
                 "\r\nContent-Type: application/json",
    'content' => json_encode([
      'ip'      => $ip,
      'user_id' => $uid
    ]),
    'timeout' => 1,
  ]])
);

$risk = json_decode($response, true);

if (($risk['risk_score'] ?? 0) >= 70) {
    header('Location: /stub.html');
    exit;
}
?>
Замени or_ВАШ_КЛЮЧ и /stub.html на путь своей заглушки
3
Настрой передачу click_id из Binom
В Binom настрой URL лендинга чтобы передавался ID клика:
Binom — URL лендинга
https://твой-лендинг.com/?binom_click_id={binom_click_id}
Полезные макросы Binom
{binom_click_id}ID клика — передавать в user_id
{ip}IP пользователя
{p1}...{p10}Дополнительные параметры
4
Проверь что работает
Зайди на лендинг с тестовым IP через VPN → должен увидеть заглушку. В дашборде появится запрос с высоким скором
Скрипт добавляет задержку менее 1 секунды. Если API не отвечает — лендинг работает как обычно
Универсальная PHP интеграция
1
Получи API ключ
Зайди в outrisker.comAPI ключиСоздать ключ
2
Создай helper функцию
Создай файл outrisker.php и подключай его в нужных местах:
PHP — outrisker.php
<?php
function checkRisk($user_id = 'anon') {
    $api_key = 'or_ВАШ_КЛЮЧ';
    $ip = $_SERVER['HTTP_X_FORWARDED_FOR']
        ?? $_SERVER['REMOTE_ADDR'];

    $ch = curl_init('https://api.outrisker.com/api/check');
    curl_setopt_array($ch, [
        CURLOPT_POST          => true,
        CURLOPT_POSTFIELDS    => json_encode([
            'ip'      => $ip,
            'user_id' => $user_id
        ]),
        CURLOPT_HTTPHEADER    => [
            'X-API-Key: ' . $api_key,
            'Content-Type: application/json'
        ],
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT       => 2,
    ]);
    $result = json_decode(curl_exec($ch), true);
    curl_close($ch);
    return $result;
}

function isHighRisk($user_id = 'anon', $threshold = 70) {
    $result = checkRisk($user_id);
    return ($result['risk_score'] ?? 0) >= $threshold;
}
3
Используй в любом месте
PHP — пример использования
<?php
require_once 'outrisker.php';

$uid = $_GET['click_id'] ?? 'anon';

if (isHighRisk($uid)) {
    header('Location: /stub.html');
    exit;
}

$risk = checkRisk($uid);
echo 'Скор: ' . $risk['risk_score'];
echo 'Страна: ' . $risk['geo']['country'];
echo 'Флаги: ' . implode(', ', $risk['flags']);
Прямая интеграция через API
1
Получи API ключ
Зайди в outrisker.comAPI ключиСоздать ключ
2
Endpoint для проверки IP
Параметры запроса
URLPOST https://api.outrisker.com/api/check
ЗаголовокX-API-Key: or_ВАШ_КЛЮЧ
Content-Typeapplication/json
Тело запроса (JSON)
{
  "ip":         "1.2.3.4",      // IP пользователя
  "user_id":    "click_abc123", // ваш ID (любая строка)
  "user_agent": "Mozilla/5.0..." // необязательно
}
3
Интерпретация ответа
Флаги риска и их значение
hosting_ipIP принадлежит дата-центру или хостингу (+40)
vpn_asnASN принадлежит VPN провайдеру (+30)
blacklist_matchIP найден в базе прокси/VPN (+40)
geo_mismatchРезкая смена страны за короткое время (+30)
ip_rotation5+ разных IP за 10 минут (+20)
bot_useragentUser-Agent похож на бота/скрипт (+10)
Рекомендуемые пороги
0–39Низкий риск — пропускать
40–69Средний риск — логировать, анализировать
70–100Высокий риск — блокировать
Серверная защита для Node.js / Express
1
Получи API ключ
Зарегистрируйся на outrisker.com → раздел API ключи → нажми Создать ключ → скопируй ключ вида or_хххххх
Ключ показывается один раз — сохрани его сразу
2
Создай middleware/outrisker.js
Создай файл middleware/outrisker.js в корне проекта:
Node.js / Express
const API_KEY = 'or_ВАШ_КЛЮЧ';
const THRESHOLD = 70;

module.exports = async function(req, res, next) {
  const ip = req.headers['x-forwarded-for']?.split(',')[0]
    || req.socket.remoteAddress;
  const userId = req.user?.email
    ? `${req.user.email}|${ip}`
    : ip;

  try {
    const r = await fetch('https://api.outrisker.com/api/check', {
      method: 'POST',
      headers: {
        'X-API-Key': API_KEY,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({ ip, user_id: userId }),
      signal: AbortSignal.timeout(1000) // 1 сек таймаут
    });
    const { risk_score } = await r.json();
    if (risk_score >= THRESHOLD) {
      return res.status(403).json({ error: 'Access denied' });
    }
  } catch (e) {
    // API недоступен — пропускаем, сайт работает
  }

  next();
};
Замени or_ВАШ_КЛЮЧ на свой ключ из раздела API ключи
3
Подключи в server.js
Добавь в начало server.js до объявления маршрутов:
server.js
const outrisker = require('./middleware/outrisker');
app.use(outrisker); // до всех маршрутов
4
Перезапусти сервер
Если используешь PM2:
Terminal
pm2 restart your-app
Готово. Пользователи с score ≥ 70 получают 403 и не видят сайт. Реальные пользователи проходят без задержек.
Почему middleware лучше JS сниппета
JS сниппет
⚠ Можно обойти отключив JS
⚠ Проверка на стороне клиента
✓ Не требует сервера
Node.js middleware
✓ Нельзя обойти никак
✓ Проверка до отдачи контента
✓ Логирование по email+IP