
Show HN: Comntr captchas – a stateless service to stop spammers - comntr
https://comntr.github.io/
======
comntr
The captcha is basically a question to add two 2-digit numbers, e.g. 23+45.
The question is returned as an SVG picture.

The hypothesis is that the need to engage brain even for 3 seconds is enough
to stop 99% of the spammers, so the quality of comments should shoot through
the roof.

The way it works is each comment has a sha1 hash and from that hash we can
derive the 2 numbers. No state needed.

Sources of the service:
[https://github.com/comntr/captcha](https://github.com/comntr/captcha)

~~~
luckylion
Have you tested that hypothesis? In my experience, the real annoyance comes
from people that are very persistent and aren't easily deterred by requiring a
small effort. Captchas slow them down (by the time they need to solve the
captcha), but they'll also slow down everyone else.

Adding effort so you have to _really_ want to comment may be a good idea to
reduce the amount of comment, but it might also deprive you of valuable
comments because people don't care that much about sharing some information
that they'll jump through hoops to do it.

~~~
comntr
That's what I'm trying to test. Last time I've got 800 mostly meaningless
comments.

The idea is to stop numerous zergs: you can't ban them one by one, but a
little bump on their way can do the job.

To avoid annoying more serious commenters, the captcha should be as simple as
it can be. So asking to add 321+625 would be too much, while a question like
2+4 doesn't need any thinking, so I chose two-digit numbers.

This is a small social experiment. I don't know how it'll go.

------
gitgud
Getting an error in Chrome

    
    
        supercop.js:24 Uncaught (in promise) TypeError: Cannot read property 'apply' of undefined
            at a._malloc (supercop.js:24)
            at h (supercop.js:28)
            at Object.createKeyPair (index.js:50)
            at getUserKeys (user.js:65)
            at async Object.getPublicKey (user.js:137)
            at async refresh (index.js:16)

