Что такое VPN Detector и как он работает
Работает в России — логика магазина остаётся на вашем сервере; при необходимости можно отключить обращение к внешнему API и опираться на локальные базы GeoLite2 в каталоге плагина.
VPN Detector — плагин для Shop-Script на Webasyst: оценивает подключение посетителя (VPN, прокси, хостинг, подозрительные признаки) по IP, ASN, заголовкам, опционально WebRTC, таймзоне и портам. Если сумма баллов выше порога, показывается своё окно с текстом: можно предложить отключить VPN перед оплатой или просто предупредить гостя не из «своих» стран.
- Что умеет плагин
- Показ модального окна на витрине с настраиваемым заголовком, текстом, кнопками и ссылкой на политику конфиденциальности.
- Выбор зоны проверки: все страницы, только корзина и оформление, только оформление заказа.
- Опционально: логирование проверок в БД, страницы логов и статистики в админке (ссылки в настройках плагина).
- Опционально: гео-блокировка по списку стран с редиректом или текстом.
- Опционально: webhook при срабатывании порога.
- Опционально: блокировка оформления заказа при срабатывании VPN (отдельная настройка).
- CLI без правки корневого
cli.php: обновление справочника для гео и слияние списка ASN (в т.ч. со встроенного JSON, если URL не задан).
- Что вы получаете
- Понятное предупреждение для покупателей с VPN/прокси до оплаты.
- Гибкий порог баллов и отдельные веса признаков (ASN VPN, hosting, заголовки, rDNS, порты, таймзона и др.).
- Кэш проверки IP на заданное число минут, белый список IP для офиса и тестов.
- Списки «своих» стран и дополнительные ASN в настройках.
- Где настраивать — Настройки → Плагины → VPN Detector: основные переключатели и тексты; расширенные поля (баллы, логи, cron ASN, webhook и др.) на той же странице.
Основные сценарии использования
- Предупреждение перед оплатой
- Включили плагин, задали порог и тексты окна.
- Ограничили проверку только корзиной и чекаутом — меньше нагрузка на витрину.
- Гость с высоким скорингом видит окно; может обновить страницу после отключения VPN или временно скрыть окно второй кнопкой (cookie на заданное время).
- Гость не из «своих» стран
- Задаёте коды стран ISO2 (например
RU или RU, BY).
- Включаете предупреждение для IP вне списка — отдельно настраиваемые баллы за «чужую» страну.
- Гео и провайдер
- По умолчанию страна и ASN могут браться из открытого API ipwho.is (один запрос на IP, кэш), плюс заголовки CDN/nginx, если они есть.
- При желании кладёте файлы
GeoLite2-*.mmdb в wa-apps/shop/plugins/vpndetector/data/ — часть данных можно получать локально без внешних запросов.
- Обновление списков по расписанию
- В crontab вызываете стандартный CLI Webasyst:
php /путь/к/сайту/cli.php shop vpndetectorPlugin — обновление вспомогательного JSON для режима гео.
php …/cli.php shop vpndetectorPlugin asn — слияние списка VPN-ASN: из вашего HTTPS URL или, если URL пуст, из встроенного vpn_asn_bundled.json.
Как считается «подозрительность»
- ASN и тип сети — известные VPN/hosting ASN и ваши дополнительные ASN; настраиваемые баллы.
- Заголовки и rDNS — признаки прокси и характерные имена хостов.
- WebRTC, таймзона, порты — опционально, каждый фактор можно включить или выключить и выставить вес.
- Порог — если сумма баллов ≥ порога, показывается окно (и при необходимости блокируется оформление заказа).
Где это в админке
- Настройки плагина — включение, зона страниц, порог, тексты popup, страны, ipwho.is, гео-блок, webhook, логирование, CLI-подсказки с путями для вашей установки.
- Логи и статистика — по ссылкам вверху страницы настроек (при включённом логировании и правах доступа).
Что можно настроить (кратко)
- Включение плагина и область сайта для проверки.
- Порог баллов, веса факторов, кэш IP, белый список IP.
- Тексты и цвет акцента окна, подписи кнопок, ссылка на политику конфиденциальности.
- «Свои» страны, опциональная гео-блокировка, webhook.
- Логи: включение, срок хранения дней, экспорт.
- Cron/CLI для гео-справочника и обновления ASN.
Частые вопросы
- Нужен ли платный MaxMind на старте? Нет: можно пользоваться ipwho.is и встроенным списком ASN; MaxMind — по желанию для локального гео.
- Можно ли не слать IP наружу? Да: отключите ipwho.is и используйте локальные
.mmdb там, где это возможно.
- Будет ли окно на странице оплаты по ссылке? Да, для маршрута
paymentlink/… плагин подключает свои ресурсы.
- Как обновлять список VPN-ASN без URL? Запускайте CLI
asn — подмешивается встроенный JSON.
Нужна помощь с настройкой под ваш магазин? Пишите на scc.lac@mail.ru или в Telegram @web_stu.