Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

InfoPeak Captcha for Node.js

Server-side verification for InfoPeak Captcha - the privacy-first, EU-hosted captcha. No tracking, no cookies, no image puzzles.

Install

npm install @infopeak/captcha

Requires Node.js 18+ (uses the built-in fetch). Zero dependencies. Ships ESM, CommonJS and TypeScript types.

Usage

Add the widget to your form (full guide):

<form action="/signup" method="POST">
  <input type="email" name="email" required>
  <div class="infopeak-captcha" data-sitekey="YOUR_SITEKEY"></div>
  <button type="submit">Sign up</button>
</form>
<script src="https://captcha.infopeak.io/infopeak-captcha.js" defer></script>

Verify the token when the form is submitted (Express example):

import { verify, FIELD } from '@infopeak/captcha';

app.post('/signup', async (req, res) => {
  const ok = await verify(req.body[FIELD], {
    sitekey: 'YOUR_SITEKEY',
    secret: process.env.INFOPEAK_CAPTCHA_SECRET,
  });
  if (!ok) {
    return res.status(400).send('Captcha verification failed');
  }
  // ... proceed
});

Need quota information too?

import { verifyDetailed, FIELD } from '@infopeak/captcha';

const { valid, overLimit } = await verifyDetailed(token, { sitekey, secret });

Verification fails closed: network errors and non-200 responses return valid: false.

Retrying a rejected submission

Tokens are single-use. If you reject a submission and leave the visitor on the same page - an AJAX form, a wrong password, a validation error - the token already in the form is spent, and the next attempt fails on the captcha instead of on the real problem. Ask the widget for a fresh one:

window.infopeakCaptcha.reset();

// Or one specific widget, by element or CSS selector.
window.infopeakCaptcha.reset('#signup-captcha');

reset() clears the hidden field and solves again immediately, and returns the number of widgets it reset. Plain form posts do not need this - the page reload builds a new widget anyway.

Testing

Public test credentials that work on any domain and never count against a quota (never use in production):

sitekey: ipk_test_sitekey
secret:  ipk_test_secret

Links

License

MIT

About

Node.js client for InfoPeak Captcha - privacy-first, EU-hosted. No tracking, no cookies, no puzzles.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages