Я создал сайт, который добавляет recaptcha v3 в соответствии с документами . На сайте есть мастер, через который пользователь проходит, чтобы забронировать отдых. На каждом шаге я выполняю следующий код:
function exec(action) {
grecaptcha.execute(<myToken>, {action: <theNameOfTheWizardStep>}).then(function(token) {
// verify with the backend
let config = {method: 'POST', headers: {'Content-Type': 'application/json'},
body: JSON.stringify({recaptchaToken: token, ...}) };
fetch('/book?action=' + action, config).then(r=>r.json()).then(result => {
console.log(action + " result: " + JSON.stringify(result));
});
});
}
Мой сервер проверяет токен следующим образом (Python):
recaptcha_verify_url = 'https://www.google.com/recaptcha/api/siteverify'
resp = requests.post(recaptcha_verify_url + '?'
+ 'secret=<mySecret>'
+ '&response=' + recaptcha_token
+ '&remoteip=' + request.remote_addr)
verification = resp.json()
print("verified: {}".format(verification))
recaptcha_token отправляется на мой бэкэнд с помощью Javascript выше, т. е. предоставляется вызовом grecaptcha.execute
Оператор печати регистрирует записи следующим образом:
verified: {u'action': u'book_step2', u'score': 0.9, u'hostname': u'mydomain.com', u'challenge_ts': u'2020-04-05T22:52:45Z', u'success': True}
Это хорошо работает, и на каждом этапе я получаю оценку 0,9.
Мне нужно защитить свой сервер от роботов c атак, подобных приведенным ниже, и я предположил, что счет уменьшится, если будет написан скрипт, который бомбардирует сервер запросами роботов c, но это не так. Я что-то запрограммировал неправильно, или этот тип атаки не тот, против которого рассчитана рекапча?
function thisIsAnInjectedHackerScript() {
for(var i = 0; i < 50; i++) {
exec('book_step2')
.then(result => {
console.log("executed " + i);
});
}
}