google recaptcha使用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了google recaptcha使用相关的知识,希望对你有一定的参考价值。
参考技术A
3.2. 如果你是在模块化的的项目中使用。可以按需动态加载recaptcha 脚本。并手动渲染验证码
运行结果
验证通过
遗留了一个问题:
这个验证通过客户端完全可以做了。但是我们用验证码的目的是为了防止api攻击。这里只是介绍了客户端使用google recaptcha展示验证码的功能,具体服务端提供的api如何校验,需要客户端和服务端再协商。
比如:验证码校验通过后,把验证通过的g-recaptcha-token传给服务端并保存,然后在调用api的地方把该token带上,给服务端做校验。这才能体现出验证码的作用来。【这只是我个人的建议方案。有更好的解决方案欢迎在留言里分享。感谢】
html Google Recaptcha - 应该使用此网站密钥在任何pagedemo.co页面上工作。示例:http://recaptcha.pagedemo.co/
<!-- START code for captcha HTML- Header -->
<style type="text/css">
#RecaptchaField1 {
transform:scale(1.00);
-webkit-transform:scale(1.00);
-webkit-transform-origin:0 0;
transform-origin:0 0;
}
</style>
<script>
var label = 'Recaptcha';
$(document).ready(function() {
$('input[name="' + window.btoa(label) + '"]').val('0');
console.log($('input[name="' + window.btoa(label) + '"]').val());
ijQuery.validator.addMethod('captcha', function(value, element) {
if (value.match('1')) {
return true;
} else {
return false;
}
});
ijQuery('form [name="' + base64_encode(label) + '"]').addClass('captcha');
ijQuery.extend(ijQuery.validator.messages, {
captcha: 'field: Please submit captcha first.'
});
}); //ready
var recaptchaCallback = function() {
$('input[name="' + window.btoa(label) + '"]').val('1');
console.log($('input[name="' + window.btoa(label) + '"]').val());
};
var widgetId1;
var onloadCallback = function() {
// Renders the HTML element with id 'example1' as a reCAPTCHA widget.
// The id of the reCAPTCHA widget is assigned to 'widgetId1'.
widgetId1 = grecaptcha.render('RecaptchaField1', {
'sitekey': '6Lcf4yQTAAAAAGDuW4gvzahRiaFXadFUQHhcdvJc',
'callback': recaptchaCallback,
'theme': 'light'
});
};
</script>
<!-- END code for captcha HTML- Header -->
<!-- START code for captcha HTML- Footer -->
<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
<!-- END code for captcha HTML- Footer -->
<div id="RecaptchaField1"></div>
<style type="text/css">
#RecaptchaField1 {
transform:scale(1.20);
-webkit-transform:scale(1.20);
-webkit-transform-origin:0 0;
transform-origin:0 0;
}
#RecaptchaField2 {
transform:scale(1.20);
-webkit-transform:scale(1.20);
-webkit-transform-origin:0 0;
transform-origin:0 0;
}
</style>
<script>
$( document ).ready( function() {
$( ".email-form .dynamic-button.btn" ).attr( "disabled", " " );
}); //ready
var recaptchaCallback = function() {
console.log('calling back');
$( '.dynamic-button.btn' ).removeAttr( 'disabled' );
};
var widgetId1;
var widgetId2;
var onloadCallback = function() {
// Renders the HTML element with id 'example1' as a reCAPTCHA widget.
// The id of the reCAPTCHA widget is assigned to 'widgetId1'.
widgetId1 = grecaptcha.render('RecaptchaField1', {
'sitekey' : '6Lcf4yQTAAAAAGDuW4gvzahRiaFXadFUQHhcdvJc',
'callback' : recaptchaCallback,
'theme' : 'light'
});
widgetId2 = grecaptcha.render('RecaptchaField2', {
'sitekey' : '6Lcf4yQTAAAAAGDuW4gvzahRiaFXadFUQHhcdvJc',
'callback' : recaptchaCallback,
'theme' : 'light'
});
};
</script>
<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
<div id="RecaptchaField1"></div>
<div id="RecaptchaField2"></div>
<style>
.g-recaptcha {
transform:scale(0.90); //customise width
transform-origin:0 0;
z-index: 11500000 !important; //z-index for pop-up
}
</style>
<script>
$( document ).ready( function() {
$( ".email-form .dynamic-button.btn" ).attr( "disabled", " " );
}); //ready
function recaptchaCallback() {
console.log('calling back');
$( '.dynamic-button.btn' ).removeAttr( 'disabled' );
}
</script>
<script src="https://www.google.com/recaptcha/api.js"></script>
<div class="g-recaptcha" data-callback="recaptchaCallback" data-sitekey="6Lcf4yQTAAAAAGDuW4gvzahRiaFXadFUQHhcdvJc"></div>
以上是关于google recaptcha使用的主要内容,如果未能解决你的问题,请参考以下文章
Recaptcha V3 错误错误-captcha-sol 随机
Google Captcha 未在 GoDaddy 安全 (https) 中显示
在 ASP.NET 的服务器端验证 Recaptcha 2 (No CAPTCHA reCAPTCHA)
谷歌recaptcha验证码java解决方案
reCAPTCHA 释疑
Spring Boot 下使用谷歌 reCAPTCHA v3