讓站長最頭痛的事,除了程序和服務器安全外,可能就要算內容被采集了。當然,現在網絡本身就是資源共享,我這裡不談采集的對錯,只是就防采集說說個人看法。
一、如何分辨搜索爬蟲 以前,在網上看到過關於用asp代碼來捕捉搜索爬蟲的代碼,通過代碼把爬蟲的訪問記錄記錄到文件。就此代碼(原作者未知)我作了修改,加入程序中防采集。現做成函數,直接在頁面中調用。
復制代碼 代碼如下:
Function CheckSearchRobots(SearchRobotsAgent)
CheckSearchRobots = False
'自定義搜索爬蟲,因篇幅關系,這裡只是加入國內主要搜索引擎爬蟲部分記錄
Dim SearchRobots:SearchRobots="Baidu@Baidu|Google@Google|crawler@alexa|Yahoo@Yahoo|sohu@Sohu|MSN@MSN|QihooBot@Qihoo"
dim ArrSearchRobots,ArrSearchRobots2,SearchRobotsTrue,SearchRobotsName,iSearchRobots
SearchRobotsTrue = False
ArrSearchRobots = split(SearchRobots,chr(124))
For iSearchRobots = 0 To Ubound(ArrSearchRobots)
ArrSearchRobots2 = split(ArrSearchRobots(iSearchRobots),"@")
If Instr(lcase(SearchRobotsAgent),lcase(ArrSearchRobots2(0))) > 0 then
SearchRobotsTrue=true:SearchRobotsName=ArrSearchRobots2(1):exit for
End If
Next
If SearchRobotsTrue and len(SearchRobotsName)>0 then'如果是爬蟲,就更新爬蟲信息
CheckSearchRobots = True
End If
End Function
將以上代碼放在asp程序中(具體如何放置請參考相關文章),然後在需要調用的地方作如下調用: If CheckSearchRobots(SearchRobotsAgent) = False Then
Response.Write "非搜索引擎,可作部分限制!" '這裡可以加入判斷指定時間的刷新次數,比如在正常情況下,訪問速度是N次/分,如果超過這個次數(超常規訪問)就可以限制了。
End If
二、限制超常規訪問。 下面說說如何限制別人的超常規訪問。下面代碼來源於互聯網(原作者未能找到)。我作了部分修改和說明。
復制代碼 代碼如下:
Sub CheckAppeal()
Dim AppealNum,AppealCount
AppealNum=10 '同一IP60秒內請求限制次數
'雨哲[Yz81.Com]站長測試結果一,如果限制為10次,動易采集結果,一分鐘能采集成功12篇,失敗8篇。
'雨哲[Yz81.Com]站長測試結果二,如果限制為8次,動易采集結果,一分鐘能采集成功9篇,失敗11篇。
AppealCount=Request.Cookies(AppealCookies)
If AppealCount="" Then
Response.Cookies(AppealCookies)=1
AppealCount=1
response.cookies(AppealCookies).expires=dateadd("s",60,now())
Else
response.Cookies(AppealCookies)=AppealCount+1
response.cookies(AppealCookies).expires=dateadd("s",60,now())
End If
if int(AppealCount)>int(AppealNum) then
Response.Write "兄弟,爬了這麼久,歇會兒吧,別累壞了身體!"
'這裡的提示完全可以自定義,我的做法是另外轉到一個和當前文章模板完全一致的頁面,當然內容是自定義的。
'有興趣的朋友也可以采集<a class="channel_keylink" href="http://www.yuzhe.name">雨哲</a>在線的http://www.yz81.com/wanzhuan/頻道下面的文章。
Response.end
End If
End Sub
將以上代碼放在asp程序中(具體如何放置請參考相關文章),然後在需要調用的地方作如下調用:
Call CheckAppeal()