9
votes

Utilisation de web.config pour interdire les agents utilisateur

est-il possible d'interdire certains agents utilisateur directement auprès de web.config? Certains robots ne semblent pas suivre des robots.txt et pour éviter la charge inutile de serveur (et un spam de fichiers de journal), j'aimerais empêcher certaines classes de demande (en particulier sur la base de l'agent utilisateur ou une autre adresse IP) de la procédure .

Points bonus Si vous savez s'il est similaire possible d'empêcher de telles demandes d'être connectées entièrement au fichier journal de IIS. (c'est-à-dire si-demande-match, transmettre à / dev / null, si vous obtenez ma signification).

Une solution pour Win2003 serait préférable, mais c'est un problème récurrent - s'il y a une solution propre pour IIS7 mais pas IIS6, je serais heureux de le savoir.

EDIT: Désolé 'surtout la question incomplète précédente, j'avais onglet + entré accidentellement.


0 commentaires

3 Réponses :


-2
votes

Ne pensez pas que vous puissiez le faire à partir de web.config (autorisation dans web.config est pour les utilisateurs, pas bots). Votre meilleur choix serait une sorte de filtre ISAPI personnalisé pour IIS même. Il y a un blog à ce sujet ici . Bonne chance!


0 commentaires

13
votes

Ceci peut être fait assez facilement à l'aide du module Urrrewrite dans IIS7. Mais je ne sais vraiment pas si cela empêchera ces demandes d'être enregistrées.

 <rewrite> 
  <rules> 
    <rule name="Ban user-agent RogueBot" stopProcessing="true"> 
      <match url=".*" /> 
      <conditions> 
        <add input="{HTTP_USER_AGENT}" pattern="RogueBotName" /> 
        <add input="{MyPrivatePages:{REQUEST_URI}}" pattern="(.+)" /> 
      </conditions> 
      <action type="AbortRequest" /> 
    </rule> 
  </rules> 
  <rewriteMaps> 
    <rewriteMap name="MyPrivatePages"> 
      <add key="/PrivatePage1.aspx" value="block" /> 
      <add key="/PrivatePage2.aspx" value="block" />
      <add key="/PrivatePage3.aspx" value="block" /> 
    </rewriteMap> 
  </rewriteMaps> 
</rewrite>


4 commentaires

Eh bien, le site est assez petit de sorte que le journal IIS ne soit pas un perf. problème; C'est surtout le bruit que je ne voudrais pas éviter - mais cette solution est exactement ce que j'espérais - un module configurable pouvant abandonner certaines demandes. Je vais regarder dans ça, merci!


Savez-vous s'il est possible de créer une règle pour plusieurs robots?


@UPTHCREEKE C'est un motif, tant que vous avez une expression régulière qui identifie tous les robots en question que vous souhaitez rechercher, vous pouvez le brancher. Je ferais attention à ce que cela semble légèrement dangereux pour avoir tué un trafic normal si vous n'êtes pas prudent.


@ Upthecreek modifiant le code ci-dessus comme ceci couvrirait la plupart des cas. Évidemment, testez soigneusement avant de la mettre en direct: Bot | Googlebot | Crawler | Spider | Robot | | Crawling "/>



4
votes

Vous pouvez écrire un ASP.NET HTTPModule personnalisé comme je l'ai fait pour mon site pour interdire des robots voleurs. Voici le code: xxx pré>

Vous devez l'enregistrer dans web.config et spécifier l'expression régulière à utiliser pour correspondre aux chaînes d'agent utilisateur. Voici un que j'ai utilisé pour interdire la circulation MSNBOT / 1.1: P>

<configuration> 
    <appSettings>
        <add key="UserAgentBasedRedirecter.UserAgentsRegex" value="^msnbot/1.1" />
    </appSettings>
...
    <system.web>
        <httpModules>
            <add name="UserAgentBasedRedirecter" type="Andies.Web.Traffic.UserAgentBasedRedirecter, Andies.Web" />
        </httpModules>
    </system.web>
</configuration>


2 commentaires

Cela ressemble encore plus à ce que je cherchais :-) Merci! Vous savez-vous si cela empêche les demandes d'être connectées? Probablement pas, non?


Je n'ai pas vérifié, mais j'imagine que voir que cela a déjà été passé par le pipeline ASP.NET, c'est déjà dans les journaux