Bad Behavior 1.0

Bad Behavior Bad Behaviour

First of all, I want to say thank you to the many people all over who have tried out pre-release versions of Bad Behavior and contributed feedback, comments, praise and code. This project would not have gone nearly as smoothly without all of your assistance. Shortly I’ll be setting up a thanks page for the major contributors with inbound links to your sites.

Bad Behavior

The permanent pages for Bad Behavior explain what it is and why you want to install it, but for those of you who haven’t been keeping up, here’s the summary:

Gone over your bandwidth quota this month? Had to upgrade your web hosting plan? Who’s visiting your site so much? It’s those pesky spambots. They suck down your web pages repeatedly looking for links to post blog spam to, and email addresses to send conventional spam to. And then they come back the next day for more.

Bad Behavior is a PHP-based solution for keeping unwanted blog, wiki, forum, guestbook and referrer spam away from your site. Initially developed on WordPress, its modular architecture allows it to be ported to virtually any PHP-based application, and so far it has been ported to one wiki (MediaWiki) and a port to a forum (Geeklog) is in progress.

Download Bad Behavior now! And contact me with any questions or comments.


Since Release Candidate 3, there have been only a few changes.

  • An additional spambot was identified and banned.
  • An otherwise harmless PHP Notice was suppressed.
  • The user-agent was being logged in the request_uri field in the database. This has been fixed.

Thanks Again

Thanks again to everyone who has been involved with Bad Behavior! Now comes the fun part, adding new features. If you have an idea for a feature that Bad Behavior lacks, please let me know!

One thought on “Bad Behavior 1.0

  • May 16, 2005 at 1:57 am

    TedFox, it’s sufficient to change the $wp_bb_log variable at the top of bad-behavior-database.php, but it’s not necessary; several copies of Bad Behavior can log to the same table without problem. You can separate entries for each subdomain by querying on the http_host field.

Comments are closed.