Обнаружение скрытых веб-сканеров

Какие существуют опции для обнаружения веб-сканеров, которые не хотят быть обнаруженными?

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

Я не говорю о хороших искателях, таких как googlebot и Yahoo! Slurp. Я считаю, что бот хорош, если он:

  1. идентифицирует себя как бот в строке пользовательского агента
  2. читает файл robots.txt (и подчиняется ему)

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

Есть некоторые ловушки, которые можно построить обновленный список (спасибо Chris, gs) :

  1. Добавление каталога, указанного только в списке (помечено как запрещение) в файле robots.txt,
  2. Добавление невидимых ссылок (возможно, отмеченных как rel = “nofollow”?),
    • style = “display: none;” по ссылке или родительскому контейнеру
    • помещенный под другим элементом с более высоким z-индексом
  3. определить, кто не понимает капитализацию,
  4. определить, кто пытается публиковать ответы, но всегда отказывается от Captcha.
  5. обнаруживать запросы GET для ресурсов только POST
  6. определить интервал между запросами
  7. определить порядок запрошенных страниц
  8. определить, кто (последовательно) запрашивает https-ресурсы через http
  9. определить, кто не запрашивает файл изображения (это в сочетании со списком пользовательских агентов известных браузеров, способных работать с изображениями, работает на удивление хорошо)

Некоторые ловушки будут срабатывать как «хорошими», так и «плохими» ботами. вы можете объединить их с белым списком:

  1. Это вызывает ловушку
  2. Он запрашивает файл robots.txt ?
  3. Это не приведет к запуску другой ловушки, потому что она подчиняется robots.txt

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

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

Обновить
Вопрос не в следующем: как я поймаю каждого искателя. Возникает вопрос: как я могу максимизировать вероятность обнаружения искателя.

Некоторые пауки действительно хороши и на самом деле разбирают и понимают html, xhtml, css javascript, скрипт VB и т. Д. …
У меня нет иллюзий: я не смогу их победить.

Однако вы были бы удивлены, насколько глупые некоторые искатели. С лучшим примером глупости (по моему мнению) было: отбросить все URL-адреса до нижнего регистра, прежде чем запрашивать их.

