feat: rm prologue and add installing mcaptcha guide
BIN
content/docs/introduction/installing-captcha/copy-sitekey.png
Normal file
After Width: | Height: | Size: 62 KiB |
136
content/docs/introduction/installing-captcha/index.md
Normal file
|
@ -0,0 +1,136 @@
|
||||||
|
---
|
||||||
|
title: "Installing mCaptcha on your website"
|
||||||
|
description: "Interested in deploying mCpatcha? From deploying a self-hosted instance to installing the CAPTCHA on your website, this guide will have you covered!"
|
||||||
|
lead: ""
|
||||||
|
date: 2022-06-22
|
||||||
|
lastmod: 2022-08-01 20:17
|
||||||
|
draft: false
|
||||||
|
images: []
|
||||||
|
menu:
|
||||||
|
docs:
|
||||||
|
parent: "Introduction"
|
||||||
|
weight: 511
|
||||||
|
toc: true
|
||||||
|
---
|
||||||
|
|
||||||
|
mCaptcha can protect your website from DDoS attacks. In this guide we'll
|
||||||
|
explore how to install mCaptcha on your website. The end result will be
|
||||||
|
something like this, on your website:
|
||||||
|
|
||||||
|
{{% img src="mcaptcha-widget-installation-result.png" alt="A registration form with mCaptcha widget installed" %}}
|
||||||
|
|
||||||
|
For the purpose of this demo, we will be using
|
||||||
|
[demo.mcaptcha.org](https://demo.mcaptcha.org), a demo instance running
|
||||||
|
in @realaravinth's bedroom(for this same reason, it shouldn't be used
|
||||||
|
for anything serious)
|
||||||
|
|
||||||
|
## 1. Create an account and sign into the mCaptcha dashboard
|
||||||
|
|
||||||
|
Head over to [demo.mcaptcha.org](https://demo.mcaptcha.org/join) and
|
||||||
|
create an account. When ready, sign in.
|
||||||
|
|
||||||
|
## 2. Create new site key
|
||||||
|
|
||||||
|
A [site key](../configuring-difficulty-factor/) is how a new CAPTCHA is configured within mCaptcha. To create
|
||||||
|
a new site key, click on "New Site" button in the dashboard.
|
||||||
|
|
||||||
|
{{% img src="new-sitekey-btn.png" alt="mCaptcha dashboard with the 'new site key' button highlighted" %}}
|
||||||
|
|
||||||
|
There are two options to create a new site key, easy and advanced. **We
|
||||||
|
are going to use the easy mode in this tutorial.** If you are interested
|
||||||
|
in learning more about the advance mode, please see [here](../configuring-difficulty-factor#advance-option).
|
||||||
|
|
||||||
|
> ### [Easy Mode](../configuring-difficulty-factor#easy-option)
|
||||||
|
>
|
||||||
|
> Easy mode asks a few basic statistics about your website and generates a
|
||||||
|
> configuration that should work for your website. Currently, easy mode is
|
||||||
|
> guided by assumptions on suitable difficulty factors to protect a
|
||||||
|
> website but it will be fine-tuned as mCaptcha sees more deployment.
|
||||||
|
>
|
||||||
|
> Configuration generated by easy mode can be tweaked later using the
|
||||||
|
> advance mode, as you become more familiar with how mCaptcha works.
|
||||||
|
|
||||||
|
Fill the form and submit it.
|
||||||
|
|
||||||
|
{{% img src="new-sitekey-easy-mode-filled.png" alt="mCaptcha dashboard with the 'new site key' form in easy mode, with details filled in" %}}
|
||||||
|
|
||||||
|
## 3. Copy widget link
|
||||||
|
|
||||||
|
Submitting the form will take you to a page where site key configuration
|
||||||
|
can be viewed. "View deployment" link will display CAPTCHA widget with
|
||||||
|
the supplied configuration. Click on it and grab the widget link.
|
||||||
|
|
||||||
|
## 4. Install mCaptcha on your website
|
||||||
|
|
||||||
|
Integration support is available for some frontend JavaScript
|
||||||
|
frameworks. To see full list of supported frameworks, please see
|
||||||
|
[here](https://github.com/mCaptcha/glue#framework-support).
|
||||||
|
|
||||||
|
There are two options to use the integration library to integrate
|
||||||
|
mCaptcha on your website:
|
||||||
|
|
||||||
|
1. Serve the integration library yourself
|
||||||
|
2. Use a CDN like unpkg.com
|
||||||
|
|
||||||
|
In this tutorial, we'll be using the CDN.
|
||||||
|
|
||||||
|
**Pasting the following snippet on the page, within the form** that requires to be protected
|
||||||
|
will load the mCaptcha widget with the configuration supplied. Be sure
|
||||||
|
to replace `Your {{paste your widget link}}` with the link obtained from
|
||||||
|
the previous step.
|
||||||
|
|
||||||
|
```html
|
||||||
|
<div id="mcaptcha__widget-container"></div>
|
||||||
|
<script src="https://unpkg.com/@mcaptcha/vanilla-glue@0.1.0-alpha-2/dist/index.js"></script>
|
||||||
|
<script charset="utf-8">
|
||||||
|
let config = {
|
||||||
|
widgetLink: new URL(
|
||||||
|
{{paste yout widget link}}
|
||||||
|
),
|
||||||
|
};
|
||||||
|
new mcaptchaGlue.default(config);
|
||||||
|
</script>
|
||||||
|
```
|
||||||
|
|
||||||
|
A full example is available
|
||||||
|
[here](https://github.com/mCaptcha/glue/blob/ea576d875457de54d82bed3edfc4ee68302fa4d8/packages/vanilla/static/embeded.html).
|
||||||
|
|
||||||
|
## 5. Configure backend to authenticate CAPTCHA tokens
|
||||||
|
|
||||||
|
1. Get [access token](../../terminology/access-token) from the user's
|
||||||
|
form submission payload. The access token will be associated with a
|
||||||
|
parameter called `mcaptcha__token`.
|
||||||
|
|
||||||
|
```python
|
||||||
|
mcaptcha_token = request.form["mcaptcha__token"]
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Validate access token with mCaptcha instance
|
||||||
|
|
||||||
|
```python
|
||||||
|
payload = {
|
||||||
|
"token": mcaptcha_token,
|
||||||
|
"key": mcaptcha_sitekey, # captcha site key
|
||||||
|
# mCaptcha account secret; available in settings
|
||||||
|
"secret": mcaptcha_account_secret,
|
||||||
|
}
|
||||||
|
resp = requests.post(
|
||||||
|
"https://demo.mcaptha.org/api/v1/pow/siteverify", json=payload
|
||||||
|
)
|
||||||
|
resp = resp.json()
|
||||||
|
```
|
||||||
|
|
||||||
|
3. If access token is valid, allow access to protected resource or deny
|
||||||
|
access.
|
||||||
|
|
||||||
|
```python
|
||||||
|
if resp["valid"] == False:
|
||||||
|
return "invalid captcha", 400
|
||||||
|
else:
|
||||||
|
return allow_access_to_protected_resource(request.form)
|
||||||
|
```
|
||||||
|
|
||||||
|
Please see here for a complete [Flask example](https://github.com/mCaptcha/dos/tree/8f2b53ab46d64fa78a8300dc8ce9d78578ffce12/server) and here for an [Actix
|
||||||
|
Web example](https://github.com/mCaptcha/dos/tree/8f2b53ab46d64fa78a8300dc8ce9d78578ffce12/rust-server/demo-server).
|
||||||
|
|
||||||
|
Congratulations, mCaptcha is now integrated with your website!
|
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 23 KiB |
BIN
content/docs/introduction/installing-captcha/new-sitekey-btn.png
Normal file
After Width: | Height: | Size: 64 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 26 KiB |
|
@ -1,9 +0,0 @@
|
||||||
---
|
|
||||||
title : "Prologue"
|
|
||||||
description: "Prologue mCaptcha."
|
|
||||||
lead: ""
|
|
||||||
date: 2020-10-06T08:48:45+00:00
|
|
||||||
lastmod: 2020-10-06T08:48:45+00:00
|
|
||||||
draft: false
|
|
||||||
images: []
|
|
||||||
---
|
|
|
@ -1,30 +0,0 @@
|
||||||
---
|
|
||||||
title: "Introduction"
|
|
||||||
description: "mCaptcha is a privacy focused, libre CAPTCHA system with a kickass UX."
|
|
||||||
lead: "mCaptcha is a privacy focused, libre CAPTCHA system with a kickass UX."
|
|
||||||
date: 2021-07-21 14:49
|
|
||||||
lastmod: 2021-07-21 14:49
|
|
||||||
draft: false
|
|
||||||
images: []
|
|
||||||
menu:
|
|
||||||
docs:
|
|
||||||
parent: "prologue"
|
|
||||||
weight: 100
|
|
||||||
toc: true
|
|
||||||
---
|
|
||||||
|
|
||||||
## Get started
|
|
||||||
|
|
||||||
There are two main ways to get started with mCaptcha:
|
|
||||||
|
|
||||||
1. Managed solution: We run mCaptcha, experience is similar to other
|
|
||||||
CAPTCHA solutions.
|
|
||||||
2. Self-hosted: You can host mCaptcha on your server
|
|
||||||
|
|
||||||
## Manged solution:
|
|
||||||
|
|
||||||
{{< alert icon="⚠️" text="Coming soon" >}}
|
|
||||||
|
|
||||||
### Self-hosted
|
|
||||||
|
|
||||||
One page summary of how to start a new Doks project. [Quick Start →](../self-hosted/getting-started)
|
|