2011-12-07 20 views
6

मैं स्पैम फ़िल्टर करने के तरीकों पर लेख ढूंढ रहा हूं। जब मैं चारों ओर खोज करता हूं तो मुझे लगता है कि वर्डप्रेस है, कसम शब्दों को फ़िल्टर करने के तरीके आदि जो मैं नहीं ढूंढ रहा हूं। मैं अपनी खुद की फ़िल्टर सिस्टम और सर्वोत्तम प्रथाओं को लिखने के तरीकों की तलाश में हूं।फ़िल्टर टिप्पणी स्पैम? PHP

किसी भी व्यक्ति से पहले से किए गए किसी भी ट्यूटोरियल लिंक की सराहना की जाएगी।

केवल अच्छा लेख मैं अब तक http://snook.ca/archives/other/effective_blog_comment_spam_blocker

उत्तर

11

अपनी खुद की विधि लिखते समय, आपको हेरिस्टिक के संयोजन को नियोजित करना होगा।

उदाहरण के लिए, स्पैम टिप्पणियों के लिए 2 या अधिक यूआरएल लिंक होने के लिए यह बहुत आम है।

मैं, इसलिए की तरह अपने फिल्टर लिख ट्रिगर शब्दों का एक शब्दकोश का उपयोग शुरू करने और इसे लूप के माध्यम से किया है और संभावना निर्धारित करने के लिए उन का उपयोग करेंगे:

function spamProbability($text){ 
    $probability = 0; 
    $text = strtolower($text); // lowercase it to speed up the loop 
    $myDict = array("http","penis","pills","sale","cheapest"); 
    foreach($myDict as $word){ 
     $count = substr_count($text, $word); 
     $probability += .2 * $count; 
    } 
    return $probability; 
} 

ध्यान दें कि यह विधि कई गलत परिणामों की में परिणाम होगा, आपके शब्द सेट के आधार पर; आप मॉडरेशन के लिए अपनी साइट "फ्लैग" प्राप्त कर सकते हैं (लेकिन तुरंत लाइव हो जाते हैं) संभावनाओं वाले .3 और < .6, क्या उन्हें उन लोगों की आवश्यकता है .6 और < .9 मॉडरेशन के लिए कतार दर्ज करें (जहां वे प्रकट नहीं होते हैं अनुमोदित होने तक), और उसके बाद> 1 से अधिक कुछ भी अस्वीकार कर दिया जाता है।

जाहिर है ये सभी मूल्य हैं जो आपको सीमाओं को ट्विक करने के लिए होंगे लेकिन यह आपको एक सुंदर मूल प्रणाली से शुरू कर देना चाहिए। आप इस तरह के शब्दों के लिए अपशब्दों के अनुपात जाँच शब्दों का वजन को बदलने, आदि के रूप में वृद्धि/स्पैम की संभावना को कम करने, के लिए यह करने के लिए कई अन्य क्वालिफायर में जोड़ सकते हैं

+1

एक पल प्रतीक्षा करें ... आप प्रत्येक शब्द के लिए हर समय एक strtolower ($ पाठ) नहीं कर सकते हैं। – dynamic

+1

क्यों नहीं? इस तरह यह मामले पर भिन्नता पकड़ता है। हम नई लोअरकेस स्ट्रिंग को आउटपुट नहीं कर रहे हैं, हम इसकी तुलना कर रहे हैं और इससे छुटकारा पा रहे हैं। – Tim

+0

जब तक आप का मतलब नहीं है कि दक्षता खराब है, हां, यह है, यह सिर्फ एक अवधारणा उदाहरण है। – Tim

1

आप बॉट और इस तरह से स्पैम को रोकने के लिए एक रास्ता के लिए देख रहे है सकते हैं? यदि ऐसा है तो आप हमेशा एक कैप्चा जोड़ सकते हैं: http://en.wikipedia.org/wiki/CAPTCHA यदि आप ऐसा करने की कोशिश कर रहे हैं तो किसी भी प्रोजेक्ट को रखने के लिए पर्याप्त आसान होना चाहिए। अन्यथा मुझे यकीन नहीं है कि स्पैम फ़िल्टर करने के मामले में आप क्या कह रहे हैं।

+0

खैर एक कैप्चा एक तरीका है की रक्षा, लेकिन यह लोग हैं, जो मैन्युअल स्पैम टिप्पणियों लिखना बंद नहीं होगा। असल में, मैं एक फ़ंक्शन या फ़ंक्शंस की तलाश में हूं जो एक टिप्पणी ले सकता है और स्पैम संभावना को आउटपुट कर सकता है। –

+0

ऐसा कुछ नहीं लगता है जिसे आप आसानी से कर सकते हैं। मानव निर्मित स्पैम की भविष्यवाणी करना वैसे भी एक टिप्पणी पोस्ट करना है। यदि वे हाथ से स्पैम के लिए समय ले रहे हैं तो वे आपको वैसे भी स्पैम के तरीके पाएंगे। ऐसा कुछ करने के लिए एकमात्र ब्लॉक कुछ आईपी अवरुद्ध हो सकता है यदि आपको लगता है कि स्पैम कुछ आईपी पते से आता है। – Hudspeth

+0

मेरे प्रश्न में मैंने एक तरीका पोस्ट किया जिसे यह हासिल किया जा सकता है, लेकिन मैं विभिन्न प्रणालियों/विधियों की तलाश में था। आईपी ​​अवरोधन तथाकथित 'कट्टर' टिप्पणी स्पैमर के रूप में प्रभावी नहीं है, अनुरोधों को उछालने के लिए प्रॉक्सी का उपयोग करेगा, इसलिए लंबे समय तक आईपी पते को अवरुद्ध करने से आप आगंतुकों को खो देंगे। –

1

यहाँ स्पैमर्स से निपटने के बारे में एक और अच्छा ट्यूटोरियल है और वहाँ स्पैम करता ...:

How To Stop Manual Comment Spammers

यहाँ एक अच्छा समान तो सवाल करने के लिए एक कड़ी है:

non-captcha methods for blocking spam on my comments

आशा इससे मदद मिलती है।

2

मुझे आश्चर्य है कि कोई भी Akismet का उल्लेख नहीं किया है। मैंने कभी गलत संदेश चिह्नित नहीं किया है (चाहे वह स्पैम या वैध हो)। मेरा वर्डप्रेस इंस्टॉल इसके साथ आया था। मुझे बस इतना करना था कि हिट सक्षम हो। http://nasauber.de/opensource/b8/

1

आप B8 स्पैम फिल्टर पर एक नज़र हो सकता था। बेशक आजकल कुछ बॉट काफी स्मार्ट हैं, इसलिए आपको कैप्चा भी जोड़ना पड़ सकता है।

0

मैं इस स्क्रिप्ट मदद आशा है कि आप का पता लगाने के & स्पैम

<?php 
function isspam($text) 
{ 
$sfil[0] = "link"; 
$sfil[1] = "http"; 
$sfil[2] = "www"; 
$sfil[3] = "any slang"; 
$sfil[4] = "any word"; 
$sfil[5] = "any website"; 
$text = str_replace(" ", "", $text); 
$text = strtolower($text); 
for($i=0;$i<count($sfil);$i++) 
{ 

$nosf = substr_count($text,$sfil[$i]); 
if($nosf>0) 
{ 
return true; 
} 
} 

return false; 
} 
?> 

Create spam filter in PHP Details