И тогда есть целая куча гусениц, которые просто «недостаточно хороши», чтобы избежать различных ловушек.

    См. « Проект Honeypot» – они устанавливают бот-ловушки в больших масштабах (и имеют DNSRBL с их IP-адресами).

    Используйте сложные URL-адреса и HTML:

      = http:https://example.com/ on http pages.  = page& + #hash 

    В HTML вы можете использовать множество трюков с комментариями, элементами CDATA, объектами и т. Д .:

      (comment should not be removed)     

    Некоторое время назад я работал с небольшой хостинговой компанией, чтобы помочь им реализовать решение. В системе, которую я разработал, были рассмотрены журналы веб-серверов для чрезмерной активности с любого заданного IP-адреса и выработаны правила брандмауэра для блокировки преступников. Он включал белые списки IP-адресов / диапазонов на основе http://www.iplists.com/ , которые затем автоматически обновлялись по мере необходимости, проверяя заявленные строки пользовательского агента и, если клиент утверждал, что он является законным пауком, но не на whitelist, он выполнял поиск DNS / обратного DNS, чтобы проверить, что IP-адрес источника соответствует заявленному владельцу бота. Как отказоустойчивость, эти действия были отправлены администратору по электронной почте, а также ссылки на черный / белый список адреса в случае неправильной оценки.

    Я не разговаривал с этим клиентом через 6 месяцев или около того, но, как я слышал, система работала довольно эффективно.

    Боковой момент: если вы подумываете о создании аналогичной системы обнаружения, основанной на ограничении скорости нажатия, обязательно используйте как минимум одноминутные (и предпочтительно не менее пяти минут) итоговые значения. Я вижу, что многие люди говорят о таких схемах, которые хотят заблокировать всех, кто занимает 5-10 ударов за секунду, что может генерировать ложные срабатывания на страницах с тяжелыми изображениями (если только изображения не исключены из подсчета) и генерирует ложные когда кто-то вроде меня находит интересный сайт, который он хочет прочитать, поэтому он открывает все ссылки на вкладках для загрузки в фоновом режиме, когда он читает первый.

    Простое решение – создать ссылку и сделать ее невидимой

     Don't click me! 

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

    Разумеется, действительные сканеры также будут следовать по ссылке. Но вы не должны реализовывать rel = nofollow, но ищите знак действительного искателя. (например, пользовательский агент)

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

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

    1. удалять последовательные ссылки один за другим
    2. нажимают последовательные ссылки в некоторой последовательности параллелей (2 или более за раз).
    3. удалять последовательные ссылки с фиксированным интервалом

    Кроме того, некоторые автономные браузеры будут обрабатывать несколько страниц, я не уверен, какой порог вы хотите использовать, чтобы начать блокировку по IP-адресу.

    Этот метод также поймает программы зеркалирования, такие как fmirror или wget.

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

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

    Обновление сокрытия ссылок

    Что касается скрытых ссылок, вы можете поместить div под другим, с CSS (сначала поместить его в порядке рисования) и, возможно, установить z-порядок. Бот не мог игнорировать это, не анализируя весь ваш javascript, чтобы увидеть, является ли это меню. В какой-то степени ссылки внутри невидимых элементов DIV также не могут быть проигнорированы без бота, анализирующего весь javascript.

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

    Один простой метод обнаружения бота, который я слышал о формах, – это метод скрытого ввода. Если вы пытаетесь защитить форму, введите вход в форму с идентификатором, который выглядит полностью законным. Затем используйте css во внешнем файле, чтобы скрыть его. Или, если вы действительно параноик, настройте что-то вроде jquery, чтобы скрыть поле ввода при загрузке страницы. Если вы сделаете это правильно, я думаю, что боту будет сложно понять. Вы знаете, что у этих ботов есть природа, чтобы заполнить все на странице, особенно если вы дадите свой скрытый ввод id чего-то вроде id = “fname” и т. Д.

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

     ADSARohttps://stackoverflow.com/questions/233192/detecting-stealth-web-crawlers/bot|ah-ha|almaden|aktuelles|Anarchie|amzn_assoc|ASPSeek|ASSORT|ATHENS|Atomz|attach|attache|autoemailspider|BackWeb|Bandit|BatchFTP|bdfetch|big.brother|BlackWidow|bmclient|Boston\ Project|BravoBrian\ SpiderEngine\ MarcoPolo|Bot\ mailto:crafthttps://stackoverflow.com/questions/233192/detecting-stealth-web-crawlers/[email protected]|Buddy|Bullseye|bumblebee|capture|CherryPicker|ChinaClaw|CICC|clipping|Collector|Copier|Crescent|Crescent\ Internet\ ToolPak|Custo|cyberalert|DA$|Deweb|diagem|Digger|Digimarc|DIIhttps://stackoverflow.com/questions/233192/detecting-stealth-web-crawlers/bot|DISCo|DISCo\ Pump|DISCoFinder|Download\ Demon|Download\ Wonder|Downloader|Drip|DSurf15a|DTS.Agent|EasyDL|eCatch|ecollector|[email protected]\.net|Email\ Extractor|EirGrabber|email|EmailCollector|EmailSiphon|EmailWolf|Express\ WebPictures|ExtractorPro|EyeNetIE|FavOrg|fastlwspider|Favorites\ Sweeper|Fetch|FEZhead|FileHound|FlashGet\ WebWasher|FlickBot|fluffy|FrontPage|GalaxyBot|Generic|Getleft|GetRight|GetSmart|GetWeb!|GetWebPage|gigabaz|Girafahttps://stackoverflow.com/questions/233192/detecting-stealth-web-crawlers/bot|Go\!Zilla|Go!Zilla|Go-Ahead-Got-It|GornKer|gotit|Grabber|GrabNet|Grafula|Green\ Research|grub-client|Harvest|[email protected]|hloader|HMView|HomePageSearch|http\ generic|HTTrack|httpdown|httrack|ia_archiver|IBM_Planetwide|Image\ Stripper|Image\ Sucker|imagefetch|IncyWincy|Indy*Library|Indy\ Library|informant|Ingelin|InterGET|Internet\ Ninja|InternetLinkagent|Internet\ Ninja|InternetSeer\.com|Iria|Irvine|JBH*agent|JetCar|JOC|JOC\ Web\ Spider|JustView|KWebGet|Lachesis|larbin|LeechFTP|LexiBot|lftp|libwww|likse|Link|Link*Sleuth|LINKS\ ARoMATIZED|LinkWalker|LWP|lwp-trivial|Mag-Net|Magnet|Mac\ Finder|Mag-Net|Mass\ Downloader|MCspider|Memo|Microsoft.URL|MIDown\ tool|Mirror|Missigua\ Locator|Mister\ PiX|MMMtoCrawl\/UrlDispatcherLLL|^Mozilla$|Mozilla.*Indy|Mozilla.*NEWT|Mozilla*MSIECrawler|MS\ FrontPage*|MSFrontPage|MSIECrawler|MSProxy|multithreaddb|nationaldirectory|Navroad|NearSite|NetAnts|NetCarta|NetMechanic|netprospector|NetResearchServer|NetSpider|Net\ Vampire|NetZIP|NetZip\ Downloader|NetZippy|NEWT|NICErsPRO|Ninja|NPBot|Octopus|Offline\ Explorer|Offline\ Navigator|OpaL|Openfind|OpenTextSiteCrawler|OrangeBot|PageGrabber|Papa\ Foto|PackRat|pavuk|pcBrowser|PersonaPilot|Ping|PingALink|Pockey|Proxy|pshttps://stackoverflow.com/questions/233192/detecting-stealth-web-crawlers/bot|PSurf|puf|Pump|PushSite|QRVA|RealDownload|Reaper|Recorder|ReGet|replacer|RepoMonkey|Robozilla|Rover|RPT-HTTPClient|Rsync|Scooter|SearchExpress|searchhippo|searchterms\.it|Second\ Street\ Research|Seeker|Shai|Siphon|sitecheck|sitecheck.internetseer.com|SiteSnagger|SlySearch|SmartDownload|snagger|Snake|SpaceBison|Spegla|SpiderBot|sproose|SqWorm|Stripper|Sucker|SuperBot|SuperHTTP|Surfhttps://stackoverflow.com/questions/233192/detecting-stealth-web-crawlers/bot|SurfWalker|Szukacz|tAkeOut|tarspider|Teleport\ Pro|Templeton|TrueRohttps://stackoverflow.com/questions/233192/detecting-stealth-web-crawlers/bot|TV33_Mercator|UIowaCrawler|UtilMind|URLSpiderPro|URL_Spider_Pro|Vacuum|vagabondo|vayala|visibilitygap|VoidEYE|vspider|Web\ Downloader|w3mir|Web\ Data\ Extractor|Web\ Image\ Collector|Web\ Sucker|Wweb|WebAuto|WebBandit|web\.by\.mail|Webclipping|webcollage|webcollector|WebCopier|[email protected]|webdevil|webdownloader|Webdup|WebEMailExtrac|WebFetch|WebGo\ IS|WebHook|Webinator|WebLeacher|WEBMASTERS|WebMiner|WebMirror|webmole|WebReaper|WebSauger|Website|Website\ eXtractor|Website\ Quester|WebSnake|Webster|WebStripper|websucker|webvac|webwalk|webweasel|WebWhacker|WebZIP|Wget|Whacker|whizbang|WhosTalking|Widow|WISEhttps://stackoverflow.com/questions/233192/detecting-stealth-web-crawlers/bot|WWWOFFLE|x-Tractor|^Xaldon\ WebSpider|WUMPUS|Xenu|XGET|Zeus.*Webster|Zeus [NC] 

    Снято с: http://perishablepress.com/press/2007/10/15/ultimate-htaccess-blacklist-2-compressed-version/

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

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

    Вы также можете проверить рефералов. Никакой реферал не может поднять подозрение бота. Плохое обращение означает, конечно, что это не браузер.

    Добавление невидимых ссылок (возможно, отмеченных как rel = “nofollow”?),

     * style="display: none;" on link or parent container * placed underneath another element with higher z-index 

    Я бы не сделал этого. Вы можете попасть в черный список Google для черной шляпы SEO 🙂

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

    По моему опыту, блокировщики номер один нашего поискового робота (который, конечно же, использует IE или Firefox UA и не подчиняется rohttps://stackoverflow.com/questions/233192/detecting-stealth-web-crawlers/bots.txt. Duh.) – это сайты, умышленно размещающие вредоносное ПО. Это боль, потому что сайт затем возвращается к человеку, которому приходится вручную загружать сайт, classифицировать его и проверять его на наличие вредоносного ПО.

    Я просто говорю : блокируя веб-сканеров, вы ставите себя в какую-то плохую компанию.

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

    Interesting Posts

    Компилятор ac / c ++ оптимизирует постоянные деления по значению силы двух в сдвигах?

    Инструмент сборки Gradle не может найти play-services-tasks.aar? Зачем?

    Отправка файлов с использованием HTTP POST в c #

    Где мое пространство имен System.Numerics?

    Как получить URL-адрес реферера в действии ASP.NET MVC?

    Ли FileVault2 на OSX Lion шифрует разделы bootcamp?

    Переключить «Перерыв при вызове исключения». Использование макроса или комбинации клавиш

    сравнение баз данных и генерация SQL-скрипта с использованием Liquibase

    Как динамически назначать свойства объекту в TypeScript?

    Почему tracert показывает частный IP-адрес сразу после моего маршрутизатора, хотя у него есть общедоступный IP-адрес?

    Получение заданных значений узла из XML-документа

    Что такое руководства по вычитанию шаблонов и когда мы должны их использовать?

    Ошибка сканера с nextInt ()

    Возможно ли аннулировать сеанс безопасности весны?

    Убить слишком много для драйверов ATI?

    Давайте будем гением компьютера.