前言
为啥我出这篇文章呢,因为我有几天用了vaptcha
进行人机验证,还算好用,但是发现手机上有广告,本着原则问题,我剔除了人机验证。
又发现在邻居@kidultff发现谷歌国内验证也可以,于是探路V3版本
简介
reCaptcha是Google公司的验证码服务,方便快捷,改变了传统验证码需要输入n位失真字符的特点。
获取https://www.google.com/recaptcha/admin
https://developers.google.com/recaptcha/intro
申请
注册新网站
选择reCAPTCHA 第 3 版或reCAPTCHA 第 2 版,
添加域名(主域名即可)
提交后会给你reCAPTCHA 密钥两个,相当于一个公钥,一个私钥
使用
SCRIPT
<!--国内用这个api-->
<script src='//recaptcha.net/recaptcha/api.js'></script>
<!--国外可以用这个api-->
{#<script src="https://www.google.com/recaptcha/api.js"></script>#}
<script>
function robotVerified(v) {
//回调函数中参数为Response值,也可使用grecaptcha.getResponse()进行获取值
$('#verifiedCode').val(v)
login()
}
</script>
V2
<div class="lowin-group password-group">
<div class="g-recaptcha" data-callback="robotVerified"
data-sitekey="6LdQg_0UAAAAACmdfbRSxsyDrlRpViwVBeIdB_-6"> </div>
<input type="hidden" id="verifiedCode">
</div>
V3
<input type="hidden" id="verifiedCode">
<button data-sitekey="6LeGSfwUAAAAANOW_GwwhDjn26HGhde9C5mJBtxz"
data-callback='robotVerified'
data-action='submit' class="g-recaptcha lowin-btn login-btn">
Sign In
</button>
PYTHON后台
code = request.values.get('code')
secret ='6Le*****'
url = 'https://recaptcha.net/recaptcha/api/siteverify?response={}&secret={}&remoteip'.format(code,secret)
req = requests.get(url,headers={})
res = req.json()
if not res['success']:
return jsonify(code=5, msg='人机验证失败,请重试')
其他
grecaptcha包含的方法,具体使用方法请自行研究
{ready: ƒ, render: ƒ, reset: ƒ, getResponse: ƒ, execute: ƒ}
V3版本体验地址:https://oauth.heanny.cn/login.html