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를 사용합니다. 잘 동작하는 모든 봇에서 작동합니다.

잘 동작하지 않는 봇의 경우 수행 할 수있는 작업이 거의 없습니다. 방화벽 또는 웹 서버에서 연결 수 또는 대역폭을 제한 할 수 있지만 주요 봇은 일반적으로 여러 IP 주소를 사용합니다. 사용자 에이전트 문자열을 기반으로 제한하는 것은 일반적으로 봇이 스푸핑하기에 사소한 것이며 robots.txt를 신경 쓰지 않는 봇은 사용자 에이전트 문자열을 스푸핑하는 경향이 있으므로 일반적으로 좋은 생각이 아닙니다. 봇이 올바른 사용자 에이전트를 보낼 때 특정 경우에 작동하지만 robots.txt를 따르지 않습니다.

편집 : 사용자 에이전트를 기반으로 차단하거나 방화벽으로 다시 밀어 넣지 않고 차단하려면 URLScan을 사용하는 것이 가장 쉬운 방법이라고 생각합니다. 다음과 같은 규칙을 작성하십시오.

[Options]
 RuleList=DenyYandex

[DenyYandex]
 DenyDataSection=Agents
 ScanHeaders=User-Agent

[Agents]
 Yandex

2
robots.txt를 무시하지만 Yandex를 지속적으로 사용자 에이전트에 포함시키는 Yandex를 차단하려고합니다.
Josh

11

나는 이것이 오래된 질문이라는 것을 알고 있지만 IIS 7.5에서는 요청 필터링을 사용하면 사용자 에이전트가 거부 할 수 있습니다.

IIS에서 필터를 적용 할 웹 사이트로 이동 한 다음 오른쪽 창에서 요청 필터링 아이콘을 클릭하십시오 . (서버 관리자를 통해이 기능을 활성화해야 할 수도 있습니다).

규칙 탭을 클릭 한 다음 맨 오른쪽 목록에서 "필터링 규칙 추가"를 선택하십시오.

이름을 지정한 다음 스캔 헤더 섹션에 "User-Agent"를 입력하십시오.

적용 대상 에서 차단할 특정 파일 형식을 추가하거나 모든 파일 형식에 적용 할 수 있도록 비워 둘 수 있습니다.

에서 문자열을 거부 , 차단하려는 사용자 에이전트 문자열을 모두 입력합니다. 이 질문의 경우 "Yandex"를 여기에 넣습니다.

User Agent Switcher 확장을 사용하여 크롬에서 이러한 변경 사항을 확인했습니다 .


6

Robots.txt를 준수하지 않는 크롤러의 경우 서버에서 URL 다시 쓰기를 사용하여 사용자 에이전트를 기반으로 차단할 수 있습니다. http://chrisfulstow.com/using-the-iis-7url-rewrite-module-to- 블록 크롤러 /

다음은 기본 웹 크롤러 (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 사용자 에이전트 스위처를 사용해보십시오 .

자세한 정보 : http://www.iis.net/download/URLRewrite


다시 쓰기 규칙을 추가하기 위해 applicationHost.config를 업데이트하는 것이 좋습니다. 웹 .config에 들어가면 안됩니까?
Blakomen

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.