Обнаружение & # 39; стелс & # 39; веб-сканеры

Вопрос задан: 11 лет назад Последняя активность: 11 месяцев назад
up 106 down

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

11 ответов

Возможно, для Вашего проекта будут необходимы бесплатные векторные карты. На нашем сайте представлены карты для всех стран.

Реклама

up 15 down

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

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

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

up 14 down

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

Используйте хитрые URL и HTML:

<a href="//example.com/"> = http://example.com/ on http pages.
<a href="page&amp;&#x23;hash"> = page& + #hash

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

<a href="foo<!--bar-->"> (comment should not be removed)
<script>var haha = '<a href="bot">'</script>
<script>// <!-- </script> <!--><a href="bot"> <!-->
up 9 down

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

<a href="iamabot.script" style="display:none;">Don't click me!</a>

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

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

up 6 down

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

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

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

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

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

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

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

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

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

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

up 4 down

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

up 3 down

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

ADSARobot|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:[email protected]|Buddy|Bullseye|bumblebee|capture|CherryPicker|ChinaClaw|CICC|clipping|Collector|Copier|Crescent|Crescent\ Internet\ ToolPak|Custo|cyberalert|DA$|Deweb|diagem|Digger|Digimarc|DIIbot|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|Girafabot|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|psbot|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|Surfbot|SurfWalker|Szukacz|tAkeOut|tarspider|Teleport\ Pro|Templeton|TrueRobot|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|WISEbot|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/

up 2 down

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

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

up 1 down

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

По моему опыту, блокировщиками номер один нашего веб-сканера (который, конечно, использует IE или Firefox UA и не подчиняется robots.txt. Дух.) Являются сайты, намеренно размещающие вредоносные программы. Это боль, потому что сайт возвращается к человеку, который должен вручную загрузить сайт, классифицировать его и проверить на наличие вредоносных программ.

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

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

up 1 down

Люди обращаются к общим сканерам, но не к сканерам, специализирующимся на вашем сайте.

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

Лучшие системы используют ИИ (например, Linkedin) используют ИИ для решения этой проблемы.
Самым простым решением является запись парсеров журнала, которые анализируют IP-соединения и просто помещают их в черный список или обслуживают капчу, по крайней мере, временно.

например
если IP X виден каждые 2 секунды при подключении к foo.com/cars/*.html но не любые другие страницы - это, скорее всего, бот или голодный опытный пользователь.

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

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

up 1 down

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

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

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

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

up -1 down

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