Як швидко позбутися від спаму без captcha
Якщо у вас на сайті є хоч одна форма зворотного зв'язку, то напевно ви відчули проблему шаленої кількості спаму. який приходить на пошту співробітникам. Якийсь час це можна стійко терпіти і прикидатися, що люди не витрачають свій робочий час на розчищення пошти, не втрачають справжні заявки і замовлення в пучині папки "спам".
Однак, рано чи пізно, до відділу розробки надходить прохання: встановити CAPTCHA. І тут вже досить мляво можуть протестувати ті, хто знає про недоліки такого рішення:
Captcha - це нечитабельним код на зображенні, необхідність введення якого дратує відвідувачів і, як наслідок, в рази знижує конверсію будь-якої форми. Можна перерахувати ще з десяток мінусів, але цього пункту досить, щоб відмовитися від використання такого методу захисту на користь будь-якого іншого.

На щастя, зробити заміну можна за 10 хвилин. Нижче наведемо простий трюк:
Створюємо приховану змінну, яка зберігається в сесії користувача.
Увага! Незрозумілі літери:
Увага! Знову незрозумілі літери:
Не знаю, чому мені захотілося зробити саме такого виду рядок, але це просто перше, що спало на думку. Ви можете зробити все те ж саме, використовуючи інші дані. Тепер цей рядок нам потрібно передати в Java Script, щоб потім, при відправці форми, передавати це значення на сервер.
Все дійсно так просто. як здається :) Проте будь-який Script Kiddie (підліток, який пише шкідливих ботів, за невелику винагороду, використовуючи готові скрипти і програми - прим. ред.), який побачить хеш, нацькує бота і на нього. Щоб трохи ускладнити їм завдання, можна зробити наступне: кожен символ в хеше перетворюється в ASCII-код цього символу, а в Java Script збирається в єдиний рядок. Такий метод працює ТІЛЬКИ на клієнтських машинах.
Увага! Вам ще не набридли незрозумілі літери?
Java Script:
В кінцевому вигляді це виглядає приблизно так:
Мінуси такого рішення, звичайно, є:
Якщо у користувача відключений JS, то метод не спрацює. Але я, якщо чесно, ні разу в житті не зустрічав людей, які відключають JS. Крім того, зараз ця проблема не така актуальна, як пару років назад. Більшість користувачів інтернтет сидить в соц. мережах, де наявність включеного JS - необхідність.
Отже, після того як ми зібрали в рядок ASCII-коди, нам необхідно вставити це значення в приховане поле форми, при ініціалізації сторінки. Також ми можемо зробити це при відправці форми. Загалом передати змінну можна, як завгодно. Ну а перевірка на стороні сервера дуже проста.
Увага! Це останній раз:
Як правило, боти не виконують JS код, так що якщо не переданий параметр hiddenHash, то ми розуміємо, що це бот і обходимося з ним безжально, викликаючи функцію die ();
Після впровадження цієї простої захисту, спам вас більше не потурбує, а відвідувачам не буде снитися ночами злісна CAPTCHA.