Chặn Bots với IIS 7.5 và 8.0


11

Tôi muốn chặn một bot với IIS. Với Apache, bạn có thể thêm một lệnh vào tệp .htaccess của mình, như được nêu ở đây . Làm thế nào tôi có thể thực hiện điều này với IIS 7.5?

Cập nhật

Ngoài câu trả lời dưới đây, có tổng số cách tiếp cận tôi đã khám phá kể từ khi đăng câu hỏi này:

  1. Tùy chọn Quét URL được liệt kê trong câu trả lời được chấp nhận.
  2. Xác định quy tắc Lọc yêu cầu (ví dụ bên dưới)
  3. Xác định quy tắc Viết lại URL (ví dụ bên dưới)

Quy tắc lọc yêu cầu

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

Quy tắc viết lại 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>

Đối với dự án cuối cùng của tôi, tôi đã kết thúc với tùy chọn 2 vì nó tập trung vào bảo mật và dựa trên Quét URL tích hợp được tích hợp trong IIS 7.

Câu trả lời:


4

Thông thường bạn sử dụng robot.txt. Nó sẽ hoạt động trên tất cả các bot hoạt động tốt.

Đối với các bot không hoạt động tốt, thường có rất ít bạn có thể làm. Bạn có thể giới hạn số lượng kết nối hoặc băng thông trong tường lửa hoặc máy chủ web của mình, nhưng các bot chính thường sẽ sử dụng nhiều địa chỉ IP. Giới hạn dựa trên các chuỗi tác nhân người dùng thường không phải là một ý tưởng hay, vì những điều đó là tầm thường để bot giả mạo và các bot không quan tâm đến robot.txt cũng có xu hướng giả mạo các chuỗi người dùng. Nó hoạt động trong trường hợp cụ thể khi bot gửi một tác nhân người dùng chính xác, nhưng không tuân theo robot.txt.

Chỉnh sửa: Nếu bạn thực sự muốn chặn dựa trên useragent thay vì đẩy nó trở lại tường lửa của bạn hoặc tương tự tôi nghĩ cách dễ nhất là sử dụng URLScan. Bạn viết một quy tắc trông giống như thế này:

[Options]
 RuleList=DenyYandex

[DenyYandex]
 DenyDataSection=Agents
 ScanHeaders=User-Agent

[Agents]
 Yandex

2
Tôi đang cố gắng chặn Yandex, thứ bỏ qua robot.txt, nhưng luôn có Yandex trong tác nhân người dùng.
Josh

11

Tôi biết đây là một câu hỏi cũ, nhưng trong IIS 7.5, bạn có thể từ chối bởi tác nhân người dùng nếu bạn sử dụng Lọc theo yêu cầu.

Trong IIS, truy cập trang web bạn muốn áp dụng bộ lọc và sau đó trong khung bên phải, nhấp vào biểu tượng Lọc yêu cầu . (bạn có thể phải kích hoạt tính năng này thông qua trình quản lý máy chủ).

Bấm vào tab Quy tắc , rồi dọc theo danh sách ngoài cùng bên phải, chọn "Thêm quy tắc lọc"

Đặt tên cho nó, rồi trong phần Tiêu đề quét , đặt "Tác nhân người dùng".

Bạn có thể thêm bất kỳ loại tệp cụ thể nào để chặn trong Áp dụng cho hoặc bạn có thể để trống để áp dụng cho tất cả các loại tệp.

Trong Deny String , nhập tất cả các chuỗi tác nhân người dùng bạn muốn chặn. Trong trường hợp của câu hỏi này, bạn sẽ đặt "Yandex" ở đây.

Tôi đã xác nhận những thay đổi này trong chrome bằng tiện ích mở rộng User Agent Switcher .


6

Đối với các trình thu thập thông tin không tôn trọng Robots.txt, bạn có thể sử dụng URL Rewrite trên máy chủ để chặn dựa trên Tác nhân người dùng của họ, xem: http://chrisfulstow.com/USE-the-iis-7url-rewrite-module-to- trình thu thập dữ liệu /

Đây là một cách dễ dàng để chặn các trình thu thập dữ liệu web chính - Google Bing và Yahoo - lập chỉ mục cho bất kỳ trang web nào trên toàn bộ máy chủ. Điều này thực sự hữu ích nếu bạn đẩy tất cả các bản dựng beta của mình lên một máy chủ đối mặt công khai, nhưng không muốn chúng được lập chỉ mục bởi các công cụ tìm kiếm.

  1. Cài đặt Mô-đun Viết lại URL IIS.

  2. Ở cấp độ máy chủ, thêm quy tắc chặn yêu cầu. Chặn các tiêu đề tác nhân người dùng phù hợp với biểu thức chính quy: googlebot | msnbot | slurp.

Hoặc, chỉ cần dán quy tắc này vào khu vực 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>

Điều này sẽ chặn Google, Bing và Yahoo lập chỉ mục bất kỳ trang web nào được xuất bản trên máy chủ. Để kiểm tra, hãy thử Trình chuyển đổi tác nhân người dùng Firefox .

Để biết thêm thông tin: http://www.iis.net/doad/URLRewrite


Tôi không chắc chắn khuyên bạn nên cập nhật applicationhost.config để thêm các quy tắc viết lại là một ý tưởng hay - chúng có nên chỉ đi vào web.config không?
Blakomen

Từ năm 2016, cũng có điều này: saotn.org/hackrepair-bad-bots-htaccess-web-config-iis
Dawesi
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.