npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

als-captcha

v1.0.0

Published

Advanced CAPTCHA library

Downloads

19

Readme

als-captcha

als-captcha is a Node.js library for generating and validating a simple yet effective captcha. It employs a combination of image recognition with noise and tilt, basic math problem solving, and several other strategies to differentiate between human users and bots.

Installation

To install als-captcha, use npm:

npm i als-captcha

Usage

Generating Captcha HTML

To generate a captcha, you need to create a route that returns HTML containing the captcha challenge. The als-captcha library provides an easy way to generate this HTML.

Example:

const { createCaptcha } = require('als-captcha');

app.get('/captcha', (req, res) => {
    const captchaHtml = createCaptcha({ includeAudio:true, maxAge:1000*60*10 })
    res.send(`<!DOCTYPE html>
<html lang="en">
<head>
   <title>HEllo</title>
</head>

<body>
    <form>
        ${captchaHtml}
    </form>
<body>
</html>
`);
});

Parameters:

  • includeAudio:(default:true) - if true, sends audio for listening problem to solve
  • maxAge:(default:10006010) - captcha life time (after this time, captcha outdated)

Validating Captcha

To validate the captcha, create a route where the captcha form is submitted. The als-captcha library provides a function to validate the captcha response.

Example:

const { checkCaptcha } = require('als-captcha');

app.post('/submit-captcha', (req, res) => {
    if (checkCaptcha(req.body)) {
        res.send("right");
    } else {
        res.send("wrong");
    }
});

Security Strategies

als-captcha uses multiple strategies to enhance security:

  • Image Recognition Challenge: A captcha image with noise, tilt, and bot-unfriendly font.
  • Math Problem Solving: A basic math problem that must be solved correctly, ensuring complete text recognition.
  • Hidden importantInfo Field: Remains empty and is used to detect bots that might fill it.
  • Bot Detection through onchange Event: If the onchange event does not trigger, the bot field retains its default value, indicating a bot.
  • Timestamp and Screen Dimension Check: Captures the time taken to complete the captcha and multiplies the screen's color depth with its width to generate a unique number, which helps in bot detection.