Odd that the page is being refreshed if /siteverify is giving an error though.
Odd that the page is being refreshed if /siteverify is giving an error though.


3265141), which is a little more detailed:siteverify on the non-interactive and invisible modes.As mentioned in my last reply, then I'm not able to provide any further information related to the pricing.
The document related to the pricing matrix will be updated.
tdn.alwaysvn.fun A @1.1.1.2 +noall +answerdiggy diggy hole
•3/13/25, 11:39 PM
alwaysvn.fun A @1.1.1.1 +noall +answerdiggy diggy hole
•5/30/24, 1:48 PM





const express = require('express');
const fetch = require('node-fetch');
const FormData = require('form-data');
const app = express();
app.use(express.urlencoded({ extended: true }));
const secretKeys = {
'www.a.se': process.env.SECRET_KEY_a,
'www.b.se': process.env.SECRET_KEY_b,
'www.c.se' : process.env.SECRET_KEY_c
};
async function handlePost(request, response) {
const token = request.body['cf-turnstile-response'];
const ip = request.headers['cf-connecting-ip'];
const referer = request.headers['referer'];
const hostname = new URL(referer).hostname;
const secret = secretKeys[hostname];
if (!token) {
return response.status(401).send('Missing Turnstile token');
}
if (!secret) {
return response.status(401).send('Invalid hostname');
}
const formData = new FormData();
formData.append('secret', secret);
formData.append('response', token);
formData.append('remoteip', ip);
const result = await fetch('https://challenges.cloudflare.com/turnstile/v0/siteverify', {
body: formData,
method: 'POST',
});
const outcome = await result.json();
if (!outcome.success) {
return response.status(401).send('The provided Turnstile token was not valid! \n' + JSON.stringify(outcome));
}
response.send('Turnstile token successfully validated. \n' + JSON.stringify(outcome));
}
app.post('/', handlePost);
const port = process.env.PORT || 8080;
app.listen(port, () => console.log(`App listening on port ${port}!`));<script>
window.onloadTurnstileCallback = function () {
var widgetId = turnstile.render('#turnstile-container', {
sitekey: 'sitekey',
callback: function(token) {
var xhr = new XMLHttpRequest();
xhr.open('POST', 'https://turnstile.app', true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.setRequestHeader('cf-turnstile-response', token);
xhr.setRequestHeader('Referer', '{{Page URL}}');
xhr.send('cf-turnstile-response=' + encodeURIComponent(token));
}
});
};
</script>
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js?onload=onloadTurnstileCallback" defer></script>
<div id="turnstile-container"></div>Thanks for coming back to Cloudflare Support.
> Is it the case that non-interactive and invisible are currently being offered for free, but will soon be charged for?
This is correct, but things are going to be slightly changed with self-serve pricing but all the existing customers will be grandfathered in to the legacy subscription and will be able to keep whatever is offered to them now.
The team will look into updating the pricing matrix asap.
I'm not able to provide further information regarding the pricing.The resource https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/cmg/1/thCBy90zqmBonn2dYlU%2FD%2BMzVlbuUEXEmRt0jJlmUpg%3D was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally.Third-party cookie will be blocked. Learn more in the Issues tab.tdn.alwaysvn.fun A @1.1.1.2 +noall +answeralwaysvn.fun A @1.1.1.1 +noall +answerNAME | TTL | DATA
-------------+------+---------------
alwaysvn.fun | 300s | 103.221.223.52