Какие есть варианты обнаружения веб-сканеров, которые не хотят быть обнаруженными?
(Я знаю, что методы обнаружения листинга позволят умному программисту-невидимке сделать лучшего паука, но я не думаю, что мы когда-либо сможем блокировать умные стелс-сканеры, только те, которые делают ошибки.)
Я не говорю о хороших сканерах, таких как googlebot и Yahoo! Хлюпать. Считаю бота хорошим, если он:
- идентифицирует себя как бот в строке пользовательского агента
- читает robots.txt (и подчиняется ему)
Я говорю о плохих сканерах, которые прячутся за обычными пользовательскими агентами, используют мою полосу пропускания и никогда не дают мне ничего взамен.
Есть несколько лазеек, которые можно создать в обновленном списке (спасибо Крису, gs) :
- Добавление каталога, только указанного (помеченного как запрещенный) в robots.txt,
- Добавление невидимых ссылок (возможно, отмеченных как rel = "nofollow"?),
- style = "display: none;" по ссылке или родительскому контейнеру
- помещается под другим элементом с более высоким z-index
- определить, кто не понимает заглавные буквы,
- определить, кто пытается отправлять ответы, но всегда не вводит Captcha.
- обнаруживать GET-запросы к POST-ресурсам
- определить интервал между запросами
- определить порядок запрашиваемых страниц
- определить, кто (последовательно) запрашивает ресурсы https через http
- определить, кто не запрашивает файл изображения (это в сочетании со списком пользовательских агентов известных браузеров с поддержкой изображений работает на удивление хорошо)
Некоторые ловушки срабатывают как «хорошие», так и «плохие» боты. вы можете объединить их с белым списком:
- Это запускает ловушку
- Это запрос
robots.txt
? - Он не запускает другую ловушку, потому что подчиняется
robots.txt
Еще одна важная вещь:
подумайте, пожалуйста, о слепых людях, использующих программы чтения с экрана: дайте людям возможность связаться с вами или введите код (без изображения), чтобы продолжить просмотр.
Какие существуют методы автоматического обнаружения поисковых роботов, пытающихся маскироваться под обычных посетителей.
Обновление
Вопрос не в том, как поймать каждого краулера. Вопрос в том, как увеличить вероятность обнаружения краулера.
Некоторые пауки действительно хороши и действительно разбирают и понимают html, xhtml, css javascript, скрипт VB и т. Д.
У меня нет иллюзий: я не смогу победить их.
Однако вы удивитесь, насколько глупы некоторые краулеры. Лучшим примером глупости (на мой взгляд) является приведение всех URL-адресов к нижнему регистру перед их запросом.
А еще есть целая куча сканеров, которые просто «недостаточно хороши», чтобы избежать различных лазеек.
источник
См. Project Honeypot - они устанавливают ловушки для ботов в большом масштабе (и имеют DNSRBL со своими IP-адресами).
Используйте хитрые URL-адреса и HTML:
В HTML вы можете использовать множество приемов с комментариями, элементами CDATA, сущностями и т. Д.:
источник
Простое решение - создать ссылку и сделать ее невидимой.
Конечно, вы должны ожидать, что некоторые люди, просматривающие исходный код, перейдут по этой ссылке, чтобы увидеть, куда она ведет. Но вы можете предоставить этим пользователям капчу ...
Разумеется, действительные сканеры также будут переходить по ссылке. Но вы не должны реализовывать rel = nofollow, а ищите признак действительного краулера. (как пользовательский агент)
источник
Вы не указали одну вещь, которая обычно используется для обнаружения плохих поисковых роботов.
Скорость поиска, хорошие поисковые роботы будут разбивать свои обращения, чтобы не заваливать сайт запросами. Плохие сделают одно из трех:
Кроме того, некоторые программы автономного просмотра будут поглощать несколько страниц, я не уверен, какой порог вы хотите использовать, чтобы начать блокировку по IP-адресу.
Этот метод также будет обнаруживать программы зеркалирования, такие как fmirror или wget.
Если бот рандомизирует временной интервал, вы можете проверить, просматриваются ли ссылки последовательно или в глубину, или вы можете увидеть, просматривает ли бот огромное количество текста (как в словах для чтения) в слишком короткий период времени. Некоторые сайты также ограничивают количество запросов в час.
На самом деле, где-то я слышал идею, я не помню где, что если пользователь получает слишком много данных в килобайтах, ему может быть предложена капча с просьбой доказать, что он не бот. Я никогда не видел, чтобы это реализовано.
Обновление о скрытии ссылокЧто касается скрытия ссылок, вы можете поместить один div под другим с помощью CSS (поместив его первым в порядке отрисовки) и, возможно, установив z-порядок. Бот не мог проигнорировать это, не проанализировав весь ваш javascript, чтобы увидеть, является ли это меню. В некоторой степени ссылки внутри невидимых элементов DIV также нельзя игнорировать, если бот не проанализирует весь javascript.
Если довести эту идею до конца, неназванный javascript, который потенциально мог бы отображать скрытые элементы, мог бы обмануть подмножество ботов для синтаксического анализа javascript. И это не так уж много работы.
источник
Я слышал, что один простой метод обнаружения ботов для форм - это метод скрытого ввода. Если вы пытаетесь защитить форму, введите в нее данные с идентификатором, который выглядит вполне допустимым. Затем используйте css во внешнем файле, чтобы скрыть его. Или, если вы действительно параноик, настройте что-то вроде jquery, чтобы скрыть поле ввода при загрузке страницы. Если вы сделаете это правильно, я полагаю, что боту будет очень сложно понять. Вы знаете, что у этих ботов есть такая природа, чтобы заполнять все на странице, особенно если вы дадите своему скрытому вводу идентификатор что-то вроде id = "fname" и т. Д.
источник
На самом деле не так просто следить за хорошими строками пользовательского агента. Версии браузеров приходят и уходят. Составление статистики о строках пользовательского агента по разному поведению может выявить интересные вещи.
Я не знаю, насколько это можно автоматизировать, но, по крайней мере, это одна особенность.
источник
Не тестировалось, но вот хороший список пользовательских агентов, из которых вы можете сделать регулярное выражение. Могу помочь вам в этом:
Взято из: http://perishablepress.com/press/2007/10/15/ultimate-htaccess-blacklist-2-compressed-version/
источник
Вы также можете проверить рефералов. Отсутствие реферала может вызвать подозрение на бота. Плохой переход означает, что это не браузер.
Я бы не стал этого делать. Вы можете попасть в черный список Google из-за черного SEO :)
источник
В настоящее время я работаю в компании, которая сканирует веб-сайты для их классификации. Мы также проверяем сайты на наличие вредоносных программ.
По моему опыту, блокировщики номер один нашего поискового робота (который, конечно, использует IE или Firefox UA и не подчиняется robots.txt. Да) - это сайты, на которых намеренно размещено вредоносное ПО. Это неприятно, потому что сайт затем возвращается к человеку, который должен вручную загрузить сайт, классифицировать его и проверить на наличие вредоносных программ.
Я просто говорю, что, блокируя поисковые роботы, вы попадаете в плохую компанию.
Конечно, если они ужасно грубы и поглощают тонны вашей пропускной способности, это другое дело, потому что тогда у вас есть веская причина.
источник
Люди продолжают обращаться к обычным поисковым роботам, но не к поисковым роботам, специализирующимся на вашем веб-сайте.
Я пишу стелс-краулеры, и если они построены индивидуально, никакое количество медовых горшков или скрытых ссылок не окажет никакого влияния - единственный реальный способ обнаружить специализированных краулеров - это изучить шаблоны соединений.
Лучшие системы используют ИИ (например, Linkedin) используют ИИ для решения этой проблемы.
Самым простым решением является запись парсеров журналов, которые анализируют IP-соединения и просто заносят эти IP-адреса в черный список или обслуживают капчу, по крайней мере, временно.
например,
если IP X виден каждые 2 секунды при подключении к
foo.com/cars/*.html
другим страницам, но не к другим страницам - это, скорее всего, бот или голодный опытный пользователь.В качестве альтернативы существуют различные проблемы с javascript, которые действуют как защита (например, система защиты от ботов Cloudflare), но они легко решаемы, вы можете написать что-то свое, и это может быть достаточно сдерживающим фактором, чтобы сделать это не стоящим усилий для краулера.
Однако вы должны задать вопрос, готовы ли вы давать ложные срабатывания законным пользователям и создавать для них неудобства, чтобы предотвратить трафик ботов. Защита общедоступных данных - невозможный парадокс.
источник
Короткий ответ: если программист среднего уровня знает, что он делает, вы не сможете обнаружить краулера, не затронув реального пользователя. Имея свою информацию публично, вы не сможете защитить ее от краулера ... это как первая поправка справа :)
источник