A GNU spirited Libre Captcha

sagaracharya b0c6afee87 changed license from AGPL to Apache %!s(int64=4) %!d(string=hai) anos
images 87168cc508 compressed images and added movability %!s(int64=4) %!d(string=hai) anos
vanillajs 55bf88eb98 added README and streamlined for ease of users %!s(int64=4) %!d(string=hai) anos
LICENSE b0c6afee87 changed license from AGPL to Apache %!s(int64=4) %!d(string=hai) anos
README.md b0c6afee87 changed license from AGPL to Apache %!s(int64=4) %!d(string=hai) anos
gaptcha.html b0c6afee87 changed license from AGPL to Apache %!s(int64=4) %!d(string=hai) anos
jquery-ui.min.css 04498973d4 added jquery ui, corrected object placing and boxes %!s(int64=4) %!d(string=hai) anos
jquery-ui.min.js 04498973d4 added jquery ui, corrected object placing and boxes %!s(int64=4) %!d(string=hai) anos
jquery.min.js 04498973d4 added jquery ui, corrected object placing and boxes %!s(int64=4) %!d(string=hai) anos

README.md

Gaptcha

A GNU spirited Libre Captcha

Dependencies : JQuery, JQuery-UI

Logic : There are 2 things which pose difficulties for bots. Number of actions available, only 4 here yet and the context of the question.

User Guide :

  1. Clone this repo.
  2. Ensure you have jquery.min.js, jquery-ui.min.css, jquery-ui.min.js and images in your static folder
  3. Ensure style attributes don't clash with your own styles.
  4. From gaptcha.html, copy head contents to your head and body to your body. [Don't trust us. Check that there's no backdoor in them.]
  5. Create a div with id="gaptcha" where your final form element will be.
  6. Extract form value and check the answer at your backend.
  7. Give a star to gaptcha if you found it useful!

Troubleshooting :

  1. Ensure your static files are linked correctly and you have jquery before jquery-ui

Contributing :

  1. You can contribute by adding more instances of the captcha which include:
    • A set of images (Should be similar to each other in properties and different for the user)
    • Answer
    • Question posed to the user (Should be a no-brainer)

Guide to framing the question:

The question must be something contextual like "Drag the actor of movie Titanic to the box". This makes things difficult 2-fold for a bot. First, finding the actor, recognizing the image("always keep colored images") and dragging the respective image to the box.

Guide to selecting images:

Image classification is almost a solved task. Due to this, one should prevent having only a single image with high similarity to the words in question.

Future Goals:

  1. Having more questions and answers so that users can choose on random from backend.
  2. Removing jquery dependency and making it in javascript. (Improbable as I hate javascript)