Наши боты
BizWatch мониторит ваш сайт извне: открывает страницы, проверяет сертификаты, эмулирует отправку форм. Если у вас Cloudflare, reCAPTCHA или самописный антифрод — здесь то, что нужно знать, чтобы наши проверки не блокировались и заявки от синтетики не попадали в CRM.
Исходящие IP-адреса
Мы ходим на ваш сайт с этих адресов. Внесите их в allow-list, если у вас включён антибот.
User-Agent
Все наши запросы (и обычные проверки, и синтетика) шлют User-Agent:
Mozilla/5.0 (compatible; BizWatchBot/1.0; +https://bizwatch.ru/bot)
Как отличить нашу тестовую заявку
Синтетика форм заполняет и отправляет ваши формы, чтобы убедиться, что заявка доходит до бэкенда. Чтобы наши тестовые заявки не попадали в CRM, отфильтруйте их на стороне сервера. У нас три маркера, любого из них достаточно.
- HTTP-заголовок
X-BizWatch-Synthetic: 1
Самый надёжный признак — заголовок ставит сам браузер синтетики.
- Тестовый email
test+bizwatch@bizwatch.ru
В синтетике заявки идут с этого email. При желании можно поставить свой в мастере, но по умолчанию — этот.
- Маркер в имени
BizWatch тест
В поле «Имя» / «ФИО» подставляем этот текст. Тоже настраивается в мастере.
Сниппеты для бэкенда
Для разработчика: отдайте эти вставки в обработчик формы, и наши заявки не попадут ни в CRM, ни в почту. Все три проверки эквивалентны.
<?php
// Отбрасываем тестовые заявки от синтетики BizWatch.
if (
($_SERVER['HTTP_X_BIZWATCH_SYNTHETIC'] ?? '') === '1'
|| strpos(($_POST['email'] ?? ''), 'test+bizwatch@') === 0
|| (\$_POST['name'] ?? '') === 'BizWatch тест'
) {
http_response_code(200); // отвечаем как обычно — синтетика ждёт 200
echo json_encode(['ok' => true, 'skipped' => 'bizwatch_synthetic']);
exit;
}
?>app.post('/api/leads', (req, res) => {
const isSynthetic =
req.get('X-BizWatch-Synthetic') === '1'
|| (req.body.email || '').startsWith('test+bizwatch@')
|| req.body.name === 'BizWatch тест';
if (isSynthetic) {
return res.json({ ok: true, skipped: 'bizwatch_synthetic' });
}
// ... ваша обычная логика: запись в CRM, отправка почты ...
});AddEventHandler('form', 'onBeforeResultAdd', function(&$WEB_FORM_ID, &$arFields, &$arrVALUES) {
// arrVALUES[]='ANSWER_TEXT_..' — значения полей.
$skip = false;
foreach ($arrVALUES as $v) {
if (is_string($v) && (strpos($v, 'test+bizwatch@') !== false || $v === 'BizWatch тест')) {
$skip = true; break;
}
}
if ($_SERVER['HTTP_X_BIZWATCH_SYNTHETIC'] === '1') { $skip = true; }
if ($skip) return false; // Битрикс не сохранит запись формы
});