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

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

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

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

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

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

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

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

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

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

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

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

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

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

У меня нет иллюзий: я не смогу их победить.

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

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

Ответ 1

Смотрите Project 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"> <!-->

Ответ 2

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

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

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

Ответ 3

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

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

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

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

Ответ 4

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

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

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

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

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

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

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

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

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

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

Ответ 5

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

Ответ 6

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

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/

Ответ 7

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

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

Ответ 8

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

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

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

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

Ответ 9

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

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

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

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