是否可以检测是否向用户显示了Invisible Recaptcha?

时间:2018-02-12 16:53:44

标签: javascript recaptcha invisible-recaptcha

在我的网页中,我通过调用函数grecaptcha.execute()来验证基于Invisible Recaptcha的表单。通常这对用户来说是不可见的;所有他们看到的是grecaptcha完成验证后触发的表单提交。

有时,触发不那么隐形的回收行为(例如,如果用户表现得很可疑),并且向用户显示他们必须解决的常规验证码。发生这种情况时,我想以编程方式检测它。

是否可以通过编程方式发现在调用grecaptcha.execute()后是否向用户显示了验证码?

到目前为止,我已尝试使用MutationEventsMutationObservers观看DOM。不幸的是,所有有趣的事情都发生在iframe内部,似乎无法判断是否显示了完整的验证码。

我不想测量grecaptcha调用我给它的回调所需的时间,因为这样做是不可靠的(例如,移动连接速度慢会导致结果出现偏差)。

标记:

<form id="form" method="post" action="/form">
    Name: (required) <input id="name" name="name">
    <div id="g-recaptcha-div"
        class="g-recaptcha"
        data-sitekey="keeeey"
        data-callback="onRecaptchaDone"
        data-size="invisible"></div>
    <button id="thebutton">Submit</button>
</form>

代码:

function onSubmit(event) {
    event.preventDefault();
    grecaptcha.reset();
    grecaptcha.execute();
}
function onRecaptchaDone(token) {
    form.submit();
}
window.onload = function() {
    form.onsubmit = onSubmit;
}

0 个答案:

没有答案