What is Antibot?

Antibot is an extremely lightweight module designed to eliminate robotic form submissions on your website in an innovative-fashion. The module works completely behind the scenes and doesn't require any interaction from the end-users (no annoying CAPTCHAs!). The only requirement to the end user is that they must have JavaScript enabled. If they do not, the protected forms will be hidden and a message will appear, telling the user that the form requires JavaScript be enabled in order to use it.

Antibot aims to:

  • Prevent robotic spam submissions on your site's forms (like comments).
  • Be as lightweight as any module could possibly be.
  • Protect forms while still being able the cache the page.
  • Avoid any end-user interaction or annoying CAPTCHA codes.
  • Be much more reliable than a honeypot trap.
  • Require no third-party integrations and API keys.
  • Work on mobile and touch-screen devices.
  • Also prevent remotely posted form submissions

How does it work?

  1. Admins choose which forms to enable protection for by specifying the form IDs.
  2. The protected form's action path is switched to /antibot.
  3. When the page is loaded, if the user does not have JavaScript enabled, the form is hidden and a message is presented to them.
  4. After the page is loaded, Antibot, using JavaScript, waits for a mouse to move, an enter or tab key to be pressed, or a mobile swipe gesture before the action of the form is switched back to the path that it was originally set to be. This indicates that the person behind the controls is a human and not a robot.
  5. Since the action of the form is purposely incorrect until the JavaScript changes it, bot submissions will be redirected and the form submissions completely disregarded.
  6. Since there is no dynamic code generated for each form, pages with Antibot can be cached safely.
  7. Antibot also generates a unique key value for each form (based on the ID) which is required in order for the form to pass validation. The JavaScript will automatically insert this value in to the form once it is unlocked. This prevents bots from remotely posting forms on your site because that key will be missing.

Use cases

  1. A user has JavaScript enabled. They never know the difference and submit the form as they normally would.
  2. A user does not have JavaScript enabled. The form is hidden and a message is present in it's place, telling them they need JavaScript in order to use the form.
  3. A bot without JavaScript hits your site and attempts to submit the form. Since it does not have JavaScript, the form action redirects them to /antitbot, which is a landing page explaining what happened. The form data is completely disregarded.
  4. A bot with JavaScript hits your site (unlikely). Since Antibot waits for keypresses or mouse/swipe movements, the form remains protected, and the robotic submissions brings them to /antibot, where nothing happens.
  5. A bot remotely posts data to your forms (using something like cURL). This fails validation because Antibot requires a unique key to be present in the values of all protected forms, which it inserts automatically via JavaScript.

How do I set it up?

  1. Install the module like you would any other module.
  2. Navigate to /admin/config/system/antibot (admin/config/user-interface/antibot for D8) and create a list of form Ids that you want to protect. You can use wildcard (*) characters. By default, comment forms, site-wide contact forms, and user forms are protected. There is no limit.
  3. There is an additional admin setting that allows admins to be shown the form IDs of all forms on the page and whether or not they are Antibot-activated.

Drupal 8

The Drupal 8 release is ready for use. The only thing missing at this point is an upgrade path from Drupal 7. Since the configuration is very limited and because many form IDs have changed just manually copy over the form IDs you want activated and review them to make sure they are still valid.

Supporting organizations: 
Development and Maintenance

Project information

Releases