-3

Possible Duplicate:
When the bots attack!

My free classified portal is coded in php. Now am facing sequence of ads which seems to be posted by tools like auto submitter. So I need to detect and avoid these type of ads by an automation which is done in any ways.

Community
  • 1
  • 1
  • 2
    captcha or something similar that requires user input should be helpful. – dyelawn Jan 11 '12 at 05:25
  • 1
    Please use Google and SO search before asking, this question has been asked a dozen of times and is well covered over the web. –  Jan 11 '12 at 05:27
  • There are a ton of similar questions. Search for `bots form` – Eric J. Jan 11 '12 at 05:30
  • captcha is broken http://it.slashdot.org/story/08/10/02/1415205/now-googles-captcha-is-broken – Eric J. Jan 11 '12 at 05:30

3 Answers3

1

Have you considered using a "Captcha"?

http://www.captcha.net/

They are pretty easy to integrate and look like this:

Example Captcha

dkamins
  • 21,450
  • 7
  • 55
  • 59
1

There are several ways.

A simple one is to place a text box on the input form that says

Type the word "human":  [        ]

If the trimmed uppercased version of that input != "HUMAN", then you either have a dumb human, or a dumb bot.

Obviously, this is super-easy for someone to defeat, but only if they take the time to code something for your site. In other words, it helps but is not foolproof.


On a more advanced level, integrate a recaptcha system, such as http://www.google.com/recaptcha

gahooa
  • 131,293
  • 12
  • 98
  • 101
  • ReCaptcha is broken. http://stackoverflow.com/questions/448963/has-recaptcha-been-cracked-hacked-ocrd-defeated-broken – Eric J. Jan 11 '12 at 05:28
1

One of the simplest solutions would be honeypots, the idea is to include some fields with common names like email, address etc and hide them from user and use something less common for original names. If one of hidden fields aren't empty it was submitted by bot.

To make it more complicate you can dynamically encrypt every field names using md5 example:

$encodedFieldName = md5('email_address' . session_id());

Of course you need to create array with allowed fields and retrieve them back before submitting results to database.

Nazariy
  • 6,028
  • 5
  • 37
  • 61