最新文章:

首頁 Web技術

IIS、Nginx、Apache通過user-agent攔截異常蜘蛛爬蟲

發布時間:2019年11月08日 評論數:2 閱讀數:875

    有一些爬蟲非常占用服務器資源,例如網上吐槽最多的Bytespider,成天沒日沒夜的爬,一天幾萬甚至幾十萬,對于一些小網站來說,負擔還是很高的,robots禁用規則對他根本不生效,于是只能通過user-agent做了屏蔽,下面整理下iis及nginx及apache環境下如何屏蔽不知名的蜘蛛ua。

    注意(請根據自己的情況調整刪除或增加ua信息,我提供的規則中包含了非蜘蛛的ua,一些掃描器的頭部信息等,幾乎用不著,若您的網站比較特殊,需要不同的蜘蛛爬取,建議仔細分析規則,將指定ua刪除即可)

    1、nginx,下面是屏蔽規則,將規則添加到配置文件的server段里面,當這些蜘蛛來抓取時會返回444;

    為什么要返回444呢? 444是nginx內置的錯誤代碼。對我們來說 return 444 比 return 404還要好。因為 nginx 下即使return 404,也會有返回的header和一個包含錯誤信息的html body。但是return 444,服務器會立刻關閉連接,就好象服務不存在一樣。

    if ($http_user_agent ~ "Bytespider|Java|perl|Python|Wget|Xenu|^$" ){return 444;}

    2、IIS7/IIS8/IIS10及以上web服務請在網站根目錄下創建web.config文件,并寫入如下代碼即可,如果已有rewrite規則,只需要復制<rule>到</rule>之間的內容
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
    <system.webServer>
    <rewrite>
    <rules>
    <rule name="Block spider">
    <match url="(^robots.txt$)" ignoreCase="false" negate="true" /><conditions>
    <add input="{HTTP_USER_AGENT}" pattern="Bytespider|Java|perl|Python|Wget|Xenu|ZmEu|^$"ignoreCase="true" />
    </conditions>
    <action type="AbortRequest" />
    </rule>
    </rules>
    </rewrite>
    </system.webServer>
    </configuration>


    3、apache請在.htaccess文件中添加如下規則即可: 

    <IfModule mod_rewrite.c>
    RewriteEngine On
    #Block spider
    RewriteCond %{HTTP_USER_AGENT}"Bytespider|Java|perl|Python|Wget|Xenu|ZmEu|^$" [NC]RewriteRule !(^robots.txt$) - [F]</IfModule>

    屏蔽驗證

    查看日志搜索不到任何byte蜘蛛

    QQ截圖20191108101332.png


二維碼加載中...
本文作者:Mr.linus      文章標題: IIS、Nginx、Apache通過user-agent攔截異常蜘蛛爬蟲
本文地址:http://www.xgunjfvk.cn/550.html  本文已經被百度收錄,點擊查看詳情
版權聲明:若無注明,本文皆為“挨踢 Blog”原創,轉載請保留文章出處。
?擠眼 親親 咆哮 開心 想想 可憐 糗大了 委屈 哈哈 小聲點 右哼哼 左哼哼 疑問 壞笑 賺錢啦 悲傷 耍酷 勾引 厲害 握手 耶 嘻嘻 害羞 鼓掌 饞嘴 抓狂 抱抱 圍觀 威武 給力
提交評論

清空信息
關閉評論
夏日博客
夏日博客2019-11-08 11:41回復
#1
神馬搜索爬蟲,天天爬得要命。
Mr.linus
Mr.linus2019-11-09 14:14回復
@夏日博客:神馬的ua是yisou,也可以屏蔽
? 福彩3d组选走势