Что такое BlackMoney
BlackMoney TDS (Traffic Distribution System) это платформа фильтрации и распределения трафика для performance-маркетологов, media buyers и команд, работающих с платным трафиком. Система анализирует каждый входящий визит и принимает решение: направить посетителя на целевую страницу (Offer) или показать безопасную страницу (White).
BlackMoney анализирует каждого посетителя по нескольким параметрам:
- User-Agent сигнатуры (45+ паттернов ботов, краулеров, модераторов)
- IP-репутация (datacenter, VPN, Tor, residential)
- Лимиты визитов по IP (частота и окно)
- Гео-фильтрация по странам
- Анализ referrer (пустой referrer в strict/moderation режимах)
- Фильтрация по устройствам и ОС
Если посетитель признан релевантным, он направляется на целевую (offer) страницу. Если посетитель не соответствует правилам кампании, BlackMoney показывает безопасную (white) страницу.
Как работает BlackMoney
BlackMoney работает как точка входа для всего входящего трафика. Каждый визит анализируется до того, как пользователь увидит какой-либо контент.
Поток обработки трафика
- Пользователь кликает по рекламе или ссылке
- Запрос попадает в
index.phpили другой интеграционный скрипт - Скрипт отправляет данные визита на API BlackMoney (
/api/v1/check) - BlackMoney проверяет User-Agent, IP, geo, referrer, лимиты
- На основе вердикта (
passилиblock) скрипт перенаправляет посетителя:- pass → посетитель видит Offer Page
- block → посетитель видит White Page
Система оценки
BlackMoney не полагается на один сигнал. Оценка посетителя включает несколько слоёв проверок, глубина которых зависит от выбранного режима cloaking:
- Сигнатурный анализ User-Agent (45+ паттернов ботов в базе)
- IP-лимиты (количество визитов за окно времени)
- Гео-фильтрация (белый список стран)
- Анализ referrer (пустой referrer = подозрительно)
- Фильтры инфраструктуры (VPN, Tor, Datacenter, Abusers)
- Фильтры устройств и операционных систем
White Page и Offer Page
Целевая страница (Offer) это основной контент, предназначенный для релевантных посетителей.
White Page это безопасная версия страницы, которая показывается:
- Ботам и краулерам
- Модераторам рекламных сетей
- Автоматизированному и нечеловеческому трафику
- Посетителям из нецелевых гео
- IP-адресам, превысившим лимит визитов
- Трафику через VPN, Tor или прокси (если фильтры включены)
Что нужно перед началом
White Page и Offer Page
BlackMoney работает с двумя типами страниц:
- White Page безопасная страница, показываемая автоматизированному, нечеловеческому или несоответствующему трафику
- Offer Page основной контент, предназначенный для реальных пользователей
Обе страницы могут быть:
- Локальными файлами на вашем сервере (например:
/white/index.html) - Внешними сайтами или URL
index.php. Это снижает количество редиректов, помогает избежать проблем с кэшем и улучшает общую стабильность.Хостинг или VPS
Подойдёт любой хостинг или VPS, если он:
- Поддерживает PHP 5.6+ (рекомендуется 8.1+)
- Разрешает POST-запросы
- Не блокирует исходящие HTTP(S)-соединения
- Не применяет агрессивное серверное кэширование к
index.php
Домен и SSL
- Нужен домен, направленный на ваш сервер
- Нужен SSL-сертификат (HTTPS)
- Использование CDN (например Cloudflare) допустимо, если
index.phpне кэшируется, пользовательские заголовки сохраняются, а POST-запросы не блокируются
Системные требования
| Требование | Минимум | Рекомендуется |
|---|---|---|
| Версия PHP | 5.6+ | 8.1+ |
| HTTPS | Обязательно | Обязательно |
| Расширения | curl, json, openssl, mbstring | То же + стандартные core-расширения |
| Функции | curl_*, json_*, file_get_contents, http_build_query | Все перечисленные включены |
| Исходящий HTTP(S) | Должен быть включён | Фаервол/WAF не блокирует исходящие запросы |
| POST-запросы | Должны быть разрешены | WAF/CDN не блокируют POST |
| Пользовательские заголовки | Обязательно (X-Key header) | Прокси/WAF не удаляют заголовки |
| Отсутствие кэша | Для index.php | Нет page-/proxy-cache |
6 шагов к запуску
Шаг 1: Регистрация
Создайте аккаунт в BlackMoney. После регистрации вы получите:
- API-ключ (формат:
BM-XXXXXXXXXXXXXXXX) - Доступ к панели управления
- 1 кампания на бесплатном плане
Шаг 2: Создание кампании
Каждая кампания представляет собой отдельный поток трафика (домен + страницы + логика фильтрации). Укажите название, домен, источник трафика, URLs страниц и параметры фильтрации.
Шаг 3: Выбор режима cloaking
Выберите режим в зависимости от источника трафика и уровня риска. Подробнее в разделе Настройки Кампании.
Шаг 4: Настройка страниц
Укажите URL для White Page и Offer Page. Рекомендуется размещать White Page локально.
Шаг 5: Интеграция
Откройте вкладку Integration в кампании, скачайте index.php и загрузите в корень вашего домена.
index.php.Шаг 6: Самотест
Перед запуском трафика выполните проверку:
- Откройте домен в обычном браузере → должна загрузиться Offer Page
- Используйте VPN / proxy → должна загрузиться White Page
- Проверьте аналитику в панели на корректную маршрутизацию
Общие
Название
Понятное человеку название вашей кампании внутри панели BlackMoney. Можно использовать любые символы. Это название видите только вы.
Домен
Домен, на котором вы установили index.php и на который планируете направлять трафик. HTTPS настоятельно рекомендуется.
Источник (Source)
Короткая метка для организации и отслеживания источников трафика внутри кампании.
Facebook, GoogleAds, TikTok, Push, NativeСтраницы
White Page
Страница, которая показывается автоматизированному, нечеловеческому или несоответствующему трафику. Можно использовать как полный URL, так и локальный путь к файлу.
https://white-page.com / white-page.html / pages/white-page.phpOffer Page
Ваши целевые landing pages. Показываются только валидированным посетителям.
https://offer-page.com / offer-page.html / pages/offer-page.phpМетод редиректа
| Метод | Описание |
|---|---|
302 | Стандартный HTTP 302 редирект. Браузер переводит пользователя на целевой URL. Самый простой и надёжный вариант. |
JS | Редирект через JavaScript (window.location). Позволяет динамически собирать URL. Сложнее обнаружить в статическом анализе. |
Режимы cloaking
Режимы cloaking определяют, как BlackMoney анализирует посетителей и решает, показывать White Page или Offer Page. Каждый режим представляет разный уровень фильтрации.
Basic
Режим Basic это лёгкий режим фильтрации с базовой защитой трафика. Он блокирует распространённых ботов, краулеров, абузный трафик, подозрительные клики, fraud-трафик и высокочастотные шаблоны запросов.
Что блокирует:
- Автоматизированных краулеров и сканирующий трафик
- Базовых ботов и автоматизированные скрипты
- Click-fraud трафик и аномальные шаблоны обновлений страниц
- Трафик периода ревью, определяемый по IP и сетевым сигналам
- Повторяющихся подозрительных посетителей и простые abuse-паттерны
- Высокочастотные запросы в стиле DDoS
- Инструменты мониторинга и повторяющийся анализирующий трафик
Smart
Режим Smart это интеллектуальный режим фильтрации с адаптивным анализом трафика. Он оценивает несколько сигналов и паттернов трафика, чтобы точнее определять и фильтровать нежелательный трафик, сохраняя при этом реальных пользователей.
Что блокирует:
- Продвинутых ботов и интеллектуальных краулеров
- Эмуляторы, виртуальные машины и нестандартные окружения
- Трафик периода ревью, определяемый по продвинутым сигналам
- Автоматизированные системы сканирования и мониторинга
- Инструменты автоматизации и click-manipulation трафик
- Поведенческие аномалии по сравнению с нормальными пользовательскими паттернами
- Весь трафик, блокируемый режимом Basic
Strict
Режим Strict это самый агрессивный уровень фильтрации с максимальной строгостью. Он предназначен для high-risk трафика и продвинутых сценариев, применяя более глубокий анализ для минимизации нежелательных и подозрительных визитов.
Что блокирует:
- Весь трафик, блокируемый режимами Basic и Smart
- High-stealth нестандартные окружения
- Продвинутые proxy- и анонимные окружения
- Крупномасштабные fraud-системы и автоматизированные источники трафика
- Sandboxed и instrumented окружения
- High-risk сканирующий и анализирующий трафик
- Посетителей с пустым referrer (прямые заходы)
Moderation
Режим Moderation это временный режим, предназначенный для чувствительных фаз кампании. Он снижает показ target pages в периоды валидации перед переключением на стандартный режим фильтрации.
Что блокирует:
- Автоматизированный ревью- и валидационный трафик
- Сканирующую и анализирующую активность на ранних этапах кампании
- Нестандартные окружения и неконсистентные паттерны трафика
- VPN- или proxy-трафик в периоды валидации
- Автоматизированные инструменты и scripted visits
- Трафик, похожий на раннее инспектирование или валидационное поведение
Для чего не предназначен:
- Не подходит для долгой работы с live-трафиком
- Не предназначен как постоянный production-режим
- После завершения валидации переключайтесь на Basic, Smart или Strict
Off
Режим Off полностью отключает cloaking. Весь трафик направляется на White Page. Рекомендуется для:
- Сбора аналитики без перенаправления на офферы
- Безопасной проверки рендера страниц
- Временной паузы cloaking без удаления кампании
Таргетинг-фильтры
Таргетинг-фильтры позволяют управлять тем, какие посетители смогут видеть Offer Page, на основе их технических характеристик.
Каждый фильтр поддерживает два режима:
- Allow только выбранные значения разрешены, все остальное блокируется
- Exclude выбранные значения блокируются, все остальное разрешено
Если посетитель не соответствует заданным правилам, он автоматически перенаправляется на White Page.
Страны
Выберите, какие страны должны быть разрешены или исключены. Полезно для GEO-специфичных кампаний. Указывайте ISO-коды через запятую: US,GB,DE,FR
Устройства
Фильтруйте посетителей по типу устройства: mobile, desktop или all.
OS
Выберите, какие операционные системы должны быть разрешены или заблокированы. Полезно, если кампания рассчитана только на определённые платформы, например только iOS.
Доступные значения: all, windows, macos, android, ios
Пустой Referer
Простой переключатель, связанный с фильтрацией referer. Блокирует или разрешает посетителей без referrer вообще. Полезно для остановки прямого трафика, ботов или визитов со скрытым referrer.
Фильтры трафика
Фильтры трафика позволяют блокировать или разрешать посетителей на основе типа их сети. Каждый фильтр это простой переключатель, который включает защиту от определённых сетевых категорий, часто связанных с автоматизированным, нечеловеческим, ограниченным или privacy-ориентированным трафиком.
Abuser
Блокирует IP-адреса с историей подозрительной или вредоносной активности. Этот фильтр выявляет посетителей, связанных с известными шаблонами злоупотреблений, включая фрод, скрапинг, автоматизированные атаки и подозрительное поведение. Помогает предотвращать повторный вредоносный трафик.
VPN
Блокирует трафик, приходящий через VPN-сервисы.
Tor
Блокирует посетителей, использующих сеть анонимности Tor.
Datacenter / Hosting
Блокирует IP-адреса, принадлежащие дата-центрам, хостинг-провайдерам и облачным платформам (Hetzner, OVH, DigitalOcean, AWS, GCP и т.д.).
Лимит посещений оффера
Лимит посещений оффера позволяет контролировать, сколько раз один посетитель может открыть Offer Page за выбранный период времени. Если посетитель превышает допустимое количество визитов, BlackMoney перестаёт отправлять его на Offer и вместо этого перенаправляет на White Page.
Как это работает:
- Max Visit максимальное количество разрешённых посещений Offer Page для одного уникального посетителя
- Duration как долго действует лимит после первого визита
- Time Unit единица измерения времени для duration:
1h(1 час),1d(1 день),7d(7 дней) - BlackMoney считает визиты по уникальному IP-адресу
Max Visit: 5, Duration: 1, Time Unit: Days
Посетитель может открыть Offer до 5 раз за 24 часа, после чего будет видеть White Page, пока временное окно не сбросится.
Сетевой фильтр
Сетевой фильтр позволяет явно разрешать или блокировать конкретные IP-адреса или целые CIDR-диапазоны.
Whitelist
IP-адреса, добавленные в Whitelist, всегда разрешены и обходят все остальные правила фильтрации.
Blacklist
IP-адреса, добавленные в Blacklist, всегда блокируются, независимо от режима cloaking и других фильтров.
Оба списка поддерживают:
- Одиночные IP (например, 192.168.1.10)
- CIDR-диапазоны (например, 192.168.0.0/16)
- IPv4 и IPv6
Расписание оффера
Расписание оффера позволяет контролировать, когда будет показана Offer Page. Если время посетителя не соответствует заданному расписанию, BlackMoney автоматически отправляет его на White Page.
Как это работает:
- Timezone выберите часовой пояс, в котором должно работать расписание
- Time Range задайте разрешённый интервал времени, например 09:00-18:00
- Days выберите конкретные дни недели, когда оффер активен
- Визиты вне разрешённого часового пояса, временного диапазона или дней автоматически перенаправляются на White Page
PHP-интеграция
BlackMoney использует лёгкий интеграционный скрипт index.php, который передаёт данные о посетителе в вашу кампанию и возвращает правильную White или Target Page на основе результатов фильтрации.
Как установить
- Создайте кампанию в панели BlackMoney
- Откройте вкладку Integration и скачайте файл index.php
- Загрузите index.php в корневую папку вашего домена (например,
/public_html/или/www/) - Направьте источник трафика, рекламу, трекеры или ссылки на ваш домен
- BlackMoney будет обрабатывать каждый визит через этот файл и маршрутизировать пользователей в соответствии с настройками cloaking
Доступный URL
Убедитесь, что файл доступен по адресу:
https://your-domain.com/index.php
Требования
- Минимум PHP 5.6+, рекомендуется PHP 8.1+
- cURL включён
- HTTPS настоятельно рекомендуется
- Без кэширования для index.php
<?php
// BlackMoney TDS Integration
$api = 'https://api.blackmoney.work/api/v1/check';
$key = 'BM-ВАШ_API_КЛЮЧ';
$camp = 'camp_ВАШ_CAMPAIGN_ID';
$data = json_encode([
'ip' => $_SERVER['REMOTE_ADDR'],
'ua' => $_SERVER['HTTP_USER_AGENT'] ?? '',
'ref' => $_SERVER['HTTP_REFERER'] ?? '',
'lang' => $_SERVER['HTTP_ACCEPT_LANGUAGE'] ?? '',
'url' => ($_SERVER['HTTPS']?'https':'http')
.'://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'],
'camp' => $camp,
]);
$ch = curl_init($api);
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $data,
CURLOPT_HTTPHEADER => ['Content-Type: application/json', 'X-Key: '.$key],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 3,
]);
$r = json_decode(curl_exec($ch), true);
curl_close($ch);
header('Location: '.($r['verdict']==='pass'?$r['offer']:$r['white']),true,302);
exit();
Блочная интеграция (PHP)
Блочная интеграция позволяет подключить BlackMoney прямо внутри конкретной PHP-страницы вместо использования его как основной точки входа домена. Это полезно, когда вы хотите защищать только отдельные страницы или потоки, не затрагивая весь сайт.
Как это работает
- Скачайте стандартный интеграционный файл index.php
- Переименуйте его, например, в blackmoney.php
- Подключите его в начало вашей PHP-страницы после тега <?php и до вашей собственной логики
- Этот метод позволяет защищать конкретную PHP-страницу вместо того, чтобы делать BlackMoney точкой входа для всего сайта
Результат выполнения
После выполнения BlackMoney предоставляет глобальный объект результата. Он возвращает allow = true или false, который вы можете использовать в своей PHP-логике для редиректа пользователя, изменения контента или нативной обработки запроса внутри вашего приложения.
<?php
require __DIR__ . '/blackmoney.php';
$result = $_GLOBALS['__BLACKMONEY_RESULT__'] ?? null;
if ($result && $result['allow'] === false) {
header("Location: https://white-page.com", true, 302);
exit();
}
Интеграция с Keitaro (Filter)
BlackMoney также может использоваться как фильтр внутри трекера Keitaro, позволяя применять cloaking-логику прямо на уровне трекера.
Как это работает
- Скачайте файл фильтра blackmoney.php
- Загрузите его в директорию фильтров Keitaro:
/var/www/keitaro/var/filters/blackmoney.php - Создайте и настройте кампанию в BlackMoney
- Откройте вкладку Integration и скопируйте ID вашей кампании
- Вставьте ID кампании в настройки фильтра Keitaro, используя формат
campaign-id-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Nginx интеграция (OpenResty)
Для серверов с OpenResty (nginx + Lua). Самый быстрый вариант: проверка на уровне nginx до обработки запроса.
# BlackMoney TDS nginx integration
location / {
access_by_lua_block {
local http = require("resty.http")
local h = http.new()
local r = h:request_uri(
"https://api.blackmoney.work/api/v1/check", {
method = "POST",
headers = {
["Content-Type"] = "application/json",
["X-Key"] = "BM-ВАШ_API_КЛЮЧ",
},
body = cjson.encode({
ip = ngx.var.remote_addr,
ua = ngx.var.http_user_agent,
ref = ngx.var.http_referer,
camp = "camp_ВАШ_CAMPAIGN_ID",
})
})
local d = cjson.decode(r.body)
return ngx.redirect(
d.verdict=="pass" and d.offer or d.white)
}
}
JS интеграция (клиентская)
Для случаев, когда серверная интеграция невозможна. Работает на стороне браузера.
<!-- BlackMoney TDS JS integration -->
<script>
(async()=>{
const r=await fetch('https://api.blackmoney.work/api/v1/check',{
method:'POST',
headers:{'Content-Type':'application/json','X-Key':'BM-ВАШ_API_КЛЮЧ'},
body:JSON.stringify({
camp:'camp_ВАШ_CAMPAIGN_ID',
url:location.href,
ref:document.referrer
})
});
const d=await r.json();
if(d.verdict==='pass'&&d.offer)location.replace(d.offer);
})();
</script>
Уникальная обфускация
Каждый скачанный через панель скрипт уникален:
- Случайные имена переменных для каждого скачивания
- Инъекция мёртвого кода (dead code injection)
- Ваш API-ключ и Campaign ID уже вшиты в скрипт
- Уникальный хеш-комментарий для трассировки
Postback (отслеживание конверсий)
Postback позволяет BlackMoney получать события конверсии от вашего оффера или affiliate network. Каждый клик, обработанный через BlackMoney, получает уникальный CLICK_ID. Этот ID автоматически добавляется в ваш Offer URL, если это не отключено в настройках.
Как это работает
- Посетитель кликает по вашей рекламе. BlackMoney присваивает CLICK_ID
- BlackMoney сопоставляет этот ID и атрибутирует конверсию вашей кампании
- Оффер или affiliate network возвращает конверсию и отправляет запрос на ваш postback URL
Postback URL
Используйте следующий формат URL:
https://api.blackmoney.work/api/v1/postback?cid={CLICK_ID}
Использование
- Скопируйте сгенерированный postback URL
- Замените {CLICK_ID} на соответствующий макрос вашей affiliate network, например {clickid}, {sub1} или ##CLICK_ID##
- Вставьте ссылку в настройки postback вашего оффера или affiliate network
Debug
Инструмент Debug помогает быстро проверить, корректно ли работает интеграция index.php на вашем хостинге.
Когда вы нажимаете Debug рядом с index.php во вкладке Integration, BlackMoney отправляет специальный диагностический запрос на ваш сайт, где установлен скрипт. Скрипт выполняет внутренние проверки и возвращает структурированный отчет с системными ошибками и диагностикой страниц.
Что проверяет Debug
PHP-окружение
- Версию PHP и совместимость
- Необходимые расширения и core-функции (cURL, OpenSSL, JSON, setcookie, file functions, http_build_query)
Исходящее соединение с API BlackMoney
- Возможность подключения к хосту API BlackMoney
- Корректный HTTP-статус и валидный JSON-ответ
Кэширование и прокси
- Включено ли кэширование страниц или прокси, которое мешает динамическим ответам
- Поддержка пользовательских заголовков (используются для диагностики)
Cookies
- Возможность устанавливать и читать cookies на вашем домене
White / Offer Pages
- Каждый настроенный White или Offer URL либо локальный файл проверяется на доступность, HTTP-ошибки и проблемы файловой системы
Результат Debug
Если всё прошло успешно, вы увидите сообщение вроде Integration test completed successfully.
В противном случае отчет будет содержать один или несколько кодов ошибок.
Тестовый запрос через curl
curl -X POST https://api.blackmoney.work/api/v1/check \
-H "Content-Type: application/json" \
-H "X-Key: BM-ВАШ_API_КЛЮЧ" \
-d '{"ip":"8.8.8.8","ua":"Mozilla/5.0 (Windows NT 10.0) Chrome/126.0","camp":"camp_ВАШ_ID"}'
Ожидаемый ответ
{
"verdict": "pass",
"offer": "https://your-offer.com",
"white": "https://your-white.com"
}
Тест с бот-UA
curl -X POST https://api.blackmoney.work/api/v1/check \
-H "Content-Type: application/json" \
-H "X-Key: BM-ВАШ_API_КЛЮЧ" \
-d '{"ip":"8.8.8.8","ua":"Googlebot/2.1","camp":"camp_ВАШ_ID"}'
Ожидаемый ответ: "verdict": "block" с reason "bot: googlebot"
Analytics
Раздел Analytics предоставляет полную детализацию эффективности трафика вашей кампании, включая статистику кликов, показатели качества трафика, географическое распределение, анализ платформ, эффективность офферов и подробные логи кликов. Каждый виджет и график помогает понять, откуда приходит ваш трафик, насколько хорошо он работает и насколько эффективно BlackMoney фильтрует нежелательные визиты.
Campaign Summary
Краткая сводка всех ключевых метрик за выбранный диапазон дат, включая общее количество кликов, уникальные клики, соотношение good и bad, конверсии и тренды эффективности.
- Clicks общее количество визитов в кампанию
- Good посетители, успешно прошедшие фильтрацию и попавшие на целевую страницу
- Bad посетители, заблокированные правилами фильтрации (автоматизация, proxy/VPN, несоответствие таргетингу и т.д.)
- Unique уникальные посетители на основе IP-идентификации
- Conversions количество конверсий, полученных через Postback
Traffic Overview
График по времени, показывающий ежедневное количество Good, Bad и Conversions. Помогает визуализировать пики, подозрительную активность и изменения в эффективности за выбранный период.
Traffic Performance
Показывает общую оценку качества трафика вашей кампании.
Traffic Quality Score
Traffic Quality объединяет несколько факторов:
- Соотношение good-трафика
- Соотношение отфильтрованного (bad) трафика
- Conversion rate
- Сигналы уникальности и поведения
Дополнительные индикаторы
BlackMoney также показывает следующие индикаторы:
- Bots процент визитов, помеченных как боты
- Filtered процент визитов, заблокированных правилами (VPN, Proxy, OS или Device filters, targeting filters и т.д.)
- CR общий conversion rate
Traffic By Country
Таблица, показывающая эффективность по странам:
- Clicks общее количество визитов
- Good разрешённый трафик
- Bad заблокированный трафик
- Conv конверсии
- Share процент от общего трафика
Полезно для GEO-оптимизации и выявления fraud-активности, связанной с конкретными GEO.
Traffic By Platform
Показывает распределение трафика по:
- Device Desktop, Mobile, Tablet, Smart TV и т.д.
- OS Windows, MacOS, iOS, Android, Linux и т.д.
Помогает выявлять подозрительные платформы, например слишком большое количество Linux headless-устройств.
Traffic Sources
Показывает, откуда приходит ваш трафик:
- Source домен или referrer
- Clicks все клики
- Good good-клики
- Bad bad-клики
- Share процент от общего трафика
Полезно для определения лучших источников и выявления вредных.
Live Feed
Поток входящих запросов в реальном времени. Каждое событие показывает:
- Время запроса
- IP-адрес посетителя
- Кампания
- Гео (страна)
- Вердикт (PASS / BLOCK)
- Причина блокировки
Clicks
Полная таблица всех записей о посетителях:
- Дата и время
- IP-адрес
- Страна
- Источник
- Платформа (Device, OS)
- Статус (Good или Bad)
- Причина (Bot, VPN, TOR, Proxy и т.д.)
- Страница (White или Offer)
Статусы кликов
- Good посетитель успешно прошёл все фильтры и был перенаправлен на целевую страницу
- Good (Yellow) посетитель потенциально является good, но был перенаправлен на White Page, потому что сейчас активен Moderation Mode. Этот статус появляется только когда Moderation Mode переопределяет обычную cloaking-логику
- Bad посетитель был заблокирован фильтрами (бот, трафик периода ревью, VPN, proxy, несоответствие targeting rules и т.д.) и отправлен на White Page
Этот раздел позволяет изучать отдельные визиты и понимать, почему именно они были разрешены или заблокированы.
Bot Intelligence PRO
Расширенная аналитика по ботам и угрозам. Доступна на планах Pro и Enterprise.
- Known Signatures количество паттернов ботов в базе
- Blocked Today количество заблокированных ботов за сутки
- Accuracy процент заблокированных от общего трафика
- Top Threats самые частые причины блокировки за 24 часа
Тарифы и биллинг
Раздел Тарифы и Биллинг содержит всё, что связано с вашей подпиской BlackMoney: доступные планы, лимиты, способы оплаты и историю платежей. Эта страница позволяет управлять подпиской и повышать тариф при необходимости.
Тарифные планы
Free — $0 / месяц
Базовый доступ для тестирования и знакомства с платформой.
Включает:
- 1 кампания
- 5,000 кликов в месяц
- Режимы cloaking: Off, Basic
- PHP, JS, Nginx интеграции
- API доступ
Pro — $49 / месяц
Полнофункциональный план для профессиональных media buyers.
Включает все из Free, а также:
- 10 кампаний
- 500,000 кликов в месяц
- Все режимы cloaking (Off, Basic, Smart, Strict, Moderation)
- Bot Intelligence (аналитика по ботам)
- Продвинутые фильтры таргетинга
- Гибкие IP-лимиты
- Приоритетная поддержка
Enterprise — $199 / месяц
Топовый уровень для команд и агентств с максимальными объёмами.
Включает все из Pro, а также:
- Неограниченное количество кампаний
- Неограниченный трафик
- Все режимы cloaking
- Bot Intelligence
- Приоритетная обработка данных
- Приоритетная поддержка
- Ранний доступ к новым функциям
| FREE | PRO | ENTERPRISE | |
|---|---|---|---|
| Цена | $0/мес | $49/мес | $199/мес |
| Кампании | 1 | 10 | Без ограничений |
| Клики/мес | 5,000 | 500,000 | Без ограничений |
| Режимы | Off, Basic | Все | Все |
| Bot Intelligence | — | Да | Да |
| API доступ | Да | Да | Да |
| Интеграции | PHP, JS, Nginx | PHP, JS, Nginx | PHP, JS, Nginx |
429. Upgrade на следующий план для увеличения лимитов.Способы оплаты
BlackMoney поддерживает криптовалютные платежи для сохранения анонимности пользователей.
- Банковские карты и традиционные платежные процессоры не используются
- Платежи обрабатываются через встроенный крипто-шлюз
Поддерживаемые монеты
- USDT (TRC20 / BEP20 / ERC20)
- USDC
- BTC
- ETH
История платежей
В этом разделе отображается список предыдущих платежей.
- Сохраняется только базовая нечувствительная информация о транзакции (дата, сумма, монета, статус)
- Адреса кошельков, приватные ключи, хэши транзакций и идентифицирующие данные не сохраняются
- BlackMoney разработан с учетом приватности
Обзор
REST API BlackMoney предоставляет полный программный доступ ко всем функциям платформы. С его помощью вы можете:
- Создавать, обновлять и удалять кампании
- Настраивать режимы клоакинга, фильтры трафика и таргетинг
- Генерировать уникальные интеграционные файлы
- Получать статистику, live feed и данные Bot Intelligence
- Управлять IP-листами, расписаниями и лимитами
- Массовые операции: удаление нескольких кампаний за один запрос
application/json. Все временные метки в формате Unix timestamp (секунды).Аутентификация
BlackMoney использует две схемы аутентификации в зависимости от типа запроса:
JWT Token (управление)
Все запросы к API управления (кампании, статистика, профиль) должны содержать заголовок Authorization с JWT-токеном, полученным при регистрации или логине.
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Токен действителен 30 дней с момента выдачи. После истечения необходимо повторно авторизоваться через /auth/login.
API Key (клоакинг)
Эндпоинт /check, вызываемый интеграционными скриптами, использует API-ключ через заголовок X-Key.
X-Key: BM-A1B2C3D4E5F6789012345678ABCDEF01
API-ключ генерируется автоматически при регистрации и доступен в ответе /me. Формат: BM- + 32 символа hex в верхнем регистре.
Base URL
https://api.blackmoney.work/api/v1
Все эндпоинты ниже указаны относительно base URL. Полный URL запроса: https://api.blackmoney.work/api/v1/campaigns
Auth
Endpoint
POST https://api.blackmoney.work/api/v1/auth/register
Request
# cURL
curl -X POST https://api.blackmoney.work/api/v1/auth/register \
-H "Content-Type: application/json" \
-d '{
"email": "user@example.com",
"password": "securepassword",
"username": "myname"
}'
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
email | string | Да | Email. Уникальный в системе. |
password | string | Да | Пароль. Минимум 6 символов. |
username | string | Нет | Отображаемое имя. По умолчанию: часть email до @. |
Response 200
{
"token": "eyJhbGciOiJIUzI1NiJ9.eyJ1aWQiOjEsImVtYWlsIjoidXNlckBleGFtcGxlLmNvbSJ9...",
"api_key": "BM-447487D0D892AE909EB1487E4951DAA5",
"user_id": 1
}
api_key сразу. Он понадобится для интеграционных скриптов. Токен нужен для всех остальных запросов API.Request
# cURL
curl -X POST https://api.blackmoney.work/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{
"email": "user@example.com",
"password": "securepassword"
}'
Response 200
{
"token": "eyJhbGciOiJIUzI1NiJ9...",
"api_key": "BM-447487D0D892AE909EB1487E4951DAA5",
"user_id": 1
}
Request
# cURL
curl https://api.blackmoney.work/api/v1/me \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
Response 200
{
"id": 1,
"email": "user@example.com",
"username": "user",
"api_key": "BM-447487D0D892AE909EB1487E4951DAA5",
"plan": "pro",
"plan_limits": {
"campaigns": 10,
"clicks_mo": 500000,
"bot_intel": true,
"modes": ["off", "basic", "smart", "strict", "moderation"]
},
"clicks_this_month": 14283,
"created_at": 1722960000
}
Объект кампании
Объект кампании представляет полную конфигурацию: домен, страницы (white/offer), режим клоакинга, фильтры трафика, таргетинг, IP-лимиты и метод редиректа. Ниже приведена полная структура payload, используемая при создании и обновлении кампаний.
Полный справочник payload
{
// === Общие настройки ===
"name": "My Campaign",
"domain": "example.com",
"source": "Facebook",
// === Страницы ===
"white_url": "https://safe-page.com",
"offer_url": "https://offer.com/landing",
// === Клоакинг ===
"cloaking_mode": "smart",
"redirect_method": "302",
// === Таргетинг ===
"countries": "US,GB,DE,FR",
"devices": "all",
"os_filter": "all",
// === Фильтры трафика ===
"block_vpn": 1,
"block_tor": 1,
"block_dc": 1,
"block_abusers": 1,
// === Лимит посещений ===
"max_visits_ip": 5,
"visit_window": "1d"
}
Детальное описание полей
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
name | string | "" | Название кампании. Произвольная строка для идентификации в панели. |
domain | string | "" | Домен, на котором размещена кампания. Используется для группировки и фильтрации. |
source | string | "" | Источник трафика: Facebook, Google, TikTok, и т.д. |
white_url | string | "" | URL безопасной страницы (white page). Показывается ботам и модераторам. |
offer_url | string | "" | URL оффера. Показывается реальным пользователям, прошедшим фильтрацию. |
cloaking_mode | string | "basic" | Режим клоакинга. См. Настройки кампании. |
redirect_method | string | "302" | Метод редиректа на оффер. |
countries | string | "" | ISO-коды стран через запятую. Пустая строка = все страны. |
devices | string | "all" | Фильтр устройств. |
os_filter | string | "all" | Фильтр операционных систем. |
block_vpn | integer | 1 | Блокировать VPN-трафик. 1 = да, 0 = нет. |
block_tor | integer | 1 | Блокировать Tor-трафик. |
block_dc | integer | 1 | Блокировать трафик из дата-центров (хостинги, серверы). |
block_abusers | integer | 1 | Блокировать IP с чрезмерной активностью. |
max_visits_ip | integer | 5 | Максимум визитов с одного IP за временное окно. |
visit_window | string | "1d" | Временное окно для подсчета визитов с IP. |
status | string | "active" | Статус кампании: active или paused. |
Поддерживаемые значения (enums)
| Поле | Допустимые значения | Примечание |
|---|---|---|
cloaking_mode | off basic smart strict moderation | Free: только off, basic. Pro/Enterprise: все режимы. |
redirect_method | 302 js | 302 = HTTP redirect, js = JavaScript redirect |
devices | all desktop mobile | Пустая строка = all |
os_filter | all windows macos android ios linux | Можно указать несколько через запятую: windows,macos |
visit_window | 1h 6h 12h 1d 3d 7d 30d | Период, за который считаются визиты с одного IP |
status | active paused | Приостановленная кампания отвечает white на все запросы |
source | Произвольная строка | Рекомендуемые: Facebook Google TikTok Twitter Taboola Other |
Campaigns CRUD
Request
# cURL
curl https://api.blackmoney.work/api/v1/campaigns \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
Response 200
{
"campaigns": [
{
"camp_id": "camp_5045e36808c1ea8d",
"name": "US Facebook Campaign",
"domain": "example.com",
"source": "Facebook",
"white_url": "https://safe-page.com",
"offer_url": "https://offer.com/landing",
"cloaking_mode": "smart",
"redirect_method": "302",
"countries": "US,GB",
"devices": "all",
"os_filter": "all",
"block_vpn": 1,
"block_tor": 1,
"block_dc": 1,
"block_abusers": 1,
"max_visits_ip": 5,
"visit_window": "1d",
"status": "active",
"clicks_total": 12847,
"clicks_passed": 9421,
"clicks_blocked": 3426,
"conversions": 247,
"created_at": 1722960000
}
]
}
Request
# cURL
curl https://api.blackmoney.work/api/v1/campaigns/camp_5045e36808c1ea8d \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
Response 200
Возвращает полный объект кампании (см. структуру выше).
Request
# cURL
curl -X POST https://api.blackmoney.work/api/v1/campaigns \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "US Facebook Campaign",
"domain": "example.com",
"source": "Facebook",
"white_url": "https://safe-page.com",
"offer_url": "https://offer.com/landing",
"cloaking_mode": "smart",
"redirect_method": "302",
"countries": "US,GB",
"devices": "all",
"block_vpn": 1,
"block_tor": 1,
"block_dc": 1,
"block_abusers": 1,
"max_visits_ip": 5,
"visit_window": "1d"
}'
Response 200
{
"camp_id": "camp_a1b2c3d4e5f6g7h8",
"created": true
}
name, white_url, offer_url. Все остальные поля имеют значения по умолчанию.Request
# cURL
curl -X PUT https://api.blackmoney.work/api/v1/campaigns/camp_5045e36808c1ea8d \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "US Facebook Campaign v2",
"cloaking_mode": "strict",
"countries": "US,GB,CA",
"block_vpn": 1,
"max_visits_ip": 3,
"visit_window": "12h"
}'
Response 200
{
"camp_id": "camp_5045e36808c1ea8d",
"updated": true
}
Request
# cURL
curl -X DELETE https://api.blackmoney.work/api/v1/campaigns/camp_5045e36808c1ea8d \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
Response 200
{
"deleted": true,
"camp_id": "camp_5045e36808c1ea8d"
}
404.Cloaking Check
Это ключевой эндпоинт BlackMoney. Интеграционные скрипты (PHP, Nginx, JS) отправляют данные о посетителе, а API возвращает вердикт: пропустить на оффер или показать white page.
Request
# cURL
curl -X POST https://api.blackmoney.work/api/v1/check \
-H "Content-Type: application/json" \
-H "X-Key: BM-447487D0D892AE909EB1487E4951DAA5" \
-d '{
"ip": "203.0.113.45",
"ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/126.0.0.0 Safari/537.36",
"ref": "https://facebook.com/ads/click?id=123",
"country": "US",
"camp": "camp_5045e36808c1ea8d"
}'
Поля запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
ip | string | Да | IPv4/IPv6 адрес посетителя. Используется для geo-фильтрации, IP-лимитов, VPN/Tor-детекции. |
ua | string | Да | Полный User-Agent. Анализируется для бот-детекции, OS/device фильтрации, headless-browser detection. |
ref | string | Нет | HTTP Referer. В режимах strict/moderation пустой referer = блокировка. |
country | string | Нет | ISO 3166-1 alpha-2 код страны. Если не указан, определяется по IP на стороне сервера. |
camp | string | Да | ID кампании. Формат: camp_ + 16 hex-символов. |
Response: Visitor passed (пропущен на оффер)
{
"verdict": "pass",
"offer": "https://offer.com/landing",
"white": "https://safe-page.com"
}
Response: Visitor blocked (показан white)
{
"verdict": "block",
"offer": "https://offer.com/landing",
"white": "https://safe-page.com",
"reason": "bot: googlebot"
}
Возможные значения reason
| Reason | Описание |
|---|---|
bot: {name} | UA содержит сигнатуру бота из базы (45+ паттернов) |
headless browser | Обнаружен headless Chrome, PhantomJS, Puppeteer, Selenium, Playwright, WebDriver |
geo blocked | Страна посетителя не входит в разрешенный список |
device blocked | Тип устройства не соответствует фильтру (desktop/mobile) |
os blocked | ОС посетителя не входит в разрешенный список |
ip limit | Превышен лимит визитов с одного IP за временное окно |
empty referer | Пустой referer (только в режимах strict и moderation) |
campaign paused | Кампания приостановлена |
clean | Вердикт pass, посетитель чист |
offer и white) всегда возвращаются в ответе. Интеграционный скрипт использует verdict для выбора, куда направить посетителя.Stats
Request
# cURL
curl https://api.blackmoney.work/api/v1/stats \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
Response 200
{
"clicks": 45892,
"passed": 31247,
"blocked": 14645,
"conversions": 1847,
"unique_ips": 28103,
"campaigns": 5
}
| Поле | Описание |
|---|---|
clicks | Общее количество проверок (pass + block) |
passed | Количество пропущенных на оффер |
blocked | Количество заблокированных (показан white) |
conversions | Подтвержденные конверсии (через postback) |
unique_ips | Уникальные IP-адреса за весь период |
campaigns | Количество активных кампаний |
Live Feed
Request
# cURL
curl "https://api.blackmoney.work/api/v1/feed?limit=50" \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
Query-параметры
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
limit | integer | 50 | Количество событий. Максимум: 200. |
Response 200
{
"events": [
{
"id": 48291,
"camp_id": "camp_5045e36808c1ea8d",
"ip": "203.0.113.45",
"ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/126.0",
"referer": "https://facebook.com",
"country": "US",
"verdict": "pass",
"reason": "clean",
"ts": 1722960847
},
{
"id": 48290,
"camp_id": "camp_5045e36808c1ea8d",
"ip": "66.249.73.12",
"ua": "Googlebot/2.1 (+http://www.google.com/bot.html)",
"referer": "",
"country": "US",
"verdict": "block",
"reason": "bot: googlebot",
"ts": 1722960842
}
]
}
Bot Intelligence PRO
Request
# cURL
curl https://api.blackmoney.work/api/v1/botintel \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
Response 200
{
"total_signatures": 48,
"blocked_today": 2847,
"accuracy": 93.2,
"top_threats": [
{"reason": "bot: googlebot", "cnt": 847},
{"reason": "headless browser", "cnt": 623},
{"reason": "bot: facebookexternalhit", "cnt": 412},
{"reason": "bot: semrushbot", "cnt": 189},
{"reason": "bot: ahrefsbot", "cnt": 142}
]
}
| Поле | Описание |
|---|---|
total_signatures | Количество паттернов в базе бот-сигнатур |
blocked_today | Ботов заблокировано за сегодня |
accuracy | Точность детекции в процентах |
top_threats | Топ угроз с количеством срабатываний |
403.Code Generation
Request
# cURL — получить PHP-скрипт
curl "https://api.blackmoney.work/api/v1/code/camp_5045e36808c1ea8d?fmt=php" \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
# Nginx конфигурация
curl "https://api.blackmoney.work/api/v1/code/camp_5045e36808c1ea8d?fmt=nginx" \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
# JavaScript
curl "https://api.blackmoney.work/api/v1/code/camp_5045e36808c1ea8d?fmt=js" \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
Query-параметры
| Параметр | Тип | По умолчанию | Допустимые значения | Описание |
|---|---|---|---|---|
fmt | string | php | php nginx js | Формат интеграционного скрипта |
Response 200
{
"code": "<?php\n$aX7 = 'BM-447487D0...';\n$qR3 = 'camp_5045e368...';\n...",
"format": "php",
"camp_id": "camp_5045e36808c1ea8d"
}
Различия форматов
| Формат | Где использовать | Метод интеграции |
|---|---|---|
php | Любой PHP-хостинг, WordPress, лендинги | Загрузите файл в корень сайта, подключите через include или замените index.php |
nginx | VPS с Nginx + OpenResty (Lua) | Добавьте конфигурацию в server-блок Nginx |
js | Статические сайты, SPA, конструкторы | Вставьте тег <script> перед </body> |
Template и Metadata
Response 200
{
"template": {
"name": "",
"domain": "",
"source": "",
"white_url": "",
"offer_url": "",
"cloaking_mode": "basic",
"redirect_method": "302",
"countries": "",
"devices": "all",
"os_filter": "all",
"block_vpn": 1,
"block_tor": 1,
"block_dc": 1,
"block_abusers": 1,
"max_visits_ip": 5,
"visit_window": "1d"
}
}
Response 200
{
"cloaking_modes": ["off", "basic", "smart", "strict", "moderation"],
"redirect_methods": ["302", "js"],
"devices": ["all", "desktop", "mobile"],
"os_filters": ["all", "windows", "macos", "android", "ios", "linux"],
"visit_windows": ["1h", "6h", "12h", "1d", "3d", "7d", "30d"],
"sources": ["Facebook", "Google", "TikTok", "Twitter", "Taboola", "Other"]
}
Ошибки
При ошибке API возвращает JSON с полем detail, содержащим описание проблемы.
Формат ошибки
{
"detail": "campaign not found"
}
Коды ошибок
| Код | Значение | Когда возвращается |
|---|---|---|
400 | Bad Request | Невалидный JSON, отсутствуют обязательные поля, некорректные значения enum |
401 | Unauthorized | Отсутствует или невалидный JWT-токен / API-ключ. Истекший токен. |
403 | Forbidden | Аккаунт заблокирован. Попытка использовать режим/функцию, недоступную на текущем плане. Превышен лимит кампаний для плана. |
404 | Not Found | Кампания с указанным camp_id не найдена или принадлежит другому пользователю. |
409 | Conflict | Email уже зарегистрирован (при /auth/register). |
422 | Unprocessable Entity | Данные прошли валидацию формата, но семантически некорректны (пустой offer_url, невалидный URL). |
429 | Too Many Requests | Месячный лимит кликов для плана исчерпан. Upgrade для увеличения. |
500 | Internal Server Error | Внутренняя ошибка сервера. Повторите запрос. При повторении свяжитесь с поддержкой. |
Типичные ошибки и решения
| detail | Причина | Решение |
|---|---|---|
missing Authorization header | Заголовок не передан | Добавьте Authorization: Bearer TOKEN |
token expired | JWT истек (30 дней) | Получите новый через /auth/login |
invalid token | Поврежденный или чужой токен | Проверьте корректность токена |
banned | Аккаунт заблокирован администратором | Свяжитесь с поддержкой |
campaign limit reached | Достигнут лимит кампаний для плана | Удалите неиспользуемые кампании или перейдите на Pro/Enterprise |
mode not available on your plan | Режим клоакинга недоступен на Free | Используйте off или basic, либо upgrade до Pro |
monthly click limit exceeded | Исчерпан месячный лимит кликов | Лимит сбрасывается 1-го числа каждого месяца. Upgrade для увеличения. |
Rate Limits
API использует rate limiting для защиты от злоупотреблений. Лимиты зависят от эндпоинта и плана.
| Эндпоинт | Free | Pro | Enterprise |
|---|---|---|---|
/check | 100 req/min | 1,000 req/min | 10,000 req/min |
/campaigns (CRUD) | 30 req/min | 60 req/min | 120 req/min |
/stats, /feed | 30 req/min | 60 req/min | 120 req/min |
/code/{id} | 10 req/min | 30 req/min | 60 req/min |
/auth/* | 5 req/min (для всех планов) | ||
При превышении rate limit API возвращает 429 Too Many Requests с заголовком Retry-After, указывающим количество секунд до сброса.
HTTP/1.1 429 Too Many Requests
Retry-After: 30
Content-Type: application/json
{"detail": "rate limit exceeded, retry after 30s"}
Примечания
- Все временные метки в формате Unix timestamp (секунды с 1 января 1970 UTC).
- Все строковые значения в UTF-8.
- Максимальный размер тела запроса: 1 MB.
- API использует HTTP/1.1. Поддерживается keep-alive.
- CORS включен для всех origin с
Access-Control-Allow-Origin: *. - Ответы сжимаются gzip при наличии
Accept-Encoding: gzip.
curl, fetch, requests, Guzzle. Интеграционные скрипты (PHP/Nginx/JS) генерируются автоматически через эндпоинт /code и не требуют ручного написания кода.