IIS 7.5および8.0でブロックボット


11

IISでボットをブロックしたいと思います。Apacheを使用すると、ここで説明するように、コマンドを.htaccessファイルに追加できます。IIS 7.5でこれをどのように実現できますか?

更新

以下の回答に加えて、この質問を投稿してから発見したアプローチの合計があります。

  1. 受け入れられた回答にリストされているURLスキャンオプション。
  2. 要求フィルタリングルールを定義する(以下の例)
  3. URL書き換えルールを定義する(以下の例)

要求フィルタールール

 <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>

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>

私の最後のプロジェクトでは、セキュリティに焦点を当てており、IIS 7に組み込まれた統合URLスキャンに基づいているため、オプション2を使用しなくなりました。

回答:


4

通常、robots.txtを使用します。すべての行儀の良いボットで動作します。

うまく動作していないボットの場合、多くの場合、できることはほとんどありません。ファイアウォールまたはWebサーバーの接続数または帯域幅を制限できますが、通常、主要なボットは複数のIPアドレスを使用します。ユーザーエージェント文字列に基づいて制限することは、ボットがスプーフィングするのは簡単であり、robots.txtを気にしないボットもユーザーエージェント文字列をスプーフィングする傾向があるため、通常は良いアイデアではありません。ボットが正しいユーザーエージェントを送信する特定のケースで機能しますが、robots.txtには従いません。

編集:ファイアウォールなどにプッシュするのではなく、ユーザーエージェントに基づいて本当にブロックする場合は、URLScanを使用するのが最も簡単な方法だと思います。次のようなルールを作成します。

[Options]
 RuleList=DenyYandex

[DenyYandex]
 DenyDataSection=Agents
 ScanHeaders=User-Agent

[Agents]
 Yandex

2
私はrobots.txtを無視するYandexをブロックしようとしていますが、ユーザーエージェントには常にYandexが含まれています。
ジョシュ

11

これは古い質問ですが、IIS 7.5では、リクエストフィルタリングを使用する場合、ユーザーエージェントによって拒否できます。

IISで、フィルターを適用するWebサイトに移動し、右側のペインで[ フィルター要求 ]アイコンをクリックします。(サーバーマネージャーからこの機能を有効にする必要があります)。

[ ルール ]タブをクリックし、右端のリストに沿って[フィルタールールの追加]を選択します

名前を付けて、[ スキャンヘッダー]セクションに「User-Agent」と入力します。

[適用先]でブロックする特定のファイルタイプを追加するか、空白のままにしてすべてのファイルタイプに適用することができます。

[ 拒否文字列]に、ブロックするすべてのユーザーエージェント文字列を入力します。この質問の場合、ここに「Yandex」と入力します。

User Agent Switcher拡張機能を使用して、これらの変更をChromeで確認しました。


6

Robots.txtを尊重しないクローラーについては、サーバー上のURL書き換えを使用して、ユーザーエージェントに基づいてブロックできます。http//chrisfulstow.com/using-the-iis-7url-rewrite-module-to-を参照して くださいブロッククローラー/

メインのWebクローラーであるGoogle BingとYahooがサーバー全体のサイトをインデックスに登録するのをブロックする簡単な方法を次に示します。これは、すべてのベータビルドを公開サーバーにプッシュしますが、検索エンジンによってまだインデックスに登録されたくない場合に非常に便利です。

  1. IIS URL書き換えモジュールをインストールします。

  2. サーバーレベルで、要求ブロックルールを追加します。正規表現googlebot | msnbot | slurpに一致するユーザーエージェントヘッダーをブロックします。

または、このルールを「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>

これにより、Google、Bing、Yahooがサーバー上で公開されているサイトのインデックス作成をブロックします。テストするには、Firefox User Agent Switcherを試してください。

詳細情報:http : //www.iis.net/download/URLRewrite


書き換えルールを追加するためにapplicationHost.configを更新することをお勧めしますか?
ブラコメン

2016年から、これもあります:saotn.org/hackrepair-bad-bots-htaccess-web-config-iis
Dawesi
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.