Register Members List Search Today's Posts Mark Forums Read

Mod Options
Keyword weight based spam detector Details »
Keyword weight based spam detector
Mod Version: 0.1.0, by HuangA (Member) HuangA is offline
Developer Last Online: Jun 2013 I like it Show Printable Version Email this Page

This modification is in the archives.
vB Version: 3.7.0 Beta 5 Rating: (8 votes - 4.88 average) Installs: 38
Released: 08 Jul 2008 Last Update: 09 Jul 2008 Downloads: 199
Not Supported Uses Plugins Translations Is in Beta Stage  

I coded this one because I constantly had to moderate and / delete them lengthy lame cell phone ads on's forums and my own forums. You know, buy iphone, ipod touch, noika blah blah blah sony ericsson blah blah blah etc. etc. etc. email us, we're legitimate business in a country you've never heard of, blah blah blah spam.

While Akismet does work on filtering them out, some times they still leak through.

I know there's two other keyword based tools that automatically adds things to moderation queue (One from SirAdrian and one from tweakmonkey), but it doesn't work too well for me, because I run an iPhone / iPod Touch site and I can't have those keywords on auto spam for simply appearing. So, here's what I did for mine...

What does this product do?
  • Adds 1 vBulletin Options setting group, with 4 settings
  • Allows you to define a list of keywords with associated score
  • Allows you to set a threshold for automatic moderation
  • Allows you to set a threshold for automatic rejection
  • Allows you to set a post count limit for posts to be scanned
  • Adds 1 plugin which gets ran at newpost_process
  • Adds 1 plugin which gets ran at editpost_update_process

How does it work?
1) You configure your keyword list, and score weight. For example, I use this list:

Block Disabled:      (Update License Status)  
Suspended or Unlicensed Members Cannot View Code.

The list basically means each time the plugin sees "Noika", it will get a score of 0.5, $, 0.5, etc. etc. A tally of all the score is totaled, and
2) You configure your moderation score, for example, I use 50.
3) You configure your rejection score, for example, I use 100.
4) You configure your exemption post count, for example, I use 5.

When a new post is being created (this could be a thread, or a reply, doesn't matter, they both trigger newpost_process hook), the plugin will count how many times each keyword appears, and total the score. If it is higher than or equal to the moderation score, it will tuck the post into moderation queue. If it is higher than or equal to the rejection score, a standard vBulletin error message is shown to the user.

How much overhead does this add? Realistically, not much... depending on amount of keywords used, I'd say most likely under 0.05 seconds of your CPU time for each post. If you are really that worried, you can set your exemption post count to something lower, and so lesser posts are scanned. Default is 5 right now.

This have been tested on 3.7.0 Beta 5, and 3.7.2. I see no reason why it would not work on 3.6.x series, too.

Change log
0.0.0 => 0.1.0
  • Changed error message to use vBulletin error message screen instead of die()
  • Added option for omitting after certain post count (default 5)
  • Added default values to options
  • Fixed options not appearing after product import (I forgot to export them for 0.0.0)
  • Added scanning for editing post (AJAX doesn't seem to give error... I'll work on that for 0.1.1 later)

Download Now

Only licensed members can download files, Click Here for more information.

Show Your Support

  • To receive notifications regarding updates -> Click to Mark as Installed.
  • If you like this modification support the author by donating.
  • This modification may not be copied, reproduced or published elsewhere without author's permission.
Similar Mod
Mod Developer Type Replies Last Post
Administrative and Maintenance Tools Multiple account login detector (AE Detector) MPDev vBulletin 3.6 Add-ons 598 25 Nov 2013 02:28

Old 08 Jul 2010, 21:34
robk6364 robk6364 is offline
Join Date: Oct 2005
This is excellent, thanks a million times!
Reply With Quote
Old 16 Aug 2010, 08:13
EtaiWix EtaiWix is offline
Join Date: Jun 2010
Slight problem: I see it's not working for ''partial' words- i.e. if I blocked' nike', and someone spams 'nikefun', then his post goes through...

Can you add that it will block any instance of it even if it's part of another word?
Reply With Quote
Old 24 Dec 2011, 05:22
ArchAngelz ArchAngelz is offline
Join Date: May 2010
Would something like this work for vb4?
Reply With Quote
Old 04 Oct 2013, 13:56
chrisrouse chrisrouse is offline
Join Date: Sep 2013
Real name: AccountKiller
Does this work with vb4? This would be perfect for the issue we're having with people advertising handbags and Uggs.
Reply With Quote
Old 15 Dec 2015, 11:12
jaslon jaslon is offline
Join Date: May 2005
I just installed this on vBulletin 3.8.9. It seems to work well. I found one bug though which I think affects all vBulletin versions. If you set the Reject threshold to 0 to disable rejections the moderation will also be disabled, so if you do not want to use reject you should instead set the reject threshold to something very high. I can see in the source code that this is a bug. It wouldn't be very difficult to correct it, but just using a very high reject threshold also works.
Reply With Quote
Old 21 Dec 2015, 15:19
jaslon jaslon is offline
Join Date: May 2005
I have discovered an annoying bug in the edit part of this script. Here is an example of when the bug occurs:

1. A spammer first posts a message without any spam keywords so that a new thread and a new post is created

2. The spammer then returns and edits his message and adds spam keywords to the post

3. The filter then auto-moderates the post using the following code linked to the "editpost_update_process" hook:
$dataman->set('visible', 0);
$edit['visible'] = 0;

4. If the edit has been done within the time-limit when no "Edited by..." is displayed and the old version of the post is not saved then this will result in a visible thread that contains no posts visible for normal users. There is a post there, but the spam keyword filter has unapproved it so it is not visible for normal users.

I think that I have found a solution to this. I have disabled the "editpost_update_process" hook used in this mod and I have instead written my own routine for the "editpost_update_complete" hook. My code only works with moderation, since I only use moderation and the php code for this new hook looks like this:

Block Disabled:      (Update License Status)  
Suspended or Unlicensed Members Cannot View Code.

This more "high-level" solution using the buildt-in unapprove routines in vBulletin also unapproves threads, re-calculates post counts etc. so it seems to be a better solution.
Reply With Quote

Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
Mod Options

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

New To Site? Need Help?

All times are GMT. The time now is 03:21.

Layout Options | Width: Wide Color: