Антиспам без Captcha

Пятница, 8 декабря 2006

В последнее время форумы, гостевые, да и всё, что только можно заполнить страдает от неимоверного количества спама. Это и понятно: спаммеры придумывают всё новые механизмы для своих спам-ботов.

Борцы за чистоту Интернет занимаются примерно тем же, только наоборот: придумывают всё новые методы защиты.

Немного о Captcha



Одним из таких методов является показ верификация при помощи Captcha перед тем, как разрешить пользователю отправить какие-либо данные.

Для справки:CAPTCHA (английская аббревиатура от «Completely Automated Public Turing test to tell Computers and Humans Apart» — полностью автоматизированный публичный тест Тьюринга для отделения людей от компьютеров) — торговая марка университета Карнеги-Мелона, компьютерный тест, используемый для того чтобы определить, человек ли использует систему. Термин появился в 2000 году. В наиболее распространённом варианте CAPTCHA от пользователя требуется ввести символы, изображённые, как правило, в искажённом виде на предлагаемом ему рисунке, иногда с добавлением шума или полу-прозрачности. Реже применяются CAPTCHA, основанные на распознавании речи (в основном как альтернатива для людей с нарушениями зрения), либо на других вариантах задач искусственного интеллекта.

http://upload.wikimedia.org/wikipedia/commons/6/69/Captcha.jpg

Думаю, всем знакома эта картинка или её вариации.

Но хорошо ли это? Надо ли заставлять пользователя заполнять ненужные лично ему поля? Хочет ли на самом деле пользователь заполнять эти поля?

Неужели бота нельзя отличить по какому-либо другому признаку? Конечно можно!

Способ 1. Ловушка


Просмотрев исходные коды нескольких ботов, я пришёл к выводу, что боты в основной своей массе жадные: пытаются заполнить всё, что находят. Первый способ напрашивается сам собой.

Допустим, у нас имеется форма:



<form action="/register.php" method="post">
<input type="text" name="login" value="">
<input type="text" name="e-mail" value="">
<input type="submit" value="Отправить">
</form>



Добавим фиктивное поле с id=validator:



<form action="/register.php" method="post">
<input type="text" name="login" value="">
<input type="text" name="e-mail" value="">
<input id="validator" type="text" name="validator" value="">
<input type="submit" value="Отправить">
</form>



Допишем CSS для его сокрытия:



#validator{
display: none;
}



После этого остаётся поправить скрипт, которым обрабатываются данные из нашей формы:



// Если скрытое поле заполнили
if ($_POST['validator']!=''){
die('Ботам ходу нет!');
}
else{
// Тут обычная наша старая привычная обработка формы
}



Способ 2. Ловушка с подменой


Это всё хорошо, скажут многие, но у нас форум на одном из популярных движков. Под него специальные боты, которые заполняют только нужные поля. Да, всё так, но и тут есть выход.

Возьмём ту же форму:



<form action="/register.php" method="post">
<input type="text" name="login" value="">
<input type="text" name="e-mail" value="">
<input type="submit" value="Отправить">
</form>



Тут уже первый способ не пройдёт. Бот будет чётко заполнять поля login и e-mail. Ну да ладно... меняем форму:



<form action="/register.php" method="post">
<input class="validator" type="text" name="login" value="">
<input class="validator" type="text" name="e-mail" value="">
<input type="text" name="login2" value="">
<input type="text" name="e-mail2" value="">
<input type="submit" value="Отправить">
</form>



Правим CSS:



.validator{
display: none;
}



Ну и скрипт:



// Если скрытое поле заполнили
if ($_POST['login']!='' || $_POST['e-mail']!=''){
die('Ботам ходу нет!');
}
else{
// Тут работаем уже с $_POST['login2'] и $_POST['e-mail2']
}



Заключение


В заключение хочется пожелать всем не следовать за толпой. Будь то использование Captcha или что-то ещё. Относитесь к информации критично, следуйте своим путём.

Тэги:

Комментарии

#1 romy4 28.09.08, 03:23

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

#2 Sam 28.09.08, 11:41

Затачивают обычно под очень популярные вещи: WordPress, Drupal, vBulletin, IPB. Есть смысл в коммерческом плане. На остальных напускают тупых ботов.

#3 Аня 28.02.09, 20:41

А может кто знает, где можно почитать о том, как исправить такую ошибку: код капчи вводится в форму, а он выдает, что неверный код..Где искать пути решения этой проблемы?

#4 BorisPlus 31.05.09, 10:10

Да, вариант хороший, но только против "стандартных" ботов. А когда приходиться бороться с версиями одного и того же бота (то есть с целой группой разработчиков спам-бота), то остается только один вариант - рисунок - загадка (их должно быть очень много) - продолжение фразы...

"А может кто знает, где можно почитать о том, как исправить такую ошибку: код капчи вводится в форму, а он выдает, что неверный код..Где искать пути решения этой проблемы?"

Думаю, Вам проще обратиться к специалисту (программисту, как понимаю, PHP) и он поможет...а так погуглите по поводу вашей конкретной ошибки и версии капчи...

Оставить комментарий




Подписаться на RSS

Интересное

Разделы

  1. (5)
  2. (11)
  3. (6)
  4. (9)
  5. (6)
  6. (6)
  7. (16)
  8. (59)
  9. (264)
  10. (51)
  11. (16)
  12. (12)
  13. (37)
  14. (5)
  15. (10)
  16. (14)
  17. (18)
  18. (12)
  19. (6)
  20. (8)
  21. (7)
  22. (29)
  23. (62)
  24. (18)
  25. (64)
  26. (5)
  27. (193)
  28. (56)
  29. (6)
  30. (18)
  31. (72)
  32. (27)
  33. (65)
  34. (32)
  35. (10)
  36. (5)
  37. (6)
  38. (5)
  39. (309)
  40. (11)
  41. (6)
  42. (12)
  43. (8)
  44. (18)
  45. (6)
  46. (15)
  47. (114)
  48. (18)
  49. (6)
  50. (8)
  51. (66)
  52. (16)
  53. (6)
  54. (17)
  55. (5)
  56. (26)
  57. (7)
  58. (27)
  59. (7)
  60. (12)
  61. (11)
  62. (118)
  63. (31)
  64. (5)
  65. (18)
  66. (22)
  67. (9)
  68. (6)
  69. (8)
  70. (41)
  71. (10)
  72. (6)
  73. (12)
  74. (8)
  75. (5)

Друзья