|
|
|
|
|
前面幾篇文章介紹過 ASP.NET Web.config 通過URL重寫能夠?qū)崿F(xiàn)很多非常實用的功能,如屏蔽IP地址、屏蔽來源域名等,本文將給大家介紹 ASP.NET Web.config 屏蔽蜘蛛或某UA的寫法。
實現(xiàn)方法
因為要用到URL重寫功能,因此要首先安裝URL重寫模塊,安裝教程請看《IIS7.5 安裝url rewrite重寫模塊【 附下載地址】》。
示例代碼
Web.config 添加URL重寫規(guī)則,屏蔽蜘蛛或某UA。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="rule1" stopProcessing="true">
<match url="^(.*)$" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_USER_AGENT}" pattern="baiduspider|googlebot" />
</conditions>
<action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
解釋
本示例代碼,是屏蔽百度和Google蜘蛛的爬蟲。
其原理是根據(jù)訪客的UA,即<add>
節(jié)點(diǎn)里的input
值:{HTTP_USER_AGENT}
,如果匹配模式pattern,就執(zhí)行<action>
的動作,這里是返回403 - 拒絕訪問的狀態(tài)。
如果你有多個UA要屏蔽,那么只需在上面的示例代碼里,修改下pattern的值即可,把你要屏蔽的UA關(guān)鍵詞加上去,每個UA之間用“|
”隔開。
設(shè)置后,被拒絕IP訪問網(wǎng)站時就返回 403 - 禁止訪問:訪問被拒絕 的提示。
總結(jié)
本文介紹了ASP.NET Web.config 屏蔽蜘蛛或某UA的寫法,你還可以通過 Web.config 屏蔽IP(段)。
要屏蔽蜘蛛你還可以參考此文:
知識擴(kuò)充 - URL重寫語法及參數(shù)
URL重寫語法及參數(shù)主要有如下這些,我們可以根據(jù)需要靈活運(yùn)用。
#忽略大小寫
ignoreCase="true"|ignoreCase="false"
#非(不等于)
negate="true"
#不帶?后面的參數(shù)
appendQueryString="false"
#永久重定向
redirectType="Permanent"
#匹配條件為所有還是一條
logicalGrouping="MatchAll"|logicalGrouping="MatchAny" # 用于conditions節(jié)點(diǎn)
<add>
條件判斷,就像我們程序中的if
語句一樣,表示如果符合某個或某幾個條件則執(zhí)行action
后的語句。
#判斷訪問域名
<add input="{HTTP_HOST}" pattern="^www.xxx.com$" />
#判斷user_agent
<add input="{HTTP_USER_AGENT}" pattern="baiduspider|googlebot" />
#判斷訪問來源域名
<add input="{HTTP_REFERER}" pattern="xxx.com" negate="true" />
#判斷url中
<add input="{URL}" pattern="^.*(.css|.js|.gif|.png|.jpg|.jpeg|.xml)" ignoreCase="false" />
#判斷url中?后參數(shù)
<add input="{QUERY_STRING}" pattern="blog" negate="true" />
#判斷url路徑地址
<add input="{REQUEST_URI}" pattern="blog" negate="true" />
#判斷ip(包括代理)
<add input="{REMOTE_ADDR}" pattern="(8.8.4.4|8.8.8.)" />
#判斷真實文件
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" pattern="" ignoreCase="false" />
#判斷真實目錄
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" pattern="" ignoreCase="false" />
#判斷match中的變量
<add input="{R:1}" pattern="^(bbs|blog)" ignoreCase="false" negate="true" />
#其他
<add input="%" pattern="^$" ignoreCase="false" negate="true" />
<action>
是執(zhí)行動作,即滿足條件后如何處理。
#禁止訪問
<action type="AbortRequest" />
#重定向到
<action type="Redirect" url="http://www.xxx.com" redirectType="Permanent" />
#重寫到
<action type="Rewrite" url="{R:1}/t_list.asp?teacher_id={R:2}" appendQueryString="false" />
#不做操作
<action type="None" />
#向客戶端返回狀態(tài)
<action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
相關(guān)文章