Борьба со спамом роботов по-другому

У меня есть веб-сайт с простой формой, которая отправляет ввод в виде твитов в учетную запись Twitter.

Там нет капчи или какой-либо системы защиты от спама, поэтому вполне логично, что спам-боты публикуют свой фиктивный контент как сумасшедшие.

Теперь я хочу создать валидацию, не требующую ввода капчи.

Это то, о чем я думал, и мне нужно ваше честное мнение.

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

Моя идея состоит в том, чтобы создать простое js-условие, согласно которому форма не может быть отправлена ​​без какого-либо фокуса.

Что Вы думаете об этом? Любые другие виды подобных идей?

Спасибо!


person Slavisa Perisic    schedule 03.10.2012    source источник
comment
Если вы вообще не загружаете javascript, он будет работать? Потому что боты, вероятно, не загружают js.   -  person Calavoow    schedule 03.10.2012
comment
Я думаю, что это плохая идея, поскольку POST-запросы можно отправлять напрямую с помощью Perl, cURL, Python и т. д., полностью минуя вашу форму и отправляя данные непосредственно на сервер в виде POST-запроса.   -  person adeneo    schedule 03.10.2012
comment
Я согласен. Пожалуйста, прочитайте ответ ниже и комментарии :)   -  person Slavisa Perisic    schedule 03.10.2012


Ответы (1)


Идея твитить сообщения, которые не были проверены, сама по себе звучит довольно небезопасно. Тем не менее, есть несколько способов свести к минимуму спам.

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

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

person Oleg    schedule 03.10.2012
comment
Более того, используйте скрытое поле ввода с несколькими атрибутами data- в виде чисел (например, data-num1=7 data-num2=5), затем пользовательский javascript, чтобы сложить эти числа вместе и заполнить значение скрытого ввода. При проверке, если ввод отличается от суммы двух чисел, вероятно, это спам. - person Richard Parnaby-King; 03.10.2012
comment
Интересная идея, я уже делал нечто подобное некоторое время назад. По сути, я могу реализовать js, который заполняет скрытое поле неважной строкой и отправляет форму, только если скрытое поле имеет это значение. В противном случае он не будет отправлен. Как насчет этого? - person Slavisa Perisic; 03.10.2012
comment
ИЛИ использовать javascript, чтобы добавить скрытое поле ввода через 5 секунд? Если поле отсутствует, то спам. - person Richard Parnaby-King; 03.10.2012
comment
Круто, за несколько секунд до меня :) - person Slavisa Perisic; 03.10.2012
comment
Проблема с использованием JS или любого другого ненавязчивого метода (recaptcha это очень навязчиво) заключается в том, что если кто-то действительно хочет настроить таргетинг на ваш сайт, он, вероятно, добьется успеха. Любая логика, выполняемая на стороне клиента, может быть смоделирована вредоносным скриптом. - person Oleg; 03.10.2012