Сейчас: 01:53:04   26-го апреля 2024 г.
UsefulScript.ruСкриптыЗащита сайтаЗащита от спама на jQuery
2
24

Защита сайта от спама на jQuery

После написания темы Считаем количество кликов, пришла идея о том, как можно защитить сайт от спама при помощи подсчета кликов на jQuery.


Принцип такой защиты довольно прост. Изначально на сайте располагается форма, в атрибуте action которой мы указываем ссылку на страничку с сообщением, что проверка не пройдена. Внизу сайта располагается наш скрипт, который считает и проверяет количество кликов по заранее указанному элементу. В случае совпадения (или превышения) необходимого количества кликов, скрипт заменяет в форме значение атрибута action на нужный URL-адрес, где и будут обработаны отправленные данные.


Ниже расположен рабочий пример формы, которая, пока Вы не кликните пять раз по блоку DIV с надписью: "Кликните здесь 5 раз", будет перенаправлять Вас на страничку 404.php при попытке отправления данных формы.

Защита от спама
Кликните здесь 5 раз
Кликов - 0

Имя:
Отчество:
Фамилия:

Если Вы кликните пять или более раз по блоку DIV с надписью "Кликните здесь 5 раз", то скрипт автоматически заменит значение URL у атрибута action указанной формы на нужный (в нашем случае страничка просто перезагрузится).


Следует учесть тот факт, что многие боты игнорируют JavaScript код, и потому они сразу отпадают. Другие боты, даже если и загружают JavaScript код, то это им мало что даст, т.к. они не поймут, что нужно сделать для того, чтобы произошла замена URL-адреса на нужный. А без человеческого вмешательства вряд ли догадаются, в чем подвох.


Как Вы уже могли догадаться из названия темы, для работы нам потребуется подключить библиотеку jQuery. Делается это так:

JavaScript код:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js">
</script>

Давайте теперь рассмотрим этот чудо код, который поможет нам запутать ботов спамеров:

JavaScript код:
<script type="text/javascript">
$(
document).ready(function(){
$(
"#no_spam")
.
data("counter"0)            // Обнуляем счетчик кликов
.click(function() {
    var 
counter = $(this).data("counter");    // Получаем значение
    
$(this).data("counter"counter 1);        // Увеличиваем значение на 1
    
if ($(this).data("counter")<6) $("#col_click").text($(this).data("counter"));
    
// Если кликнули 5 или более раз,
    // то перенаправляем на страничку обработки отправленной формы
    
if ($(this).data("counter")>=5) {
        $(
"#col_click").text = $(this).data("counter");
        $(
"#send_form").attr("action","forms_protection_jQuery.php")
    };
});
});
</script>

Сама форма для отправки сообщений в нашем случае выглядит так:

HTML код:
<div style="width: 200px; margin: 0 auto; text-align: center;">
Защита от спама
<div id="no_spam" style="border: 1px solid #e4e4e4; cursor: pointer;">
Кликните здесь 5 раз<br>
Кликов - <span id="col_click">0</span>
</
div>
</
div>
<
br>

<
form id="send_form" method="POST" action="404.php">
 <
table style="margin: 0 auto;">
  <
tr><td>Имя: </td><td><input type="text" name="name"></td></tr>
  <
tr><td>Отчество: </td><td><input type="text" name="patronymic"></td></tr>
  <
tr><td>Фамилия: </td><td><input type="text" name="family"></td></tr>
  <
tr><td></td><td><input type="submit" name="send_form" value="Отправить"></td></tr>
 </
table>
</
form>

В случае если попадется умный бот, который найдет URL, на который мы подменяем в случае выполнения условия, то всегда можно разбить URL на несколько частей и потом склеивать обратно, чтобы в коде странички не было URL целиком.


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


Данный скрипт можно развивать путем добавления новых условий. Например, сделать несколько цветных фигур, и попросить пользователя кликнуть три раза по зеленым и два раза по красным фигурам, при этом проверять, чтобы другие счетчики были на нуле.

?

https://pedant-vladimir.ru/remont-iphone-6-6plus/zamena-displeya

Дата создания: 19:17:08 05.11.2012 г.
Дата обновления: 22:11:10 17.08.2013 г.
Посещений: 6926 раз(а).

