Почему капча (CAPTCHA) не нужна
Делал я тут скрипт проверки посетителя без капчи и решил рассказать - почему это капча вообще не нужна. И чем ее можно заменить! Спойлер - прямыми руками и минимумом PHP и JavaScript.
Я не робот, вы - не робот. Но нам нужен робот, чтобы отделить роботов от людей. И защитить информацию от других роботов. Почему? Ну, в сети полно разных ботов, которые ходят по страницам и ищут разные формы. А потом пытаются их заполнить спамом. А потом смотрят - получилось или нет. Отсюда и будем «плясать» при защите.
Ну правда. Они ищут конкретный движок сайта или форума, конкретный плагин для форм или конкретную уязвимость. Стоит поставить любое дополнительное поле, изменить как-то имя формы и все! Робот не может пройти проверку. На этом строится просто куча способов защиты.
• Можно изменить имя (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% ботов, желающих оставить спам (проверено). И все это - без капчи и скрыто от посетителя сайта. Хватит даже проверки реферерра и/или куки. Единственный минус - оно не защищает от спамеров людей. Но тут помогает задержка перед публикацией и ограничение на количество комментариев.
Ка́пча (от CAPTCHA — англ. Completely Automated Public Turing test to tell Computers and Humans Apart — полностью автоматизированный публичный тест Тьюринга для различения компьютеров и людей) — компьютерный тест, используемый для того, чтобы определить, кем является пользователь системы: человеком или компьютером.
Я не робот, вы - не робот. Но нам нужен робот, чтобы отделить роботов от людей. И защитить информацию от других роботов. Почему? Ну, в сети полно разных ботов, которые ходят по страницам и ищут разные формы. А потом пытаются их заполнить спамом. А потом смотрят - получилось или нет. Отсюда и будем «плясать» при защите.
Как защититься от спама форм без капчи?
Большинство ботов спамеров - стандартные!Ну правда. Они ищут конкретный движок сайта или форума, конкретный плагин для форм или конкретную уязвимость. Стоит поставить любое дополнительное поле, изменить как-то имя формы и все! Робот не может пройти проверку. На этом строится просто куча способов защиты.
• Можно изменить имя (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(
• Очень малый процент ботов понимают JavaScript куки (и просто куки). Например, в скрипте выше это проверяется буквально одной строкой. Перед отправкой формы.
• Я уж вообще молчу про эмуляцию движений мыши и клики.
• Часто бывает, что даже обычного юзер-агента у бота нет. Или он представляется Internet Explorer 6.
Вот такие простые способы защиты форм. Да, выглядит немного странно, но все вместе они отсеивают практически 100% ботов, желающих оставить спам (проверено). И все это - без капчи и скрыто от посетителя сайта. Хватит даже проверки реферерра и/или куки. Единственный минус - оно не защищает от спамеров людей. Но тут помогает задержка перед публикацией и ограничение на количество комментариев.