Block Bots dengan IIS 7.5 dan 8.0

11

Saya ingin memblokir bot dengan IIS. Dengan Apache Anda dapat menambahkan perintah ke file .htaccess Anda, seperti diuraikan di sini . Bagaimana saya mencapai ini dengan IIS 7.5?

Memperbarui

Selain jawaban di bawah ini, ada sejumlah pendekatan yang saya temukan sejak memposting pertanyaan ini:

  1. Opsi Pemindaian URL tercantum dalam jawaban yang diterima.
  2. Tetapkan aturan Penyaringan Permintaan (contoh di bawah)
  3. Tetapkan aturan penulisan ulang URL (contoh di bawah)

Minta Aturan Filter

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

Aturan Penulisan Ulang 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>

Untuk proyek terakhir saya, saya berakhir dengan opsi 2 karena berfokus pada keamanan dan didasarkan pada Pemindaian URL terintegrasi ke dalam IIS 7.

Josh
sumber

Jawaban:

4

Biasanya Anda menggunakan robots.txt. Ini akan bekerja pada semua bot yang berperilaku baik.

Untuk bot yang tidak berperilaku baik sering ada sedikit yang bisa Anda lakukan. Anda dapat membatasi jumlah koneksi atau bandwidth di firewall atau server web Anda, tetapi bot besar biasanya akan menggunakan beberapa alamat IP. Pembatasan berdasarkan string agen-pengguna biasanya bukan ide yang baik, karena itu sepele untuk bot untuk dipalsukan, dan bot yang tidak peduli dengan robot.txt juga memiliki kecenderungan untuk memalsukan string agen pengguna. Ini bekerja dalam kasus khusus ketika bot mengirimkan agen pengguna yang benar, tetapi tidak mematuhi robots.txt.

Sunting: Jika Anda benar-benar ingin memblokir berdasarkan pada agen pengguna alih-alih mendorongnya kembali ke firewall Anda atau sejenisnya, saya pikir cara termudah adalah dengan menggunakan URLScan. Anda menulis aturan yang terlihat seperti ini:

[Options]
 RuleList=DenyYandex

[DenyYandex]
 DenyDataSection=Agents
 ScanHeaders=User-Agent

[Agents]
 Yandex
pehrs
sumber
2
Saya mencoba memblokir Yandex, yang mengabaikan robots.txt, tetapi secara konsisten memiliki Yandex di agen pengguna.
Josh
11

Saya tahu ini adalah pertanyaan lama, tetapi dalam IIS 7.5 Anda dapat menolak oleh agen pengguna jika Anda menggunakan Pemfilteran Permintaan.

Di IIS, buka situs web yang ingin Anda terapkan filter dan kemudian di panel kanan, klik ikon Permintaan Penyaringan . (Anda mungkin harus mengaktifkan fitur ini melalui manajer server).

Klik tab Aturan , lalu di sepanjang daftar paling kanan, pilih "Tambahkan Aturan Penyaringan"

Beri nama, lalu di bagian Pindai Tajuk , tulis "Agen-Pengguna".

Anda dapat menambahkan jenis file spesifik apa saja untuk diblokir di Berlaku untuk , atau Anda dapat membiarkannya kosong untuk membuatnya berlaku untuk semua jenis file.

Di Deny Strings , masukkan semua string agen pengguna yang ingin Anda blokir. Dalam hal pertanyaan ini, Anda akan meletakkan "Yandex" di sini.

Saya mengkonfirmasi perubahan ini di chrome menggunakan ekstensi User Agent Switcher .

Josh
sumber
6

Untuk perayap yang tidak menghormati Robots.txt, Anda dapat menggunakan URL Penulisan Ulang di server untuk diblokir berdasarkan Agen Pengguna mereka, lihat: http://chrisfulstow.com/using-the-iis-7url-rewrite-module-to- perayap blok /

Berikut cara mudah untuk memblokir perayap web utama - Google Bing dan Yahoo - dari mengindeks situs mana pun di seluruh server. Ini sangat berguna jika Anda mendorong semua versi beta Anda ke server yang menghadap publik, tetapi belum ingin mereka diindeks oleh mesin pencari.

  1. Pasang Modul Penulisan Ulang URL IIS.

  2. Di tingkat server, tambahkan aturan pemblokiran permintaan. Blokir tajuk agen pengguna yang cocok dengan regex: googlebot | msnbot | slurp.

Atau, cukup tempel aturan ini ke "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>

Ini akan memblokir Google, Bing, dan Yahoo agar tidak mengindeks situs yang dipublikasikan di server. Untuk mengujinya, coba Firefox User Agent Switcher .

Untuk info lebih lanjut: http://www.iis.net/download/URLRewrite

Carlos Aguilar Mares
sumber
Saya tidak yakin merekomendasikan memperbarui applicationHost.config untuk menambahkan aturan penulisan ulang adalah ide yang bagus - haruskah mereka tidak langsung masuk ke web.config?
Blakomen