最近做的網(wǎng)站內容常常被人采集走了,不爽也不想讓別人采集我站點(diǎn)的數據,就稍為寫(xiě)一段代碼
<%
user_agent=Request.ServerVariables("HTTP_USER_AGENT")
http_reffer=Request.ServerVariables("HTTP_REFERER")
server_name=Request.ServerVariables("SERVER_NAME")
'檢查當前用戶(hù)是否是蜘蛛人
function check(user_agent)
allow_agent=split("Baiduspider,Scooter,ia_archiver,Googlebot,FAST-WebCrawler,MSNBOT,Slurp",",")
check_agent=false
for agenti=lbound(allow_agent) to ubound(allow_agent)
if instr(user_agent,allow_agent(agenti))>0 then
check_agent=true
exit for
end if
next
check=check_agent
end function
if check(user_agent)=False then
if http_reffer="" or left(http_reffer,len("http://"&server_name)+1)<>"http://"&server_name&"/" then
%>
<html><body>
<form action='' name=checkrefer id=checkrefer method=post>
</form>
<script>
document.all.checkrefer.action=document.URL;
document.all.checkrefer.submit();
</script>
</body></html>
<%response.end
end if
end if
%>
2.
小站長(cháng)們辛苦整理添加的網(wǎng)站內容總是不想讓別人輕易拿走,無(wú)奈當今的采集程序一個(gè)比一個(gè)NB,他們總有辦法!難道就任憑他們肆虐嗎?答案是不行的。他們方法可以變,但他們的網(wǎng)站IP是不會(huì )輕易改變的,我們就從這個(gè)方法入手,為了方便不同的要求,我給大家整理了幾種方法,希望能幫助了大家!第三勢力收集整理,本站僅擁有展示權!
第一種方法:
最好的一段代碼(ASP):
<%
Dim AppealNum,AppealCount
AppealNum=10 '同一IP60秒內請求限制10次
AppealCount=Request.Cookies("AppealCount")
If AppealCount="" Then
response.Cookies("AppealCount")=1
AppealCount=1
response.cookies("AppealCount").expires=dateadd("s",60,now())
Else
response.Cookies("AppealCount")=AppealCount+1
response.cookies("AppealCount").expires=dateadd("s",60,now())
End If
if int(AppealCount)>int(AppealNum) then
response.write "第三勢力www.jelker.com提醒您:抓取很累,歇一會(huì )兒吧!"
response.end
End If
%>
第二種方法(ASP):
<%
user_agent=Request.ServerVariables("HTTP_USER_AGENT")
http_reffer=Request.ServerVariables("HTTP_REFERER")
server_name=Request.ServerVariables("SERVER_NAME")
'檢查當前用戶(hù)是否是蜘蛛人
function check(user_agent)
allow_agent=split("Baiduspider,Scooter,ia_archiver,Googlebot,FAST-WebCrawler,MSNBOT,Slurp",",")
check_agent=false
for agenti=lbound(allow_agent) to ubound(allow_agent)
if instr(user_agent,allow_agent(agenti))>0 then
check_agent=true
exit for
end if
next
check=check_agent
end function
if check(user_agent)=False then
if http_reffer="" or left(http_reffer,len("http://"&server_name)+1)<>"http://"&server_name&"/" then
%>
<html><body>
<form action='' name=checkrefer id=checkrefer method=post>
</form>
<script>
document.all.checkrefer.action=document.URL;
document.all.checkrefer.submit();
</script>
</body></html>
<%response.end
end if
end if
%>
3.
防采集第一招 用Persistence為靜態(tài)頁(yè)面增加session功能
一般來(lái)說(shuō),只有服務(wù)器端的CGI程序(ASP、PHP、JSP)具有session會(huì )話(huà)功能,用來(lái)保存用戶(hù)在網(wǎng)站期間(會(huì )話(huà))的活動(dòng)數據信息,而對于數量眾多的靜態(tài)頁(yè)面(HTML)來(lái)說(shuō),只能使用客戶(hù)端的cookies來(lái)保存臨時(shí)活動(dòng)數據,但對于cookies的操作是個(gè)很煩瑣的過(guò)程,遠沒(méi)有對于session操作那樣簡(jiǎn)便。為此,本文向讀者推薦一種在DHTML中的解決方案“Persistence技術(shù)”,使得在靜態(tài)頁(yè)面中也能使用session會(huì )話(huà)功能。
Microsoft Internet Explorer 5瀏覽器和以后的版本都支持使用狀態(tài)保持(Persistence)技術(shù),讓我們能夠在當前會(huì )話(huà)過(guò)程中保存一些數據對象到客戶(hù)端,減少了對服務(wù)器的訪(fǎng)問(wèn)請求,充分發(fā)揮了客戶(hù)端計算機的數據處理能力,從而也整體提升了頁(yè)面顯示效率。
Persistence技術(shù)有以下幾種行為可供調用:
· saveFavorite—當頁(yè)面被添加到收藏夾時(shí)保存頁(yè)面狀態(tài)和信息
· saveHistory—在當前會(huì )話(huà)中保存頁(yè)面狀態(tài)和信息
· saveSnapshot—當頁(yè)面被保存到硬盤(pán)時(shí),保存頁(yè)面狀態(tài)和信息
· userData—在當前會(huì )話(huà)中用XML格式保存頁(yè)面狀態(tài)和信息
Persistence技術(shù)打破了以前使用cookies和session的傳統,繼承了cookies的一些安全策略,同時(shí)也增加了存儲和管理數據的能力。我們的每個(gè)頁(yè)面有64KB的用戶(hù)數據存儲容量,對于每個(gè)站點(diǎn)總計有640KB的存儲上限。
Persistence技術(shù)存儲的數據格式符合XML標準,所以可以使用DOM技術(shù)中的getAttribute和setAttribute方法來(lái)存取數據。
下面是一個(gè)Persistence技術(shù)的典型應用,通過(guò)對Persistence存儲數據的分析,使得靜態(tài)頁(yè)面具有驗證功能。
實(shí)際判斷過(guò)程是這樣的:
1.有三個(gè)對象:游客V、導航頁(yè)面A、內容頁(yè)面C
2.游客V只能通過(guò)導航頁(yè)面A的鏈接才能看到內容頁(yè)面C;
3.如果游客V是通過(guò)其它途徑來(lái)訪(fǎng)問(wèn)內容頁(yè)面C(比如通過(guò)其它網(wǎng)站的超鏈接、直接在IE地址欄中輸入網(wǎng)址訪(fǎng)問(wèn)等),內容頁(yè)面C將自動(dòng)提示版權信息,顯示空白頁(yè)。
具體實(shí)現步驟:
· 在“導航頁(yè)面”中加入一個(gè)STYLE用來(lái)定義persistent類(lèi),同時(shí)加入存儲函數fnSave用來(lái)授權。
<STYLE>
.userData {behavior:url(#default#userdata);}
</STYLE>
<SCRIPT language=Javascript>
function fnSave(){
oPersistDiv.setAttribute("bIsValid","true");
oPersistDiv.save("oXMLStore");
}
</SCRIPT>
· 在“導航頁(yè)面”的<body>和</body>區域中定義一個(gè)層用來(lái)標識Persistence對象
<DIV CLASS=userData ID="oPersistDiv"></DIV>
· 在“導航頁(yè)面”的超鏈接屬性中加入一條語(yǔ)句用來(lái)調用函數fnSave:
<a href='redhat2.htm' onmousedown="fnSave()">
接下來(lái),為“內容頁(yè)面”加入驗證功能。
· 在“內容頁(yè)面”中加入一個(gè)STYLE用來(lái)定義persistent類(lèi),同時(shí)加入存儲函數fnLoad用來(lái)判斷合法性。
<STYLE>
.userData {behavior:url(#default#userdata);}
</STYLE>
<SCRIPT>
var bPageValid=false;
function fnLoad(){
oPersistDiv.load("oXMLStore");
if((oPersistDiv.getAttribute("bIsValid"))&&
(oPersistDiv.getAttribute("bIsValid")=="true")){
bPass=true;
}
else{
bPass=false;
}
oPersistDiv.setAttribute("bIsValid","false");
oPersistDiv.save("oXMLStore");
if(bPass==false){
var sError="來(lái)源不明,請您通過(guò)授權網(wǎng)站訪(fǎng)問(wèn)我們.";
alert(sError);
location.href="about:blank";
}
} </SCRIPT>
· 修改“內容頁(yè)面”的區域如下:
<BODY onload="fnLoad()">
<DIV CLASS=userData ID="oPersistDiv"></DIV>
***插入以上代碼的頁(yè)面需在同一個(gè)文件夾下,否則會(huì )出錯。
從以上范例可看出,通過(guò)persistence的使用,使得普通的靜態(tài)內容頁(yè)面具有了session功能,一般的不敏感信息完全可以通過(guò)session保存在客戶(hù)端。
使用多個(gè)帶有session功能的靜態(tài)頁(yè)面可以完成眾多復雜任務(wù),如虛擬購物車(chē),高級搜索引擎等。同時(shí),由于將以前服務(wù)器端承擔的部分session任務(wù)轉移到客戶(hù)端,減少了數據交互量,大大降低了服務(wù)器的負擔。
第三勢力www.jelker.com從網(wǎng)上收集整理而來(lái),沒(méi)有自己測試,大家謹慎使用!以免影響搜索引擎的收錄!