Ссылки Поиск Написать В избранное NO

Почему капча (CAPTCHA) не нужна

Делал я тут скрипт проверки посетителя без капчи и решил рассказать - почему это капча вообще не нужна. И чем ее можно заменить! Спойлер - прямыми руками и минимумом PHP и JavaScript.


Ка́пча (от CAPTCHA — англ. Completely Automated Public Turing test to tell Computers and Humans Apart — полностью автоматизированный публичный тест Тьюринга для различения компьютеров и людей) — компьютерный тест, используемый для того, чтобы определить, кем является пользователь системы: человеком или компьютером.


(23.11.2018 blogger) Почему капча не нужна - (CAPTCHA)


Я не робот, вы - не робот. Но нам нужен робот, чтобы отделить роботов от людей. И защитить информацию от других роботов. Почему? Ну, в сети полно разных ботов, которые ходят по страницам и ищут разные формы. А потом пытаются их заполнить спамом. А потом смотрят - получилось или нет. Отсюда и будем «плясать» при защите.


Как защититься от спама форм без капчи?

Большинство ботов спамеров - стандартные!

Ну правда. Они ищут конкретный движок сайта или форума, конкретный плагин для форм или конкретную уязвимость. Стоит поставить любое дополнительное поле, изменить как-то имя формы и все! Робот не может пройти проверку. На этом строится просто куча способов защиты.


• Можно изменить имя (name) у формы со стандартного, изменить имя в PHP обработчике формы. А старое поле оставить скрытым и пустым. Если кто-то его заполнит, то он - робот.

• Можно добавить скрытое поле type="url" name="url" - боты любят заполнять ссылки. И если кто-то это сделал, он - вредоносный робот.

• Как и прошлый пункт, только добавить скрытое поле email.

• Сделать скрытое поле со временем загрузки страницы. Например, на PHP: <input type="hidden" name="time" value="<? echo time(); ?>"> и проверять его при отправке сообщения. Если кто-то заполнил поле быстрее 3 - 5 секунд или дольше 30 минут, то это - робот.

• Добавить любую простую проверку без капчи. Пример 2+2 или просто - галочку. Этого вполне хватит. Нужно очень сильно кому-то насолить, чтобы он решил перенастраивать стандартного робота именно под ваш сайт.


Большинство ботов - тупые или устаревшие

• 99% роботов не передают реферрер - с какой страницы они послали запрос. Обычная проверка в скрипите вида if (substr_count(strtolower(getenv("HTTP_REFERER")), getenv("HTTP_HOST"))!==1) {die("Вы - робот");} отсеет их всех.

• Очень малый процент ботов понимают JavaScript куки (и просто куки). Например, в скрипте выше это проверяется буквально одной строкой. Перед отправкой формы.

• Я уж вообще молчу про эмуляцию движений мыши и клики.

• Часто бывает, что даже обычного юзер-агента у бота нет. Или он представляется Internet Explorer 6.


Вот такие простые способы защиты форм. Да, выглядит немного странно, но все вместе они отсеивают практически 100% ботов, желающих оставить спам (проверено). И все это - без капчи и скрыто от посетителя сайта. Хватит даже проверки реферерра и/или куки. Единственный минус - оно не защищает от спамеров людей. Но тут помогает задержка перед публикацией и ограничение на количество комментариев.