Комментарии посетителей (8 шт.):
Александр
1
# 623
(21:35:38  17.02.2013 г.)

Довольно оригинально! Ни разу не сталкивался с подобной защитой. Можно усложнить и делать "кодовый замок".
Ответить

Геннадий
1
# 1037
(10:34:15  17.08.2013 г.)

Если взять в чистом виде данные скрипты и разместить их на чистой странице, и назвать её, как у вас - forms_protection_jQuery.php, затем создать вторую страницу - опять же, как у вас - 404.php, и попытаться проверить работу скриптов, то работает только часть пере направления на страницу 404.php. А часть скрипта отвечающая за 5 кликов не работает, сама форма выводится, а клики не считаются.
Ответить

Administrator
0
# 1038
(14:28:45  17.08.2013 г.)

Это могло произойти в том случае, если JavaScript код располагается выше самой формы и не внутри функции $(document).ready(function(){ });
Решения проблемы в данном случае два:
1) Переместить JavaScript код под форму.
2) Разместить JavaScript код внутри $(document).ready(function(){ });
P.S. Тему чуть-чуть подправили в соответствии со вторым решением проблемы.
Ответить

Геннадий
0
# 1044
(20:32:11  17.08.2013 г.)

Так всё равно не работает. Затем я скопировал эти два кода с HTML кода вашей данной страницы и вставил к себе, расположив в последовательности как у вас - но также не работает. А вот когда я сохранил из браузера всю страницу, то итоговый результат положительный. Получается ещё что-то должно подгружаться к двум этим скриптам, сохранив вашу страницу, я ведь что-то скачал себе.
P.S. Я нашёл проблему. Вы забыли добавить, что нужен ещё один файлик - это jquery.js, без него ничего не работает. Вот его то я и скачал, сохранив всю страницу целиком. И теперь всё работает отлично. Кстати, JavaScript код можно располагать на странице где угодно, работает и так, и так.
Ответить

Administrator
0
# 1046
(22:16:10  17.08.2013 г.)

Действительно, в статье не было упомянуто о подключении библиотеки jQuery, т.к. предполагалось, что из названия темы будет ясно, что для работы скрипта она понадобится. На данный момент в тему добавлена информация о подключении библиотеки jQuery.
Ответить

Геннадий
0
# 1047
(22:45:42  17.08.2013 г.)

Я бы вам предложил более действенный и простой способ защиты от ботов авто регистраторов и прочего спама. Как известно, все эти спамерские авто регистраторы вообще не понимают JavaScript. Нужно просто взять страницу, а точнее саму HTML форму регистрации (там, где вводятся все регистрационные данные) на данной странице и зашифровать её через JavaScript кодировщик, а затем вставить это на то место, где была сама форма до её кодирования. Вот и всё - спам бот прочитав страницу регистрации, ничего для себя не найдёт куда можно сунуть своё рыло. А живой человек из своего браузера всё будет прекрасно видеть, так как браузер прекрасно всё раскодирует обратно. На моём сайте я использую такую схему.
Выложите эту тему для народа где-нибудь отдельно.
Ответить

Administrator
0
# 1048
(23:10:21  17.08.2013 г.)

Это называется обфускация кода.
Об этом уже есть тема на нашем сайте - Скрытие JavaScript путем обфускации.
Ответить

автоматизатор
0
# 4197
(20:52:36  16.12.2017 г.)

У меня есть лицензионный хрумер и зенопостер. Так вот уважаемые разработчики, при регулярных обновлениях этих программ разработчики этого софта регулярно вводя в свой софт ваши новшества, а конкретно как их преодолеть, и ваша защита продержится не больше пары недель.
Ответить

Закрыть
Ваше имя:
557 + 3 =
Добавить комментарий:
Ваше имя:
557 + 3 =

Перед публикацией все комментарии проходят обязательную модерацию!

Если Вы хотите задать какой-либо вопрос, то сделайте это на нашем форуме.
Таким образом, Вы сможете быстрее получить ответ на интересующий Вас вопрос.
Посетителей онлайн: 9

Какую CMS для сайта Вы предпочитаете?