IIS 7.5 ve 8.0 ile Botları Engelle


11

IIS ile bir botu engellemek istiyorum. Apache ile .htaccess dosyanıza burada açıklandığı gibi bir komut ekleyebilirsiniz . Bunu IIS 7.5 ile nasıl başarabilirim?

Güncelleme

Aşağıdaki cevaba ek olarak, bu soruyu gönderdikten sonra keşfettiğim toplam yaklaşım var:

  1. Kabul edilen cevapta listelenen URL Tarama seçeneği.
  2. İstek Filtreleme kuralı tanımlama (aşağıdaki örnek)
  3. URL Yeniden Yazma kuralı tanımlama (aşağıdaki örnek)

Filtre Kuralı İste

 <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 Yeniden Yazma kuralı

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

Son projem için, güvenlik odaklı olduğundan ve IIS 7'de yerleşik tümleşik URL Taramasına dayandığından seçenek 2 ile devam ettim.

Yanıtlar:


4

Normalde robots.txt kullanırsınız. Tüm iyi kalpli botlarda çalışacaktır.

İyi davranmamış botlar için yapabileceğiniz çok az şey vardır. Güvenlik duvarınızda veya web sunucunuzda bağlantı sayılarını veya bant genişliğini sınırlayabilirsiniz, ancak büyük botlar genellikle birden fazla IP adresi kullanır. Kullanıcı aracısı dizelerini temel alan sınırlama genellikle iyi bir fikir değildir, çünkü botlar parodi için önemsizdir ve robots.txt ile ilgilenmeyen botlar da kullanışlı dizeleri taklit etme eğilimindedir. Bot doğru bir kullanıcı aracısı gönderdiğinde, ancak robots.txt dosyasına uymadığında belirli bir durumda çalışır.

Düzenleme: Eğer gerçekten güvenlik duvarınıza veya benzeri geri itmek yerine useragent dayalı engellemek istiyorsanız Ben en kolay yolu URLScan kullanmak olduğunu düşünüyorum. Şöyle bir kural yazıyorsunuz:

[Options]
 RuleList=DenyYandex

[DenyYandex]
 DenyDataSection=Agents
 ScanHeaders=User-Agent

[Agents]
 Yandex

2
Robots.txt yok sayar, ancak sürekli kullanıcı ajanı Yandex vardır Yandex engellemeye çalışıyorum.
Josh

11

Bunun eski bir soru olduğunu biliyorum, ancak İstek Filtreleme kullanırsanız IIS 7.5'te kullanıcı aracısı tarafından reddedebilirsiniz.

IIS'de, filtreyi uygulamak istediğiniz web sitesine gidin ve ardından sağ bölmede Filtreleme İste simgesini tıklatın . (bu özelliği sunucu yöneticisi aracılığıyla etkinleştirmeniz gerekebilir).

Kurallar sekmesini tıklayın ve ardından en sağdaki listede "Filtreleme Kuralı Ekle" yi seçin

Bir ad verin ve ardından Scan Headers ( Tarama Başlıkları) bölümüne "User-Agent" (Kullanıcı Aracısı) yazın.

Şunlara Uygulanır'da engellenecek belirli dosya türlerini ekleyebilir veya tüm dosya türlerine uygulanmasını sağlamak için boş bırakabilirsiniz.

In Dizeleri Reddet , engellemek istediğiniz kullanıcı aracısı dizeleri tüm girin. Bu soruya "Yandex" i buraya koyardınız.

Chrome'daki bu değişiklikleri User Agent Switcher uzantısını kullanarak onayladım .


6

Robots.txt dosyasına uymayan tarayıcılar için Kullanıcı Aracılarına dayalı olarak engellemek üzere sunucuda URL Yeniden Yazmayı kullanabilirsiniz, bkz: http://chrisfulstow.com/using-the-iis-7url-rewrite-module-to- blok tarayıcıları /

Aşağıda, ana web tarayıcılarının (Google Bing ve Yahoo) herhangi bir sitenin tüm bir sunucuda dizine eklenmesini engellemenin kolay bir yolu bulunmaktadır. Bu, tüm beta yapılarınızı herkese açık bir sunucuya aktarırsanız, ancak henüz arama motorları tarafından dizine eklenmesini istemiyorsanız gerçekten yararlıdır.

  1. IIS URL Yeniden Yazma Modülünü yükleyin.

  2. Sunucu düzeyinde, bir istek engelleme kuralı ekleyin. Normal ifade: googlebot | msnbot | slurp ile eşleşen kullanıcı aracı başlıklarını engelle.

Veya bu kuralı “C: \ Windows \ System32 \ inetsrv \ config \ applicationHost.config” dosyasına yapıştırmanız yeterlidir.

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

Bu, Google, Bing ve Yahoo'nun sunucuda yayınlanan herhangi bir siteyi dizine eklemesini engeller. Test etmek için Firefox Kullanıcı Aracısı Anahtarlayıcısını deneyin .

Daha fazla bilgi için: http://www.iis.net/download/URL


Yeniden yazma kuralları eklemek için applicationHost.config dosyasını güncellemenizi tavsiye etmiyorum iyi bir fikirdir - sadece web.config içinde değil mi?
Blakomen

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.