บล็อกบอทด้วย 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>

สำหรับโครงการสุดท้ายของฉันฉันสิ้นสุดด้วยตัวเลือก 2 เนื่องจากเน้นความปลอดภัยและยึดตามการสแกน URL ที่รวมอยู่ใน IIS 7

คำตอบ:


4

โดยปกติคุณใช้ robots.txt มันจะทำงานกับบอทที่ประพฤติดีทั้งหมด

สำหรับบ็อตที่ไม่ประพฤติตัวดีมักจะมีน้อยที่คุณสามารถทำได้ คุณสามารถ จำกัด จำนวนการเชื่อมต่อหรือแบนด์วิดท์ในไฟร์วอลล์หรือเว็บเซิร์ฟเวอร์ของคุณ แต่โดยทั่วไปแล้วบอตหลัก ๆ จะใช้ที่อยู่ IP หลายแห่ง การ จำกัด ตามสตริงผู้ใช้ - เอเจนต์มักไม่ใช่ความคิดที่ดีเนื่องจากเป็นสิ่งที่เล็กน้อยสำหรับบอตต่อการปลอมแปลงและบอทที่ไม่สนใจเกี่ยวกับ robots.txt ก็มีแนวโน้มที่จะหลอกสตริงผู้ใช้ด้วยเช่นกัน มันทำงานได้ในกรณีเฉพาะเมื่อบอตส่งตัวแทนผู้ใช้ที่ถูกต้อง แต่ไม่เชื่อฟัง robots.txt

แก้ไข: หากคุณต้องการบล็อกโดยยึดตาม useragent แทนที่จะผลักมันกลับไปที่ไฟร์วอลหรือคล้ายกันฉันคิดว่าวิธีที่ง่ายที่สุดคือใช้ URLScan คุณเขียนกฎที่มีลักษณะดังนี้:

[Options]
 RuleList=DenyYandex

[DenyYandex]
 DenyDataSection=Agents
 ScanHeaders=User-Agent

[Agents]
 Yandex

2
ฉันกำลังพยายามบล็อก Yandex ซึ่งไม่สนใจ robots.txt แต่มี Yandex อย่างสม่ำเสมอในตัวแทนผู้ใช้
Josh

11

ฉันรู้ว่านี่เป็นคำถามเก่า แต่ใน IIS 7.5 คุณสามารถปฏิเสธโดยตัวแทนผู้ใช้หากคุณใช้การกรองการร้องขอ

ใน IIS ไปที่เว็บไซต์ที่คุณต้องการใช้ตัวกรองจากนั้นในบานหน้าต่างด้านขวาคลิกไอคอนขอการกรอง (คุณอาจต้องเปิดใช้งานคุณสมบัตินี้ผ่านตัวจัดการเซิร์ฟเวอร์)

คลิกแท็บกฎจากนั้นไปทางด้านขวาสุดให้เลือก "เพิ่มกฎการกรอง"

ตั้งชื่อและในส่วนสแกนหัวให้ใส่ "User-Agent"

คุณสามารถเพิ่มประเภทไฟล์เฉพาะใด ๆ เพื่อบล็อกในนำไปใช้กับหรือคุณสามารถปล่อยว่างไว้เพื่อใช้กับไฟล์ทุกประเภท

ในDeny Stringsให้ป้อนสตริงตัวแทนผู้ใช้ทั้งหมดที่คุณต้องการบล็อก ในกรณีของคำถามนี้คุณจะใส่ "Yandex" ที่นี่

ฉันยืนยันการเปลี่ยนแปลงเหล่านี้ใน chrome โดยใช้ส่วนขยายUser Agent Switcher


6

สำหรับซอฟต์แวร์รวบรวมข้อมูลที่ไม่เคารพ Robots.txt คุณสามารถใช้ URL Rewrite บนเซิร์ฟเวอร์เพื่อบล็อกตามตัวแทนผู้ใช้ของพวกเขาดู: http://chrisfulstow.com/using-the-iis-7url-rewrite-module-to- บล็อกโปรแกรมรวบรวมข้อมูล /

ต่อไปนี้เป็นวิธีที่ง่ายในการบล็อกโปรแกรมรวบรวมข้อมูลเว็บหลัก - Google Bing และ Yahoo - จากการจัดทำดัชนีเว็บไซต์ใด ๆ ทั่วทั้งเซิร์ฟเวอร์ สิ่งนี้มีประโยชน์จริง ๆ หากคุณผลักดันการสร้างเบต้าทั้งหมดไปยังเซิร์ฟเวอร์สาธารณะ แต่ไม่ต้องการให้มีการจัดทำดัชนีโดยเครื่องมือค้นหา

  1. ติดตั้ง IIS Rewrite Module

  2. ที่ระดับเซิร์ฟเวอร์ให้เพิ่มกฎการบล็อกคำขอ บล็อกส่วนหัวของเอเจนต์ผู้ใช้ที่ตรงกับ regex: 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 ตัวแทน Switcher

สำหรับข้อมูลเพิ่มเติม: http://www.iis.net/download/URLRewrite


ฉันไม่แน่ใจว่าแนะนำให้อัพเดต applicationHost.config เพื่อเพิ่มกฎการเขียนซ้ำเป็นความคิดที่ดี - พวกเขาไม่ควรไปที่ web.config หรือไม่
Blakomen

ตั้งแต่ปี 2016 มีสิ่งนี้อีกด้วย: saotn.org/hackrepair-bad-bots-htaccess-web-config-iis
Dawesi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.