PHP Обнаружение бот-подобного поведения

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

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

  2. сколько попыток контакта было предпринято за последний час (ограничение 15/час) или день (ограничение 25/день)

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

  4. проверить сообщение на наличие спама по ключевым словам


Я буду добавлять сюда полезные решения сообщества по мере их появления:


Какое еще поведение роботов может быть характерно для обнаружения с помощью PHP (не хочу использовать JS, потому что его можно отключить) без помощи CAPTCHA?


person Community    schedule 19.11.2009    source источник
comment
Если у вас есть какие-либо изображения/CSS на странице, вероятность того, что боты их загрузят, меньше.   -  person Artelius    schedule 19.11.2009
comment
Вы имеете в виду, что если у меня есть изображение / css на странице, боты даже не загрузят страницу? по крайней мере, на большинстве страниц нет css?   -  person johnnietheblack    schedule 19.11.2009
comment
Я думаю, он имеет в виду, что они не будут загружать изображения/css   -  person esqew    schedule 07.10.2010
comment
Этой странице несколько лет, и мне интересно, работает ли до сих пор подход honeypot?   -  person Jens    schedule 17.12.2013


Ответы (6)


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

person Community    schedule 19.11.2009
comment
да, я действительно слышал об этом ... приманке ... если кому-то интересно, я отредактирую свой вопрос и добавлю ссылку - person johnnietheblack; 19.11.2009

Я полагаю, что вы могли бы координировать свои действия с вашим файлом robots.txt и определять, был ли он поражен пользователем, это позволило бы вам отслеживать ip/timestamp запрашивающей стороны, что сделало бы маловероятным, что обычный пользователь увидит ваш файл robots.txt .

Поскольку большинство ботов будут проверять ваш файл robots.txt (возможно, на наличие структуры каталогов и т. д.).

person Community    schedule 19.11.2009
comment
Я думаю, он старается не допускать ботов, которые выдают себя за людей с теневыми или откровенными преступными намерениями, и не проверяют robots.txt. - person Pekka; 19.11.2009
comment
ты умеешь это делать? я действительно не знаю, возможно ли это или нет, но если вы можете описать это или предоставить ссылку о том, как это сделать, это хорошая идея. - person johnnietheblack; 19.11.2009
comment
некоторые боты могут проверять файл robots.txt, чтобы получить структуру каталогов. Я не имел в виду это для сканеров google/yahoo/search engine. - person Jakub; 19.11.2009

Интересным фактором может быть частота набора текста и движения мыши. Их довольно легко поймать с помощью JavaScript. Другое дело их анализ, хотя я полагаю, что было бы довольно легко вычислить отклонения и средние значения, которые дают хорошее представление о том, насколько «органичны» движения.

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

person Community    schedule 19.11.2009
comment
неплохая идея, но если я бот, я могу легко отключить javascript и обойти это, не так ли? - person johnnietheblack; 19.11.2009
comment
да. Это будет работать только в том случае, если у вас обязательно есть Javascript. - person Pekka; 19.11.2009
comment
круто, плохо +1 за классную идею... но мне особенно нужны решения, отличные от js (я хочу сделать это как можно более герметичным, и мои сайты не зависят от js)... спасибо! - person johnnietheblack; 19.11.2009

Я добавил скрытое поле (с помощью CSS, display:none) в форму с name="email", когда оно заполнено, это был робот ;)

person Community    schedule 20.11.2009

Возможно, проверка ссылочного URL? Я с трудом могу представить, как много людей заканчивают контактную форму, не пройдя сначала несколько других страниц веб-сайта, то же самое касается форм заказа, ...

person Community    schedule 19.11.2009
comment
..и что делать с ссылающимся URL? Проверить, что он не в черном списке? - person Jens; 17.12.2013
comment
Нет, проверьте, действительна ли запись. Хотя его можно подделать - person lalengua; 21.07.2018

Я бы посоветовал забыть пытаться угадать знаки... они всегда меняются.

Я бы токенизировал каждую вообразимую «особенность» поведения, автоматически оценивая функции с помощью «хорошо», «спама» или «не уверен». Затем «тренируйтесь на ошибках» (запишите случаи, когда предположение было неверным). Через некоторое время вы можете иметь точность 99,7%.

Вот пример 7 самых интересных особенностей отправки на мой сайт, которая была оценена как спам 89,9771%. Это спам.

Каждое из этих ключевых слов, найденных в сообщении, является функциями, которые с вероятностью 98,9% являются спамом:

mssg txt - "tours" || Prob 0.98993 
mssg txt - "cruises" || Prob 0.98993
mssg txt - "agencies" || Prob 0.98993
mssg txt - "choice" || Prob 0.98991 

Телефонный номер «12345» с вероятностью 95% является спамом.

tel number - "123456" || Prob 0.95440 Delta 0.45440

Общая длина сообщения составляет 30 символов (после удаления html), что указывает на 94% спама.

mssg maxlen - "30" || Prob 0.94600 

(Была еще одна функция, которая набрала Prob 0.01011, что компенсировало общую общую оценку, немного сбивая ее. Но я не собираюсь говорить, что это была за функция; о)


Оно было отправлено с известного спам-адреса: http://www.projecthoneypot.org/ip_84.19.186.171, но не было необходимости использовать это конкретное знание, чтобы пометить его как спам. Я собираю всевозможную информацию, такую ​​как IP-адреса, количество заявок и т. д. ... но, как вы можете видеть, самые явные признаки бот-подобного поведения — это не то, что вы могли бы догадаться.

Чтобы создать свой собственный... прочтите это: http://www.paulgraham.com/spam.html

person Community    schedule 05.10.2010