Whats the easiest way of stopping spammers from probing your forms (preferably without deterring real users)
A captcha. Users aren't bothered by them anymore, they've gotten used to them.
http://www.captcha.net/captchas/
That seems like a good easy to set up captcha website, I've never used it, but it was early on google.
I don't know if this qualifies as deterring real users
, but an easy to solve captcha should do the trick. I won't bother users very much, and it will stop auto-form-filling spammers.
The simplest way may be adding an additional field with a commonly required name, like "Phone:" and then setting it to display:none; and checking whether the value is still blank on the server side. Most spam bots (not all) will be fooled and fill the field out - so you can ignore their input.
It's not perfect but it is "easy" and will stop a lot of the spam.
Failing that, yeah, Captcha.
Don't use capatchas until you have to. Most sites are not important enough to waste people's time and and attention jumping through hoops. This particularly applies if you are trying to sell something, rather than providing a free service.
Just making your form non-standard is enough. Unless you're important enough to attract someone to write code specific to your site, you can block every generic spammer by including a field labelled "please type the word orange".
If you're big enough to be targetted, start implementing behavourial spam detection, hidden fields and so on. If you're overwhelmed, the bring out the capatchas; possibly even temporarily. Your hot dog stand contact page does not deserve to waste people's time......
A very simple method is known as the honeypot
- You create a hidden field that users can't fill out.
- If you recieve a form that has that field filled out, discard it.
You can hide it by setting display none, or absolutely positioning the div behind something else, or completely off screen.
The best part is that it does not affect your regular users at all.
I've always preferred a hidden email field combined with a simple logic question like "If ice is cold, fire is: _" or "twelve minus two is __". Just make an array of questions to keep the bots guessing. You can even make them humorous to keep your users happy.
http://textcaptcha.com/ is a good place to start. They even offer a webservice for generating random questions.
CAPTCHAS are great but a PITA to fill out IMO. There are huge accessibility concerns with even the most popular ones. I can't tell you how many times I've had to resort to the audio sample (despite having perfect vision) only to find that the audio is even harder to decipher.