Snooker - Lightweight spam detection for blog comments
This crate provides a pure-Rust implementation of Jonathan Snook's spam detection algorithm for blog comments.
As described in the afore-linked post, it works on a points system. Points are awarded and deducted based on a variety of rules. If a comments final score is greater than or equal to 1, the comment is considered valid. If the comments final score is 0 then it's considered to be worth of moderating. If the comments final score is below 0 then it's considered to be spam. Each comment starts with a score of 0.
Installation
If you're using Cargo, just add Snooker to your Cargo.toml:
[]
= "0.1.0"
Example
Snooker gives the example comment below a score of -10 based off of the following patterns:
- The
bodyhas less that 2 links in it: +2 points - The
bodyis more that 20 characters long but contains 1 link: +1 point - The link in the
bodycontains one keyword considered spammy ("free"): -1 point - The
bodycontains one phrase considered spammy ("limited time only"): -1 point - The
bodystarts with a word considered spammy when it's the first word of the comment ("nice"): -10 points - The
authorfield doesn't containhttp://orhttps://: +0 points (unchanged) - The
urlfield contains a keyword considered spammy ("free"): -1 point - None of the URLs use a TLD considered spammy: +0 points (unchanged)
- None of the URLs are longer that 30 characters: +0 points (unchanged)
- No consonant groups were found: +0 points (unchanged)
- No data was provided about the comments previously submitted with this email address: +0 points (unchanged)
use ;
let comment = Comment ;
let snooker_result = new;
assert_eq!;
assert_eq!;
License
Snooker is released under the MIT LICENSE.
About
This crate was written by Elliot Jackson.
- Blog: https://elliotekj.com
- Email: elliot@elliotekj.com