Как проверить, что мой веб-сайт доступен с помощью сканера? - PullRequest
2 голосов
/ 27 февраля 2011

как проверить, обращаются ли к определенной странице из сканера или из скрипта, который запускает непрерывные запросы?Мне нужно убедиться, что сайт доступен только через веб-браузер.Спасибо.

Ответы [ 3 ]

2 голосов
/ 27 февраля 2011

Этот вопрос - отличное место для начала: Обнаружение веб-сканеров 'stealth'

Исходное сообщение:

Для разработки решения потребуется немного времени.

Я могу сразу подумать о трех вещах, которые нужно искать:

Один, пользовательский агент.Если паук google или bing или что-то еще, он идентифицирует себя.

Два, если паук злонамеренный, он, скорее всего, будет эмулировать заголовки обычного браузера.Отпечатайте его, если это IE.Используйте JavaScript, чтобы проверить наличие активного объекта X.

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

1 голос
/ 12 сентября 2011

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

Я решил проблему следующими способами:

  • Во-первых, я использовал свойство HttpBrowserCapabilities.Crawler из .NET Framework (начиная с 2.0), которое указывает, является ли браузер поисковым механизмом веб-искателя. Вы можете получить к нему доступ из любого места в коде:

    • ASP.NET C # код позади:

      bool isCrawler = HttpContext.Current.Request.Browser.Crawler;
    • ASP.NET HTML:

      Is crawler? = <%=HttpContext.Current.Request.Browser.Crawler %>
    • ASP.NET Javascript:

      <script type="text/javascript">  
      var isCrawler = <%=HttpContext.Current.Request.Browser.Crawler.ToString().ToLower() %>  
      </script>

    Проблема этого подхода в том, что он не на 100% надежен против неопознанных или замаскированных сканеров, но, возможно, он полезен в вашем случае.

  • После этого мне нужно было найти способ различать автоматизированных роботов (сканеры, скребки экрана и т. Д.) И людей, и я понял, что решение требует некоторой интерактивности, такой как нажатие кнопки. Что ж, некоторые сканеры обрабатывают javascript , и совершенно очевидно, что они будут использовать событие onclick элемента button , но только если это не интерактивный элемент, такой как DIV . Ниже приведен код HTML / Javascript, который я использовал в своем веб-приложении www.so-much-to-do.com для реализации этой функции:

    <div  
    class="all rndCorner"  
    style="cursor:pointer;border:3;border-style:groove;text-align:center;font-size:medium;font-weight:bold"  
    <em><strong>onclick="$TodoApp.$AddSampleTree()"</strong></em>>  
    Please click here to create your own set of sample tasks to do  
    </div>

    Этот подход до сих пор работал безупречно, хотя сканеры можно было бы изменить на более умные, возможно, после прочтения этой статьи: D

1 голос
/ 27 февраля 2011

Вы можете использовать файл robots.txt, чтобы заблокировать доступ к сканерам, или вы можете использовать javascript, чтобы обнаружить агент браузера и переключаться в зависимости от этого. Если я понял первый вариант более уместен, так:

User-agent: *
Disallow: /

Сохраните это как robots.txt в корне сайта, и никакая автоматизированная система не должна проверять ваш сайт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...