This article on how much CAPTCHA sucks mentions that Animoto used timestamp analysis to cut down on spam.
It includes a link to a jQuery tutorial on timestamp analysis. Basically, you use AJAX to have PHP set a cookie, use JS to add a hidden input to the form, and then (on submission) you compare the hidden input value with the cookie value. From the tutorial:
Checking the Form
test.php is the example PHP code used to verify the token
- Is the token [hidden input value] present?
- Does it match the timestamp when run through the md5() function?
- Has too much time elapsed?
...But it seemed really convoluted to me, for the following reasons:
- Is the token present? The token is only added by JavaScript, so all you're really doing is detecting whether or not JS is enabled. Surely there are easier ways to do this.
- Does it match the timestamp when run through the md5() function? The md5 might make us feel better, but isn't this just making sure that cookies are enabled? Surely there are easier ways to do this.
- Has too much time elapsed? Do spambots really take a long time to submit forms? Surely this is unnecessary. (Wouldn't you actually want to see if the form was submitted too soon?)
My hope is that I actually have no idea how or why bots interact with HTML forms, and that I can now be corrected and educated.