Алгоритмы, используемые для ловли роботов - PullRequest
2 голосов
/ 19 января 2012

Какой алгоритм используют веб-сайты, включая stackexchange, для ловли роботов?Что заставляет их иногда терпеть неудачу и предъявлять человеческое подтверждение обычным пользователям?Что бы вы порекомендовали веб-приложениям и веб-сайтам, работающим на PHP, чтобы остановить атаки роботов и ботов и даже кражу контента?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 19 января 2012

Проверьте http://www.captcha.net/ на наличие хороших и простых инструментов для проверки человеком.

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

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

Вы не сможете пропустить всеботы, но вы сможете реализовать уровни безопасности, которые будут останавливать часть ботов.

Несколько советов и подсказок;

  • Используйте капчи для проверки человеком, но не используйте их слишком много, так как они утомят пользователей.
  • Вы можетесделать проверку электронной почты с помощью капчи и потребовать логин для вашего контента (если это не отпугивает слишком много пользователей).Или рассмотрите возможность предоставления некоторой части контента бесплатно и требуйте регистрации для полного контента.
  • Регулярно проверяйте фрагменты своего контента на других сайтах (через Google, возможно, с помощью API Google) и подайте в суд на DMCA.если они явно украли (не цитируются!) ваш контент.
  • Ограничьте скорость, с которой отдельные клиенты могут отправлять запросы на ваш сайт.Боты будут царапать часто и быстро.Запросы контента чаще, чем раз в секунду, уже много для пользователей.Есть серверные инструменты, которые могут сделать это, например.проверить http://www.modsecurity.org/

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

1 голос
/ 30 ноября 2012

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

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

  • Движение мыши: робот, скорее всего, не будет использовать мышь и, следовательно, не будет генерировать события движения мыши в браузере.Вы можете подготовить функцию javascript, скажем «onBodyMouseMove ()», и вызывать ее всякий раз, когда мышь перемещается по всей области тела страницы.Если эта функция вызывается, подсчитайте +1 в счетчике сеанса.

  • Javascript: некоторые роботы не будут тратить время на запуск JavaScript (т. Е. Curl, wget, axel и другая командная строкаинструменты), так как они в основном отправляют конкретные запросы, которые возвращают полезный вывод.Вы можете подготовить функцию, которая будет вызываться после загрузки страницы и считать +1 в счетчике сеанса.

  • Невидимые ссылки: роботы-гусеницы - это засасывающие машины, которые не заботятся о содержимомвеб-сайта.Они предназначены для того, чтобы нажимать на все возможные ссылки и высасывать все содержимое в зеркальном местоположении.Вы можете вставить невидимые ссылки где-нибудь на вашей веб-странице - например, несколько nbsp;пробелы внизу страницы, окруженные якорным тегом.Люди никогда не увидят эту ссылку, но вы получите запрос по ней, сосчитайте +1 в счетчике сеанса.

  • CSS, изображения и другие визуальные компоненты: роботы, скорее всего, будут игнорироватьCSS и изображения, потому что они не заинтересованы в предоставлении веб-страницы для просмотра.Вы можете скрыть ссылку внутри URL-адреса, оканчивающегося на * .css или * .jpg (вы можете использовать переписывание Apache или отображения сервлетов для Java).Если к этим конкретным ссылкам обращаются, то, скорее всего, браузер загружает CSS и JPG для просмотра.

ПРИМЕЧАНИЕ: * .css, * .js, * .jpg и т. Д. Обычно загружаются толькоодин раз за страницу в сеансе.Вам нужно добавить уникальный счетчик в конце, чтобы браузер перезагружал эти ссылки каждый раз, когда запрашивается страница.

Как только вы соберете всю эту информацию в течение сеанса в течение нескольких запросов, вы можете сделатьутверждение.Например, если вы не видите активности перемещения javascript, css или мыши, вы можете предположить, что это бот.Это зависит от вас, чтобы эти счетчики учитывались в соответствии с вашими потребностями ... поэтому вы можете программировать их на основе этих переменных любым удобным для вас способом.Если вы решите, что какой-то клиент является роботом, вы можете заставить его решить некоторую капчу, прежде чем продолжить выполнение дальнейших запросов.

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

...