Как защитить оффер от спама

Как защитить оффер от спама

@boostclicks

Ситуация на практике

Представьте следующую ситуацию: вы запускаете новый оффер в незнакомом для вас ГЕО, который рекомендован в ПП, и начинаете лить трафик. Первые результаты радуют, гео показывает себя достаточно хорошо, и вы решаете масштабировать кампанию. Но затем начинается настоящий пиздец — начинают лететь спам-лиды, по нескольку лидов в минуту. Статистика трекера подтверждает: клики реальные, с настоящих устройств, с корректными юзер-агентами, рекламными метками, пикселями и с разных IP-адресов. Очевидно, что клоакинг обходят без труда.

Такой сценарий, с одной стороны, подтверждает перспективность выбранного ГЕО и оффера, а с другой — заставляет быстро реагировать и установить меры защиты.

Наши меры защиты

  1. Ограничение лидов с одного устройства.

Первое, что нужно сделать — установить лимит: не более одного лида с одного устройства в сутки. Это поможет отсеять массовые автоматизированные заявки.

2. Ограничение по времени отправки формы.

Определите среднее время, которое требуется реальному пользователю для заполнения формы на вашем сайте. На период атаки можно ограничить отправку формы, если с момента входа на сайт прошло менее определённого количества секунд (N секунд). Это позволит блокировать слишком быструю отправку, характерную для ботов.

---

Чтобы понять, сколько времени наш пользователь проводит на сайте до того момента, как он оставляет лид, необходимо установить следующий скрипт непосредственно перед закрывающим тегом </body>:

<script>

const clickid = '{subid}';

const address = `${window.location.protocol}//${window.location.hostname}?_update_tokens=1&sub_id=${clickid}`;


var step = 5;

var counter = 0;

setInterval(function (){

  counter += step;

  createPixel(`${address}&sub_id_21=${counter}`);

}, step * 1000);


function createPixel(url){

  var img = document.createElement('img');

  img.src = url;

  img.referrerPolicy = 'no-referrer-when-downgrade';

  img.style.display = 'none';

  document.body.appendChild(img);

}

</script>


Шаг 2

Теперь переходим к основному скрипту, который будет выполнять две задачи:

  1. Ограничивать повторную отправку формы — если с момента последней отправки прошло менее 24 часов, отправка блокируется.
  2. Проверять время нахождения пользователя на сайте и, если оно меньше заданного порога, также блокировать отправку формы и перенаправлять пользователя на страницу ошибки.

Скрипт необходимо вставить перед закрывающим тегом </head>. Если у пользователя отключён JavaScript, он сразу будет перенаправлен на страницу ошибки.

<script>

  document.addEventListener("DOMContentLoaded", function () {

    const form = document.querySelector("form");

    const pageLoadTime = Date.now();


    form.addEventListener("submit", function (event) {

      event.preventDefault();

      const now = Date.now();


      // Если с момента загрузки страницы прошло меньше 60 секунд — перенаправляем на страницу ошибки

      if ((now - pageLoadTime) < 60 * 1000) {

        window.location.href = 'error.php';

        return;

      }


      // Извлекаем из localStorage записи о предыдущих отправках формы

      const requestLogs = JSON.parse(localStorage.getItem('requestLogs')) || [];

      // Оставляем только записи за последние 24 часа

      const filteredLogs = requestLogs.filter(log => (now - log.timestamp) < 24 * 60 * 60 * 1000);


      // Если за последние 24 часа уже была отправка — перенаправляем на страницу ошибки

      if (filteredLogs.length >= 1) {

        window.location.href = 'error.php';

      } else {

        // Добавляем текущую отправку в логи и сохраняем их

        filteredLogs.push({ timestamp: now });

        localStorage.setItem('requestLogs', JSON.stringify(filteredLogs));

        form.submit();

      }

    });

  });

</script>

<noscript>

  <meta http-equiv="refresh" content="0; url=error.php">

</noscript>


На этом все. Не забудьте подписать на канал:

https://t.me/boostclicks

Сайт: https://boostclicks.ru

Report Page