如何有效防止網(wǎng)站出現(xiàn)垃圾留言,垃圾評論?
當(dāng)前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
可能很多自稱是SEO高手的“專家”們都有一個同樣的“法寶”,那就是瘋狂地在其他網(wǎng)站上留下大量的垃圾留言,垃圾評論,以便留下他們的鏈接?;蛟S這在很久以前可能有用,隨著SE的反SPAM的技術(shù)不斷的升級,現(xiàn)在再這樣做簡直是自找死路,無疑是給SE一個懲罰你的理由。 然而,這些高手們依然不知疲倦樂在其中,或機器自動留言,或人肉留言,總之,只要是可以留下一個鏈接的地方都留下了他們堅強的身影,他們才不管你的網(wǎng)站是什么類型的,走過路過都要進去評論一下。鑒于垃圾猛于虎的嚴峻形勢,甚至不得不將評論設(shè)置為需要審核才能顯示。 當(dāng)然,我們也不是完全反對留言評論,WEB2.0需要網(wǎng)站和用戶的互動,但要留言至少也要看下別人的文章,有感而發(fā)嘛,這是非常正常的交流溝通方式,我們非常歡迎這樣的留言和評論。 當(dāng)然,我們需要反擊,針對機器每秒幾十幾百的信息發(fā)布量,我們也要從技術(shù)手段上屏蔽它們。如何具體操作呢?flymorn提供幾個可行有效的方法。 1、判斷該發(fā)布信息是否有可靠的來路。只要是自然人發(fā)布的,那么他一定是通過我們提供給用戶的提交頁過來的,一定有一個來路;如果是機器發(fā)布的,就不會有來路信息。 '判斷來路,禁止外部提交 dim server_v1,server_v2 server_v1=Cstr(Request.ServerVariables("HTTP_REFERER")) server_v2=Cstr(Request.ServerVariables("SERVER_NAME")) if server_v1="" or instr(server_v1,"/add.asp")<=0 or mid(server_v1,8,len(server_v2))<>server_v2 then response.write "<SCRIPT language=JavaScript>alert('來源非法,禁止外部提交!');" response.write "this.location.href='vbscript:history.back()';</SCRIPT>" response.end end if 注意,上面的/add.asp就是提交頁面來源頁。當(dāng)然,機器也可以偽造來路,這就要結(jié)合以下方式一起對付了。 2、驗證碼。驗證碼一直是對付機器垃圾留言的一個可行的方法。不同的驗證碼有不同的對付機器留言的能力,越復(fù)雜的驗證碼,機器越難破解。這需要在考慮用戶的感受和對付機器之間選擇一個平衡點。關(guān)于驗證碼的使用方法,我就不多說了,谷歌、百度里搜索下就會出現(xiàn)很多介紹。 3、判斷來源提交的時間。如果在提交頁停留的時間太短,比如20秒,一般只要是個人,他打字的時間都不必這個少。舉例說明,在用戶打開頁面(如add.asp)的時候,我們記下這個時間,在form提交表單里增加一個隱藏對象,如: <input name="intime1" type="hidden" value="<%=Now()%>"> 然后,當(dāng)用戶寫好留言評論后提交到具體處理頁面(如addok.asp)的時候,我們獲取當(dāng)前時間,和add.asp里的這個intime1時間比較,如果這個時間差小于設(shè)定的時間,如20秒,則禁止留言,判斷為機器。代碼可這樣寫: If DateDiff("s",request.form("intime1"), Now()) < 20 then response.write "<SCRIPT language=JavaScript>alert('您的留言速度太快了吧,禁止留言!');" response.write "this.location.href='vbscript:history.back()';</SCRIPT>" response.end end if 通過以上三種方法可以屏蔽掉絕大部分的機器垃圾留言評論,如果還有大量的留言的話,那多半是人肉留言了。但是,我們又如何對付人肉留言呢?flymorn也提供方法對付。 方法很簡單,就是通過記錄用戶的cookies以及IP來限制同一用戶發(fā)表留言的數(shù)量。比如一天24小時內(nèi),只允許同一用戶發(fā)表信息5條。我們可以通過以下方法實現(xiàn)。 <%'當(dāng)用戶每提交一次 if request.cookies("postnum")="" then response.cookies("postnum")=1 response.cookies("postnum").expires=DateAdd("h", 24, Now()) else response.cookies("postnum")=request.cookies("postnum")+1 end if if request.cookies("postnum") > 5 then response.write "<SCRIPT language=JavaScript>alert('今天留言次數(shù)超過限制,禁止留言!');" response.write "this.location.href='vbscript:history.back()';</SCRIPT>" response.end end if %> 通過以上的限制,人工發(fā)帖也得到了一定的限制。上面的方法是基于cookies判斷,當(dāng)然用戶可以通過瀏覽器清空COOKIES,但這樣增加了他們發(fā)垃圾帖子的難度,提高了門檻。我們還可以繼續(xù)判斷發(fā)布者的IP,通過同一個IP下發(fā)帖限制數(shù)量來達到我們的目的。在此,就不再擴展,大家可以自己設(shè)計如何判斷IP來限制發(fā)帖的方法。如果您對本文討論的主題有看法或建議,歡迎留下評論,以便我們一起探討。
該文章在 2011/6/22 14:47:35 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |