32 lines
No EOL
16 KiB
HTML
32 lines
No EOL
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.c5ebec6f69f6fedddbd813e6fbeec336e7050cd17bb6fef39275d0956f6115409a7083647b41bca8cc86d5c0a35d49b0692a89702d12c76f9b8d315ea33c0b87.css integrity="sha512-xevsb2n2/t3b2BPm++7DNucFDNF7tv7zknXQlW9hFUCacINke0G8qMyG1cCjXUmwaSqJcC0Sx2+bjTFeozwLhw==" 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> ‐ <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_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’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>"time"</span>:<span style=color:#bd93f9>14</span>,
|
|
<span style="margin-right:.4em;padding:0 .4em;color:#7f7f7f">2</span><span style=color:#f1fa8c>"difficulty_factor"</span>:<span style=color:#bd93f9>50000</span>,
|
|
<span style="margin-right:.4em;padding:0 .4em;color:#7f7f7f">3</span><span style=color:#f1fa8c>"worker_type"</span>:<span style=color:#f1fa8c>"wasm"</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_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 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 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.80cc62918990f0b9afd15b81ea43df0bc0090a2419660eb4a32b4d122db3bdd007faabd824064bd5d275cbeb3d1e2d2bd650220c94c2ef3aeffb4dc2ef6551f5.js integrity="sha512-gMxikYmQ8Lmv0VuB6kPfC8AJCiQZZg60oytNEi2zvdAH+qvYJAZL1dJ1y+s9Hi0r1lAiDJTC7zrv+03C72VR9Q==" crossorigin=anonymous defer></script></body></html> |