How to distinguish robots from normal user?
How does SO do this job?
Currently I'm met with a robot which post once every 1 hour...
Try akismet as your first line of defense. Bad Behaviour is efficient too, perhaps too efficient, as i had issues with false positives. Akismet on the other hand serves me well. Then, if necessary, add other layers not impeding on the user experience, (like using empty fields that should remain empty) and then if you really have to, other techniques involving turing test of some sorts (captcha being the worst in terms of user friendliness: try simple questions instead). Here is a good read.
There are multiple approaches to this problem and it's a good idea to use several that overlap. One of those that SO uses is reCAPTCHA
Make sure you've got a valid email address for anyone who posts (as per S.O.) and implement a CAPCHA on registration and when you think someone might be behaving oddly. Keep a well-trained copy of spamassassin around and feed the posts through that.
C.
* QUICK, IMPLEMENT EASILY TO EXISTING FORM, SIMPLE INTERACTION FOR USERS *
来源:https://stackoverflow.com/questions/2570367/best-solution-to-anti-spam-in-php