Для любого сайта без сервера
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=любой_id4
Проверь что работает
Открой сайт в браузере → DevTools (F12) → Network → найди запрос к
api.outrisker.com → в ответе увидишь risk_score Скор ≥70 = форма скрыта. Скор <70 = пользователь видит страницу как обычно
Интеграция через постбэк URL
1
Получи API ключ в Outrisker
Зайди в outrisker.com → API ключи → Создать ключ → скопируй ключ
2
Добавь постбэк в Keitaro
В Keitaro: Кампания → Редактировать → Постбэки → Добавить постбэк
Тип: HTTP запрос. URL:
Тип: 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Действие
Заглушка / 4044
Или используй 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.com → API ключи → Создать ключ → скопируй ключ
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.com → API ключи → Создать ключ
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.com → API ключи → Создать ключ
2
Endpoint для проверки IP
Параметры запроса
URL
POST https://api.outrisker.com/api/checkЗаголовок
X-API-Key: or_ВАШ_КЛЮЧContent-Type
application/json
Тело запроса (JSON)
{
"ip": "1.2.3.4", // IP пользователя
"user_id": "click_abc123", // ваш ID (любая строка)
"user_agent": "Mozilla/5.0..." // необязательно
}
3
Интерпретация ответа
Флаги риска и их значение
hosting_ip
IP принадлежит дата-центру или хостингу (+40)vpn_asn
ASN принадлежит VPN провайдеру (+30)blacklist_match
IP найден в базе прокси/VPN (+40)geo_mismatch
Резкая смена страны за короткое время (+30)ip_rotation
5+ разных IP за 10 минут (+20)bot_useragent
User-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
✓ Проверка до отдачи контента
✓ Логирование по email+IP