lorax - 3:33 am on Jul 10, 2013 (gmt 0)
>> reject comments containing spurious fields
Therein lies the issue. What constitutes a spurious field - or rather data? Akismet does a pretty good job of identifying comment spam but it's not applied to forms. You're sort of left to fend for yourself on them. And once the bots determine your form accepts their URLs, word gets out and suddenly you're inundated with spam.
While there are plenty of whitelists, blacklists, and learning apps out there, none of them are foolproof. They all have varying degrees of success. Some of it depends upon the topic of your website (some targets lend themselves to bigger bullseyes) and some of it depends upon how well your website appears to be defensible (think about survival skills - making yourself look big and scary even though you're not).
The only sure way nip the spammers is to hand check every submission (which is rather daunting). I'm not suggesting you throw your hands up in the air and give up but I honestly don't know of a better solution. Nothing that is automated will ever work very well. The best you can do is to either check the submitted data AND/OR remove the temptation altogether.