Задание: Создание скриптов. Разработка anti-fraud скрипта для лендинга HTML (Дистанционная работа)
Задача:
Разработать серверно-клиентский механизм для защиты от повторных переходов с одного IP и подозрительной активности (например, боты или кликфрод), с возможностью логирования и анализа.
1. Ограничение количества переходов с одного IP (Rate Limiting)
Цель
Предотвратить множественные клики с одного IP-адреса (например, по контекстной рекламе).
Требования
• Ограничить количество переходов на лендинг с одного IP: не более 3 переходов за 10 минут.
• При превышении лимита —:
o Возвращать заглушку с сообщением (“Превышено количество запросов”)
o Не загружать основной контент лендинга (по возможности)
• Реализовать на серверной части (Node.js, Python или PHP — уточняется).
• Хранение счётчика IP-адресов — Redis или в памяти (если трафик небольшой).
________________________________________
2. Логирование подозрительной активности
Цель
Собирать аналитические данные для выявления фрода и создания отчётов в рекламные системы (например, Яндекс Директ).
Требования к логированию
Логировать в файл/базу следующие данные при каждом переходе с UTM-меткой utm_source=yandex:
Информация для логов:
• Время запроса (формат ISO 8601)
• IP-адрес
• Все HTTP-заголовки (включая Referer, User-Agent, Cookie)
• UTM-метки (все, если есть)
• Fingerprint (если вычислен)
• Количество запросов с этого IP за последние 10 минут
• Тайминг между переходами
• Повторяемость маршрута (например, последовательность URL или скролл-поведение — если возможно)
Хранилище логов
• Запись в JSON-файл или MongoDB (предпочтительно — обсуждается).
• Структурировать по времени (например, файл logs/2025-06-05.json).
________________________________________
3. Идентификация устройств через Fingerprint
Цель
Обнаружение повторяющихся посещений даже при смене IP-адресов (например, через TOR, VPN).
Реализация
• Подключить и использовать библиотеку FingerprintJS (https://fingerprint.com или open-source версия).
• Получать уникальный отпечаток устройства при первом заходе.
• Сохранять его в лог (см. выше).
• При повторных заходах — проверять наличие ранее зафиксированного отпечатка.
• Формировать список подозрительных Fingerprint ID по шаблонам поведения:
o Повторные заходы с разных IP
o Высокая частота кликов
o Одинаковый маршрут и user-agent
________________________________________
4. Общие требования
• Страницы и скрипты должны быть кроссбраузерными.
• Код должен быть оптимизирован под производительность (особенно логика ограничения запросов).
• В логах не должно быть потери данных при перезагрузке сервера.
• Разработать краткий README по установке и настройке.
________________________________________
Дополнительно (по согласованию)
• Реализовать отправку отчёта (CSV или JSON) вручную или по крону с агрегированной статистикой подозрительных посещений.
• Возможность пересылки таких логов в Яндекс через интерфейс (например, выгрузка за день).
________________________________________
Интеграции
• Лендинг написан на HTML — требуется вставка минимального JS-фрагмента.
• Серверная часть может быть реализована отдельно, например, на:
o Node.js + Express
o Python + Flask/FastAPI
o PHP (если только он доступен)