10 August 2008

Pin the X on the Y: a generic web.bot.baffler

Befuddling robots is a topic of some interest to web.heads. Most everyone now uses some form of captcha to vet the humans from the bots.

We at the clue factory have come up with one better, and I really want to build it or get someone to help me build it (and release it open-source, of course). We call it "Pin the X on the Y" or "ptxoty" ("p'tox oh-tee") for short. Here's the idea:

A chunk of JS code defines an object that can be instantiated as many places as you like on a web page: new ptxoty({ args }). You point this object at URLs for several "target" images and a "backdrop" image. Both the targets and backdrop have a "hot" zone defined in them: a square of pixels of given width,height and at a given x,y. For instance, the backdrop might be a goofy cartoon of a cowboy, with a hotspot on the top of his bald head, and the targets could be images of different cartoon hats, with the hotspot in the obvious place: lining up the hotspot on any target with the hotspot on the backdrop should achive the effect of "pinning" the target "on" the backdrop in a meaningful way. One of the targets is defined to be the "right" answer. The combination of targets, backdrop and right-answer form the data of a single ptxoty "bundle", which could be packaged up however on the web server (in lots of little folders named e.g. "cowboy.ptxoty", "barbarian.ptxoty", ...).

The JS code, then, loads up the bundle and displays itself in some reasonable HTML element in the DOM. Instead of a Captcha where the user types something in, the user pins the X on the Y. If they pick the right answer, they have proven they aren't a robot. By having a great big pile of ptxoty's laying around (and constantly coming up with more), you can ask a different one each time. You could even generate them automatically with a little more thought, and there are many possible variations, but that's the basic idea.

If I ever finish working on my current project I will take a stab at ptxoty. If anyone else is interested in this idea and wants to work on it, please contact me, I'd be way more into it right now if I had some help...

No comments:

Post a Comment