2010-08-24 106 views
0

請幫助我。最近,我收到很多評論,無法以任何方式解決發佈的內容,只是表示評論的基數。基於評論內容的Javascript垃圾郵件預防

我想在發佈之前通過使用Javascript函數在提交它們之前檢查它們是否爲垃圾郵件,以阻止這些評論。

這是我想出來的。

var postHTMLContent = "..."; 

function isSpamComment(comment, index) 
{ 
    if (index == 0 && comment == 'first') 
     return true; 
    else 
     return false; 
} 

它工作(沒有誤報),但讓許多其他類似無關的評論通過。它甚至會失敗,如果他們簡單地拼錯'第一'或得到他們的評論的基數錯誤。

是否有一個更通用的功能,可以阻止通過的東西?請沒有服務器端,也沒有正則表達式。

+0

第一! ...通常評論不會是一個單詞長 - 如果你測試所有的單詞評論與基數的常見術語?您也可以在測試列表中包含常見的拼寫錯誤。 – Pat 2010-08-24 00:42:10

回答

0

對於這個問題,真的JavaScript解決方案不是一個很好的答案。如果有人想發佈他們的'第一'評論,他們可以禁用JavaScript,如果你沒有任何服務器端驗證垃圾郵件仍然會到達網站。 javascript的第二個不好的原因是用戶可以看到你認爲是垃圾郵件的單詞,並且只是自我感知它們(第一個......等等)。如果有很多不同的方法,你可以做一些更多的啓發式的垃圾郵件檢測雖這麼說,我將在下面詳細:

黑名單條款 - 有點像你的榜樣,如果你這樣做:

if(comment.indexOf(' bad phrase here ') !== false) { return true; } 

你可以判斷評論是否包含術語......不僅僅等於整個內容。誠實地說,無論是否使用內容檢測,無正則表達式的條款都會對您造成很大的傷害,但這應該至少讓您在用戶輸入的內容中獲得基本短語。這不是愚蠢的,但你可能會得到一個像'經典'這樣的字眼誤報的情況。:)

評論長度 - 考慮一個事實,即少於50個字符左右的事物可能不會是建設性的......這不會阻止人們「首先!!!!!!!!!!!!!!!!!!!!!!!!!!! ......你明白了」儘管打破你的過濾器。絕對修剪用戶輸入周圍的空白區域,以確保它更安全一些。

這些只是一些基本的想法,但老實說,沒有意義的是在客戶端只做一個修復。如果服務器不願意備份客戶端的規則,巨魔將會成爲巨魔並且總是試圖在你的腳本中找到它。

這就是說。評論批准/審覈是確保您希望在您的網站上顯示的內容的唯一可靠的方法,並誠實地說,在嘗試參與在線對話時,這不是一個非常好的用戶體驗。它確實只應用於需要保護人們免受內容侵害的環境中(例如,如果您正在爲某些產品頁面上的產品上市)。

1

垃圾郵件製造者會繞過你的JavaScript嘗試阻止它們。

您希望延遲評論以允許審覈或者通過一些完整性測試服務器端運行它。

如果可以,請像StackOverflow一樣做,並允許社區本身幫助保護系統。如果用戶發佈令人厭惡或愚蠢的內容,請讓其他人將其標記爲適度,或者如果它們是「電源」/「可信」用戶,則將其刪除。

0

你可以不斷添加新的「禁止評論」,但你的用戶將永遠繞過它們。

如果你想保持它的垃圾郵件釋放你有兩種選擇,其中只有第二個是可行的:

  • 計劃的人工智能識別「垃圾郵件」評論
  • 不顯示直到人們通過它們,並將它們作爲非垃圾郵件進行審查

這當然假設垃圾郵件或噪音評論來自您的人類讀者。如果您試圖阻止自動化垃圾郵件,那麼它在技術上可行,請參閱CAPTCHA s。