240 lines
18 KiB
HTML
240 lines
18 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.b63ce50dfa61fad6110b3083ff8c73329c5faa56efa9fce74542ba32665b6f205859f41203427020164409ce1a5ad12d0114f490f7a4b511dc1f99b633255661.css" integrity="sha512-tjzlDfph+tYRCzCD/4xzMpxfqlbvqfznRUK6MmZbbyBYWfQSA0JwIBZECc4aWtEtART0kPektRHcH5m2MyVWYQ==" 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>Introducing mCaptcha net - mCaptcha</title>
|
|
<meta name="description" content="A network of mCaptcha instances sharing PoW stats to make mCaptcha more efficient and accessible">
|
|
<link rel="canonical" href="/blog/introducing-mcaptcha-net/">
|
|
<meta name="twitter:card" content="summary_large_image">
|
|
<meta name="twitter:image" content="/blog/introducing-mcaptcha-net/icon.png">
|
|
<meta name="twitter:title" content="Introducing mCaptcha net">
|
|
<meta name="twitter:description" content="A network of mCaptcha instances sharing PoW stats to make mCaptcha more efficient and accessible">
|
|
|
|
<meta name="twitter:site" content="@">
|
|
<meta name="twitter:creator" content="@">
|
|
|
|
<meta property="og:title" content="Introducing mCaptcha net">
|
|
<meta property="og:description" content="A network of mCaptcha instances sharing PoW stats to make mCaptcha more efficient and accessible">
|
|
<meta property="og:type" content="article">
|
|
<meta property="og:url" content="/blog/introducing-mcaptcha-net/">
|
|
<meta property="og:image" content="/blog/introducing-mcaptcha-net/icon.png">
|
|
<meta property="article:published_time" content="2023-10-19T00:00:00+00:00">
|
|
<meta property="article:modified_time" content="2023-10-21T16:48:55+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": "Blogintroducing Mcaptcha Net",
|
|
"item": "\/blogintroducing-mcaptcha-net\/"
|
|
}]
|
|
}
|
|
</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/webmasters/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="#participation-is-optional">Participation is optional</a></li>
|
|
<li><a href="#ensuring-anonymity">Ensuring anonymity</a></li>
|
|
<li><a href="#status">Status</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>Introducing mCaptcha net</h1>
|
|
<p><small>Posted October 19, 2023 by <a class="stretched-link position-relative" href="/contributors/aravinth-manivannan/">Aravinth Manivannan</a> ‐ <strong>2 min read</strong></small><p>
|
|
<p><small>Last Edited October 21, 2023</small><p>
|
|
|
|
</div>
|
|
<p class="lead"></p>
|
|
<p>mCaptcha uses a Proof-of-Work (PoW) based algorithm to offer
|
|
Denial-of-Service protection, because of <a href="https://www.w3.org/TR/turingtest/#proof-of-work">its excellent accessibility
|
|
characteristics</a>. PoW
|
|
within mCaptcha is configuration — webmasters can configure
|
|
<a href="/docs/terminology/difficulty-factor">difficulty factors</a> for their
|
|
installations, which determines waiting time for visitors. But PoW can
|
|
become inaccessible if webmasters choose a very high difficulty factor.
|
|
So they have to maintain a balance which imposes sufficient load on DDoS
|
|
attackers while also being accessible to common folk.</p>
|
|
<div class="alert alert-warning d-flex" role="alert">
|
|
<div class="flex-shrink-1 alert-icon">⭐</div>
|
|
<div class="w-100"> mCaptcha installation: integration of the mCaptcha widget to a service.</div>
|
|
</div>
|
|
<p>To help webmasters correctly configure difficult factors, we are
|
|
building a feedback loop which would gather performance statistics from
|
|
voluntary mCaptcha installations and make them available to other
|
|
mCaptcha installations. The performance statistics can be used by all
|
|
mCaptcha instances to automatically optimize an installation. We are
|
|
calling this the mCaptcha net.</p>
|
|
<h2 id="participation-is-optional">Participation is optional</h2>
|
|
<p>Participation in the mCaptcha net is disabled by default and is
|
|
optional as it has privacy implications: it will reveal the
|
|
existence of an mCaptcha instance.</p>
|
|
<p>The admins of mCaptcha instances can choose to upload truly anonymous
|
|
PoW performance statistics to a number of <a href="https://git.batsense.net/mCaptcha/survey">mCaptcha/survey</a> instances.
|
|
The data uploaded is public and so is accessible to all mCaptcha
|
|
instances.</p>
|
|
<p>We also offer opt-in controls at installation level:</p>
|
|
<figure>
|
|
<img class="img-fluid lazyload blur-up" data-sizes="auto" src="/blog/introducing-mcaptcha-net/installation-level-opt-in_huf73c7a9ce7ec84ce553fffad281cd7ba_53366_20x0_resize_box_3.png" data-srcset="/blog/introducing-mcaptcha-net/installation-level-opt-in_huf73c7a9ce7ec84ce553fffad281cd7ba_53366_900x0_resize_box_3.png 900w,/blog/introducing-mcaptcha-net/installation-level-opt-in_huf73c7a9ce7ec84ce553fffad281cd7ba_53366_800x0_resize_box_3.png 800w,/blog/introducing-mcaptcha-net/installation-level-opt-in_huf73c7a9ce7ec84ce553fffad281cd7ba_53366_700x0_resize_box_3.png 700w,/blog/introducing-mcaptcha-net/installation-level-opt-in_huf73c7a9ce7ec84ce553fffad281cd7ba_53366_600x0_resize_box_3.png 600w,/blog/introducing-mcaptcha-net/installation-level-opt-in_huf73c7a9ce7ec84ce553fffad281cd7ba_53366_500x0_resize_box_3.png 500w" width="759" height="745" alt="A screenshot of the 'add sitekey' form on the mCaptcha dashboard with a checkbox for anonymously publishing performance statistics. It is not checked by default.">
|
|
<noscript><img class="img-fluid" sizes="100vw" srcset="/blog/introducing-mcaptcha-net/installation-level-opt-in_huf73c7a9ce7ec84ce553fffad281cd7ba_53366_900x0_resize_box_3.png 900w,/blog/introducing-mcaptcha-net/installation-level-opt-in_huf73c7a9ce7ec84ce553fffad281cd7ba_53366_800x0_resize_box_3.png 800w,/blog/introducing-mcaptcha-net/installation-level-opt-in_huf73c7a9ce7ec84ce553fffad281cd7ba_53366_700x0_resize_box_3.png 700w,/blog/introducing-mcaptcha-net/installation-level-opt-in_huf73c7a9ce7ec84ce553fffad281cd7ba_53366_600x0_resize_box_3.png 600w,/blog/introducing-mcaptcha-net/installation-level-opt-in_huf73c7a9ce7ec84ce553fffad281cd7ba_53366_500x0_resize_box_3.png 500w" src="/blog/introducing-mcaptcha-net/installation-level-opt-in.png" width="759" height="745" alt="A screenshot of the 'add sitekey' form on the mCaptcha dashboard with a checkbox for anonymously publishing performance statistics. It is not checked by default."></noscript>
|
|
<figcaption class="figure-caption">Add sitekey form on the mCaptcha dashboard with a checkbox for anonymously publishing performance statistics. It is not checked by default.</figcaption>
|
|
</figure>
|
|
<h2 id="ensuring-anonymity">Ensuring anonymity</h2>
|
|
<p>mCaptcha doesn’t fingerprint its users. Performance parameters include:</p>
|
|
<ol>
|
|
<li>Time taken to generate PoW</li>
|
|
<li>The difficulty factor for which the PoW was computed</li>
|
|
<li>Type of client library used.</li>
|
|
</ol>
|
|
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">1</span><span><span style="color:#f1fa8c">"time"</span>:<span style="color:#bd93f9">14</span>,
|
|
</span></span><span style="display:flex;"><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">2</span><span><span style="color:#f1fa8c">"difficulty_factor"</span>:<span style="color:#bd93f9">50000</span>,
|
|
</span></span><span style="display:flex;"><span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f">3</span><span><span style="color:#f1fa8c">"worker_type"</span>:<span style="color:#f1fa8c">"wasm"</span>
|
|
</span></span></code></pre></div><p>This doesn’t include the usual fingerprinting parameters like
|
|
User-Agent, cookies, and IP address. Additionally, we use pseudo IDs
|
|
at both mCaptcha/mCaptcha and mCaptcha/survey to avoid exposing installations.</p>
|
|
<figure>
|
|
<img class="img-fluid lazyload blur-up" data-sizes="auto" src="/blog/introducing-mcaptcha-net/working-rpc_huca78e586ec60552618ec5b6b3f0d9a9a_322974_20x0_resize_box_3.png" data-srcset="/blog/introducing-mcaptcha-net/working-rpc_huca78e586ec60552618ec5b6b3f0d9a9a_322974_900x0_resize_box_3.png 900w,/blog/introducing-mcaptcha-net/working-rpc_huca78e586ec60552618ec5b6b3f0d9a9a_322974_800x0_resize_box_3.png 800w,/blog/introducing-mcaptcha-net/working-rpc_huca78e586ec60552618ec5b6b3f0d9a9a_322974_700x0_resize_box_3.png 700w,/blog/introducing-mcaptcha-net/working-rpc_huca78e586ec60552618ec5b6b3f0d9a9a_322974_600x0_resize_box_3.png 600w,/blog/introducing-mcaptcha-net/working-rpc_huca78e586ec60552618ec5b6b3f0d9a9a_322974_500x0_resize_box_3.png 500w" width="1842" height="1008" alt="A screenshot of a tmux window with logs of mCaptcha/mCaptcha and mCapctha/survey showing both of them talking to eachother">
|
|
<noscript><img class="img-fluid" sizes="100vw" srcset="/blog/introducing-mcaptcha-net/working-rpc_huca78e586ec60552618ec5b6b3f0d9a9a_322974_900x0_resize_box_3.png 900w,/blog/introducing-mcaptcha-net/working-rpc_huca78e586ec60552618ec5b6b3f0d9a9a_322974_800x0_resize_box_3.png 800w,/blog/introducing-mcaptcha-net/working-rpc_huca78e586ec60552618ec5b6b3f0d9a9a_322974_700x0_resize_box_3.png 700w,/blog/introducing-mcaptcha-net/working-rpc_huca78e586ec60552618ec5b6b3f0d9a9a_322974_600x0_resize_box_3.png 600w,/blog/introducing-mcaptcha-net/working-rpc_huca78e586ec60552618ec5b6b3f0d9a9a_322974_500x0_resize_box_3.png 500w" src="/blog/introducing-mcaptcha-net/working-rpc.png" width="1842" height="1008" alt="A screenshot of a tmux window with logs of mCaptcha/mCaptcha and mCapctha/survey showing both of them talking to eachother"></noscript>
|
|
<figcaption class="figure-caption">mCaptcha/mCaptcha uploading performance statistics to a mCaptcha/survey instance</figcaption>
|
|
</figure>
|
|
<h2 id="status">Status</h2>
|
|
<p>We now have performance statistics uploads to mCaptcha/survey instances
|
|
working. Pull request <a href="https://github.com/mCaptcha/mCaptcha/pull/92">mCaptcha/mCaptcha#92</a>
|
|
added abilities to mCaptcha to upload statistics to mCaptcha/survey instances and
|
|
<a href="https://git.batsense.net/mCaptcha/survey/pulls/17">mCaptcha/survey#40</a> enable survey to process the uploaded data. We will soon build a
|
|
self-tuning algorithm within mCaptcha to use this data and optimize
|
|
installations automatically.</p>
|
|
|
|
</article>
|
|
<div class="docs-navigation d-flex justify-content-between">
|
|
|
|
<a class="ms-auto" href="/blog/february-2023-monthly-report/">
|
|
<div class="card my-1">
|
|
<div class="card-body py-2">
|
|
February, 2023: Monthly Report →
|
|
</div>
|
|
</div>
|
|
</a>
|
|
</div>
|
|
|
|
<p class="edit-page"><a href="https://git.batsense.net/mCaptcha/website/blob/master/content/blog/10-20-mcaptcha-net/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 git.batsense.net</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.bc2465e4e1abda257c622bf89b85235da437778b3e3f80e01762312382cc27d4e50a8a4de22e464dc82e3a61039da8aef9d6d5e62b76711fa93d9663860b1926.js" integrity="sha512-vCRl5OGr2iV8Yiv4m4UjXaQ3d4s+P4DgF2IxI4LMJ9TlCopN4i5GTcguOmEDnaiu+dbV5it2cR+pPZZjhgsZJg==" crossorigin="anonymous" defer></script>
|
|
<script src="/index.min.39f65050268d816f7a57ee89577dd6b7c861ed858fdbfd100931444f0bb1609ea23d7d4ddc1997c8401f4553ca412051d7fd12a5b0a675c6053b7d9dc9c2cc98.js" integrity="sha512-OfZQUCaNgW96V+6JV33Wt8hh7YWP2/0QCTFETwuxYJ6iPX1N3BmXyEAfRVPKQSBR1/0SpbCmdcYFO32dycLMmA==" crossorigin="anonymous" defer></script>
|
|
|
|
</body>
|
|
</html>
|