Blocos de blocos com o IIS 7.5 e 8.0

9

Eu gostaria de bloquear um bot com o IIS. Com o Apache, você pode adicionar um comando ao seu arquivo .htaccess, como descrito aqui . Como eu conseguiria isso com o IIS 7.5?

Atualizar

Além de responder abaixo, há um total de abordagens que descobri desde o lançamento desta pergunta:

  1. Opção de varredura de URL listada na resposta aceita.
  2. Definir uma regra de filtragem de solicitações (exemplo abaixo)
  3. Definir uma regra de regravação de URL (exemplo abaixo)

Solicitar regra de filtro

 <system.webServer>
    <security>
      <requestFiltering>
        <filteringRules>
          <filteringRule name="BlockSearchEngines" scanUrl="false" scanQueryString="false">
            <scanHeaders>
              <clear />
              <add requestHeader="User-Agent" />
            </scanHeaders>
            <appliesTo>
              <clear />
            </appliesTo>
            <denyStrings>
              <clear />
              <add string="YandexBot" />
            </denyStrings>
          </filteringRule>
        </filteringRules>
      </requestFiltering>
    </security>
    [...]
 </system.webServer>

Regra de regravação de URL

<rule name="RequestBlockingRule1" patternSyntax="Wildcard" stopProcessing="true">
                    <match url="*" />
                    <conditions>
                        <add input="{HTTP_USER_AGENT}" pattern="YandexBot" />
                    </conditions>
                    <action type="CustomResponse" statusCode="403" statusReason="Forbidden: Access is denied." statusDescription="Get Lost." />
                </rule>

No meu último projeto, acabei optando pela opção 2, pois ela é voltada para a segurança e baseia-se na varredura de URL integrada incorporada no IIS 7.

    
por Josh 22.02.2011 / 15:32

3 respostas

4

Normalmente, você usa o robots.txt. Ele funcionará em todos os bots bem comportados.

Para bots que não são bem comportados, muitas vezes há pouco que você possa fazer. Você pode limitar as contagens de conexões ou a largura de banda em seu firewall ou servidor da Web, mas os principais bots normalmente usam vários endereços IP. Limitar com base em strings user-agent geralmente não é uma boa idéia, já que são triviais para o bot falsificar, e bots que não se importam com o robots.txt têm uma tendência a falsificar as strings do useragent também. Ele funciona no caso específico em que o bot envia um agente de usuário correto, mas não obedece ao robots.txt.

Editar: Se você realmente deseja bloquear com base no useragent em vez de empurrá-lo de volta para o firewall ou similar, acho que a maneira mais fácil é usar o URLScan. Você escreve uma regra que se parece com isso:

[Options]
 RuleList=DenyYandex

[DenyYandex]
 DenyDataSection=Agents
 ScanHeaders=User-Agent

[Agents]
 Yandex
    
por 22.02.2011 / 15:50
9

Eu sei que essa é uma pergunta antiga, mas no IIS 7.5 você pode negar pelo agente do usuário se usar a Filtragem de Solicitações.

No IIS, acesse o site no qual você deseja aplicar o filtro e, no painel direito, clique no ícone Solicitação de filtragem . (você pode ter que habilitar esse recurso através do gerenciador de servidores).

Clique na guia Regras e, na lista à direita, selecione "Adicionar regra de filtragem"

Dê um nome a ele e, na seção Cabeçalhos de verificação , insira "User-Agent".

Você pode adicionar qualquer tipo de arquivo específico a ser bloqueado em Aplica-se a ou pode deixá-lo em branco para que se aplique a todos os tipos de arquivo.

Em Deny Strings , insira todas as strings do agente do usuário que você deseja bloquear. No caso desta questão, você colocaria "Yandex" aqui.

Confirmei estas alterações no chrome usando a extensão Switcher do agente do usuário .

    
por 12.01.2013 / 18:56
6

Para os rastreadores que não respeitam o Robots.txt, você pode usar o URL Rewrite no servidor para bloquear com base no agente do usuário, consulte: link

Here’s an easy way to block the main web crawlers – Google Bing and Yahoo – from indexing any site across an entire server. This is really useful if you push all your beta builds to a public facing server, but don’t want them indexed yet by the search engines.

  1. Install the IIS URL Rewrite Module.

  2. At the server level, add a request blocking rule. Block user-agent headers matching the regex: googlebot|msnbot|slurp.

Or, just paste this rule into “C:\Windows\System32\inetsrv\config\applicationHost.config”

<system.webServer>
   <rewrite>
      <globalRules>
         <rule name="RequestBlockingRule1" stopProcessing="true">
            <match url=".*" />
            <conditions>
               <add input="{HTTP_USER_AGENT}" pattern="googlebot|msnbot|slurp" />
            </conditions>
            <action type="CustomResponse" statusCode="403"
               statusReason="Forbidden: Access is denied."
               statusDescription="You do not have permission to view this page." />
         </rule>
      </globalRules>
   </rewrite>
</system.webServer>

This’ll block Google, Bing and Yahoo from indexing any site published on the server. To test it out, try the Firefox User Agent Switcher.

Para mais informações: link

    
por 23.02.2011 / 21:12

Tags