website/blog/say-hello-to-mcaptcha/index.html

250 lines
13 KiB
HTML

<!doctype html>
<html lang="en-US">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="preload" as="font" href="/fonts/vendor/jost/jost-v4-latin-regular.woff2" type="font/woff2" crossorigin>
<link rel="preload" as="font" href="/fonts/vendor/jost/jost-v4-latin-700.woff2" type="font/woff2" crossorigin>
<link rel="stylesheet" href="/main.4492eacff4110697cd6162326bce4ee59e92315bf9acc357594066968669326dc80b75b1a39e6cea81c4f8898bd1d294fcc657a9cb61baed14c7dee6f9e2b2d6.css" integrity="sha512-RJLqz/QRBpfNYWIya85O5Z6SMVv5rMNXWUBmloZpMm3IC3Wxo55s6oHE&#43;ImL0dKU/MZXqcthuu0Ux97m&#43;eKy1g==" crossorigin="anonymous">
<noscript><style>img.lazyload { display: none; }</style></noscript>
<meta name="robots" content="index, follow">
<meta name="googlebot" content="index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1">
<meta name="bingbot" content="index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1">
<title>Say hello to mCaptcha - mCaptcha</title>
<meta name="description" content="Introducing mCaptcha, a kickass CAPTCHA systems that gives (DDoS) attackers a run for their money. Oh and UX is great too!">
<link rel="canonical" href="/blog/say-hello-to-mcaptcha/">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:image" content="/blog/say-hello-to-mcaptcha/icon.png">
<meta name="twitter:title" content="Say hello to mCaptcha">
<meta name="twitter:description" content="Introducing mCaptcha, a kickass CAPTCHA systems that gives (DDoS) attackers a run for their money. Oh and UX is great too!">
<meta name="twitter:site" content="@">
<meta name="twitter:creator" content="@">
<meta property="og:title" content="Say hello to mCaptcha">
<meta property="og:description" content="Introducing mCaptcha, a kickass CAPTCHA systems that gives (DDoS) attackers a run for their money. Oh and UX is great too!">
<meta property="og:type" content="article">
<meta property="og:url" content="/blog/say-hello-to-mcaptcha/">
<meta property="og:image" content="/blog/say-hello-to-mcaptcha/icon.png">
<meta property="article:published_time" content="2021-05-26T00:00:00+00:00">
<meta property="article:modified_time" content="2023-02-13T16:50:36+05:30">
<meta property="og:site_name" content="mCaptcha">
<meta property="article:publisher" content="https://www.facebook.com/">
<meta property="article:author" content="https://www.facebook.com/">
<meta property="og:locale" content="en_US">
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [{
"@type": "ListItem",
"position": 1 ,
"name": "Home",
"item": "\/"
},{
"@type": "ListItem",
"position": 2 ,
"name": "Blogsay Hello to Mcaptcha",
"item": "\/blogsay-hello-to-mcaptcha\/"
}]
}
</script>
<meta name="theme-color" content="#fff">
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="manifest" href="/site.webmanifest">
</head>
<body class="blog single">
<div class="header-bar fixed-top"></div>
<header class="navbar fixed-top navbar-expand-md navbar-light">
<div class="container">
<input class="menu-btn order-0" type="checkbox" id="menu-btn">
<label class="menu-icon d-md-none" for="menu-btn"><span class="navicon"></span></label>
<a class="navbar-brand order-1 order-md-0 me-auto" href="/">mCaptcha</a>
<button id="mode" class="btn btn-link order-2 order-md-4" type="button" aria-label="Toggle mode">
<span class="toggle-dark"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-moon"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path></svg></span>
<span class="toggle-light"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-sun"><circle cx="12" cy="12" r="5"></circle><line x1="12" y1="1" x2="12" y2="3"></line><line x1="12" y1="21" x2="12" y2="23"></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line><line x1="1" y1="12" x2="3" y2="12"></line><line x1="21" y1="12" x2="23" y2="12"></line><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line></svg></span>
</button>
<ul class="navbar-nav social-nav order-3 order-md-5">
<li class="nav-item">
<a class="nav-link" href="https://github.com/mCaptcha"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-github"><path d="M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22"></path></svg><span class="ms-2 visually-hidden">GitHub</span></a>
</li>
</ul>
<div class="collapse navbar-collapse order-4 order-md-1">
<ul class="navbar-nav main-nav me-auto order-5 order-md-2"><li class="nav-item active">
<a class="nav-link" href="/blog/">Blog</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/community/">Community</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/contact/">Contact</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/about/">About</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/docs/introduction/installing-captcha/">Docs</a>
</li>
</ul>
<div class="break order-6 d-md-none"></div>
<form class="navbar-form flex-grow-1 order-7 order-md-3">
<input id="userinput" class="form-control is-search" type="search" placeholder="Search docs..." aria-label="Search docs..." autocomplete="off">
<div id="suggestions" class="shadow bg-white rounded"></div>
</form>
</div>
</div>
</header>
<div class="wrap container" role="document">
<div class="content">
<div class="row flex-xl-nowrap">
<nav class="docs-toc d-none d-xl-block col-xl-3" aria-label="Secondary navigation">
<div class="page-links">
<h3>On this page</h3>
<nav id="TableOfContents">
<ul>
<li><a href="#how-does-it-work">How does it work?</a></li>
<li><a href="#okay-but-what-about-bad-actors">Okay, but what about bad actors?</a></li>
<li><a href="#why-use-mcaptcha">Why use mCaptcha?</a></li>
<li><a href="#how-to-migrate">How to migrate?</a></li>
<li><a href="#our-philosophy">Our Philosophy</a></li>
<li><a href="#resources">Resources</a></li>
</ul>
</nav>
</div>
</nav>
<main class="docs-content col-lg-11 col-xl-9 mx-xl-auto">
<article>
<div class="blog-header">
<h1>Say hello to mCaptcha</h1>
<p><small>Posted May 26, 2021 by <a class="stretched-link position-relative" href="/contributors/aravinth-manivannan/">Aravinth Manivannan</a>&nbsp;&hyphen;&nbsp;<strong>2&nbsp;min read</strong></small><p>
<p><small>Last Edited February 13, 2023</small><p>
</div>
<p class="lead">We are mCaptcha. We build kickass CAPTCHA systems that give (DDoS) attackers a run for their money. And we do all of this without tracking your users. Oh and did I mention our UX is great?</p>
<p>At mCaptcha, we believe in digital freedom and privacy and so we built a
<a href="https://en.wikipedia.org/wiki/Proof_of_work">proof-of-work</a> based
CAPTCHA system that doesn&rsquo;t track. Seriously, no tracking. But that
isn&rsquo;t the killer feature, our system doesn&rsquo;t require the user to
pick cars or ID sidewalks &mdash; our system does it&rsquo;s thing(usually
at the click of a button) and gets out of the way.</p>
<h2 id="how-does-it-work">How does it work?</h2>
<p>mCaptcha uses SHA256 based proof-of-work(PoW) to rate limit users.</p>
<p>When a user wants to do something on an mCaptcha-protected website,</p>
<ol>
<li>
<p>they will have to generate proof-of-work(a bunch of math that will
takes time to compute) and submit it to mCaptcha.</p>
</li>
<li>
<p>We&rsquo;ll validate the proof:</p>
</li>
</ol>
<ul>
<li>if validation is unsuccessful, they will be prevented from accessing
the destination website</li>
<li>if validation is successful, read on,</li>
</ul>
<ol start="3">
<li>
<p>They will be issued a token that should be submit along with the
request/form to the destination website.</p>
</li>
<li>
<p>The destination website validates the submitted token with
mCaptcha before processing the request.</p>
</li>
</ol>
<p>The whole process is automated from the user&rsquo;s point of view. All they
have to do is click on a button to initiate the process.</p>
<h2 id="okay-but-what-about-bad-actors">Okay, but what about bad actors?</h2>
<p>mCaptcha makes interacting with websites (computationally)expensive for
the user. A well-behaving user will experience a slight delay(no delay
when under moderate load to 2-3 seconds when under attack; PoW difficulty is
variable) but if someone wants to hammer your site, they will have to do
more work to send requests than your server you will have to do to respond
to their request.</p>
<h2 id="why-use-mcaptcha">Why use mCaptcha?</h2>
<ul>
<li><strong>Free software, privacy focused</strong></li>
<li><strong>Seamless</strong> UX &mdash; No more annoying CAPTCHAs!</li>
<li><strong>IP address independent:</strong> your users are behind a NAT? We got you covered!</li>
<li><strong>Automatic bot throttling</strong></li>
<li><strong>Resistant to replay attacks:</strong> proof-of-work configurations have short lifetimes(30s) and can be used only once. If a user submits a PoW to an already used configuration or an expired one, their proof will be rejected.</li>
</ul>
<h2 id="how-to-migrate">How to migrate?</h2>
<p>Our client libraries are mostly compatible with reCAPTCHA and hCaptcha.
A detailed guide will be published soon.</p>
<h2 id="our-philosophy">Our Philosophy</h2>
<p>Man has has come so far only because our ancestors chose to
share their knowledge with others. If everything was labeled
intellectual property, we might still be stuck in Stone Age. The idea of
intellectual property is alien to us. For this reason, all of our source
code is freely available(both as in freedom and beers) at <a href="https://github.com/mCaptcha/">our
GitHub</a>.</p>
<h2 id="resources">Resources</h2>
<ul>
<li><a href="https://github.com/mCaptcha/guard">guard</a> - mCaptcha backend <code>AGPL</code></li>
<li><a href="https://github.com/mCaptcha/browser">frontend library</a> - mCaptcha frontend library. <code>MIT/APACHE</code></li>
</ul>
</article>
<div class="docs-navigation d-flex justify-content-between">
<a href="/blog/pow-performance/">
<div class="card my-1">
<div class="card-body py-2">
&larr; PoW performance
</div>
</div>
</a>
</div>
<p class="edit-page"><a href="https://github.com/mCaptcha/website/blob/master/content/blog/say-hello-to-mcaptcha/index.md"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-edit-2"><path d="M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"></path></svg>Edit this page on GitHub</a></p>
</main>
</div>
</div>
</div>
<footer class="footer text-muted">
<div class="container">
<div class="row">
<div class="col-lg-8 order-last order-lg-first">
<ul class="list-inline">
<li class="list-inline-item">Powered by <a href="https://gohugo.io/">Hugo</a>, and <a href="https://getdoks.org/">Doks</a></li>
</ul>
</div>
<div class="col-lg-8 order-first order-lg-last text-lg-end">
<ul class="list-inline">
<li class="list-inline-item"><a href="/about/">About</a></li>
<li class="list-inline-item"><a href="/donate">Donate</a></li>
<li class="list-inline-item"><a href="/privacy-policy/">Privacy</a></li>
<li class="list-inline-item"><a href="/security">Security</a></li>
<li class="list-inline-item"><a href="https://stats.uptimerobot.com/GK7VLFJnBl">Status</a></li>
<li class="list-inline-item"><a href="/thanks">Thanks</a></li>
</ul>
</div>
</div>
</div>
</footer>
<script src="/main.min.fc14a6a9dceb7093b6984e33583a45c79e3c960959d75df6b62753b4d1c63a97d25af2b0ca924ed12675f1de34f3fce9ec81668f2d3bee114b9b6357dd2e92cd.js" integrity="sha512-/BSmqdzrcJO2mE4zWDpFx548lglZ1132tidTtNHGOpfSWvKwypJO0SZ18d408/zp7IFmjy077hFLm2NX3S6SzQ==" crossorigin="anonymous" defer></script>
<script src="/index.min.f24b6e33dac74771476dda67fe905af998983abef17f74f74d71228ac8f40f87af8b15bcd9f0da775c90a41395c3d153fb0067cc75ff642c520b3607340014c0.js" integrity="sha512-8ktuM9rHR3FHbdpn/pBa&#43;ZiYOr7xf3T3TXEiisj0D4evixW82fDad1yQpBOVw9FT&#43;wBnzHX/ZCxSCzYHNAAUwA==" crossorigin="anonymous" defer></script>
</body>
</html>