@fpjs-incubator/turing
v0.0.7
Published
Turing helps to avoid malicious clients by flexible challenges.
Downloads
6
Readme
Turing
Turing helps to avoid malicious clients by flexible challenges.
Register keys
You can generate your keys there.
🔩 Try Demo - see the live demo running in your browser
Installation
You can get started quickly with CDN, or install Turing with npm and modern build tools.
CDN
Simply download and include with a script tag. Turing will be registered as a global variable.
To disable BotD, add disable-botd
attribute to script load.
Automatically render the challenge (default)
Opens a modal window with challenge after form submit.
- Load the Turing API
<script data-sitekey="<your-public-key>" src="https://cdn.jsdelivr.net/npm/@fpjs-incubator/turing/dist/turing.js"></script>
Automatically bind the challenge
Puts challenge frame inside <div>
.
- Load the Turing API
<script src="https://cdn.jsdelivr.net/npm/@fpjs-incubator/turing/dist/turing.js"></script>
- Create a
<div>
withturing-spot
attribute.
<div data-sitekey="<your-public-key>" turing-spot ></div>
Programmatically invoke the challenge
- Load the Turing API
<script src="https://cdn.jsdelivr.net/npm/@fpjs-incubator/turing/dist/turing.js"></script>
- Call
Turing.execute()
on each action you wish to protect.
Turing.ready(() => {
Turing.execute().then(async sessionId => {
// Add your logic to submit to your backend server here.
})
})
- Send sessionId to your backend with the request to verify
NPM
In order to install the node module, you can use NPM
npm install @fpjs-incubator/turing
Or you can install with Yarn:
yarn add @fpjs-incubator/turing
Verify response
POST https://turing.fpapi.io/api/v1/verify
session_id
- session id which can be found byturing-session-id
key form value.secret_key
- your secret key.
curl --location --request POST 'https://turing.fpapi.io/api/v1/verify' \
--header 'Content-Type: application/json' \
--data-raw '{ "session_id": "<session-id>", "secret_key": "<your-secret-key>" }'
Response OK
{
"solved": true
}
Response Error
{
"error": {
"message": "<error-message>"
}
}