website/blog/introducing-mcaptcha-net/index.html

32 lines
16 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.f998e900ad1763639b2de999d219c60a588fb531888a0672d99b77aca3c151f84bdf80fcc8ca4046d0c23b9d5873eb2d32c59c17011fead4bedea7bc2b062d61.css integrity="sha512-+ZjpAK0XY2ObLemZ0hnGCliPtTGIigZy2Zt3rKPBUfhL34D8yMpARtDCO51Yc+stMsWcFwEf6tS+3qe8KwYtYQ==" 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 1111.21 3 7 7 0 0021 12.79z"/></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"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/></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 00-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44.0 0020 4.77 5.07 5.07.0 0019.91 1S18.73.65 16 2.48a13.38 13.38.0 00-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07.0 005 4.77 5.44 5.44.0 003.5 8.55c0 5.42 3.3 6.61 6.44 7A3.37 3.37.0 009 18.13V22"/></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>&nbsp;&dash;&nbsp;<strong>2&nbsp;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 &mdash; 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_2.png data-srcset="/blog/introducing-mcaptcha-net/installation-level-opt-in_huf73c7a9ce7ec84ce553fffad281cd7ba_53366_900x0_resize_box_2.png 900w,/blog/introducing-mcaptcha-net/installation-level-opt-in_huf73c7a9ce7ec84ce553fffad281cd7ba_53366_800x0_resize_box_2.png 800w,/blog/introducing-mcaptcha-net/installation-level-opt-in_huf73c7a9ce7ec84ce553fffad281cd7ba_53366_700x0_resize_box_2.png 700w,/blog/introducing-mcaptcha-net/installation-level-opt-in_huf73c7a9ce7ec84ce553fffad281cd7ba_53366_600x0_resize_box_2.png 600w,/blog/introducing-mcaptcha-net/installation-level-opt-in_huf73c7a9ce7ec84ce553fffad281cd7ba_53366_500x0_resize_box_2.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_2.png 900w,/blog/introducing-mcaptcha-net/installation-level-opt-in_huf73c7a9ce7ec84ce553fffad281cd7ba_53366_800x0_resize_box_2.png 800w,/blog/introducing-mcaptcha-net/installation-level-opt-in_huf73c7a9ce7ec84ce553fffad281cd7ba_53366_700x0_resize_box_2.png 700w,/blog/introducing-mcaptcha-net/installation-level-opt-in_huf73c7a9ce7ec84ce553fffad281cd7ba_53366_600x0_resize_box_2.png 600w,/blog/introducing-mcaptcha-net/installation-level-opt-in_huf73c7a9ce7ec84ce553fffad281cd7ba_53366_500x0_resize_box_2.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&rsquo;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 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="margin-right:.4em;padding:0 .4em;color:#7f7f7f">1</span><span style=color:#f1fa8c>&#34;time&#34;</span>:<span style=color:#bd93f9>14</span>,
<span style="margin-right:.4em;padding:0 .4em;color:#7f7f7f">2</span><span style=color:#f1fa8c>&#34;difficulty_factor&#34;</span>:<span style=color:#bd93f9>50000</span>,
<span style="margin-right:.4em;padding:0 .4em;color:#7f7f7f">3</span><span style=color:#f1fa8c>&#34;worker_type&#34;</span>:<span style=color:#f1fa8c>&#34;wasm&#34;</span>
</code></pre></div><p>This doesn&rsquo;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_2.png data-srcset="/blog/introducing-mcaptcha-net/working-rpc_huca78e586ec60552618ec5b6b3f0d9a9a_322974_900x0_resize_box_2.png 900w,/blog/introducing-mcaptcha-net/working-rpc_huca78e586ec60552618ec5b6b3f0d9a9a_322974_800x0_resize_box_2.png 800w,/blog/introducing-mcaptcha-net/working-rpc_huca78e586ec60552618ec5b6b3f0d9a9a_322974_700x0_resize_box_2.png 700w,/blog/introducing-mcaptcha-net/working-rpc_huca78e586ec60552618ec5b6b3f0d9a9a_322974_600x0_resize_box_2.png 600w,/blog/introducing-mcaptcha-net/working-rpc_huca78e586ec60552618ec5b6b3f0d9a9a_322974_500x0_resize_box_2.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_2.png 900w,/blog/introducing-mcaptcha-net/working-rpc_huca78e586ec60552618ec5b6b3f0d9a9a_322974_800x0_resize_box_2.png 800w,/blog/introducing-mcaptcha-net/working-rpc_huca78e586ec60552618ec5b6b3f0d9a9a_322974_700x0_resize_box_2.png 700w,/blog/introducing-mcaptcha-net/working-rpc_huca78e586ec60552618ec5b6b3f0d9a9a_322974_600x0_resize_box_2.png 600w,/blog/introducing-mcaptcha-net/working-rpc_huca78e586ec60552618ec5b6b3f0d9a9a_322974_500x0_resize_box_2.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 href=/blog/testing-on-screenreaders/><div class="card my-1"><div class="card-body py-2">&larr; Testing on screenreaders</div></div></a><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 &rarr;</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 114 4L7.5 20.5 2 22l1.5-5.5L17 3z"/></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.993b2b4c58b07e7a4bb3423cf18ccd78a85d0063680c0fc9bf6d9cc02be98e08793034d984dd8f7c60ad5b70f3186cc8bc280b1077b7e37c2d64f36f118099bb.js integrity="sha512-mTsrTFiwfnpLs0I88YzNeKhdAGNoDA/Jv22cwCvpjgh5MDTZhN2PfGCtW3DzGGzIvCgLEHe343wtZPNvEYCZuw==" crossorigin=anonymous defer></script><script src=/index.min.54509ba7c5e639f5ec4ae9409f76e99f01de45aae0c450b398bb04083016dc4213a82a49528708fd7d36c22e60debacd894f3dbdc3a30fa796132f9a541ccdab.js integrity="sha512-VFCbp8XmOfXsSulAn3bpnwHeRargxFCzmLsECDAW3EITqCpJUocI/X02wi5g3rrNiU89vcOjD6eWEy+aVBzNqw==" crossorigin=anonymous defer></script></body></html>