reCAPTCHA3 配置技术
如果需要阻止墙内IP访问,reCAPTCHA 是个不错的选择。
下面整理了 reCHATCHA3 的使用方法,reCAPTCHA3 因其高超的技艺,已经无需点击识别图片来判断是否是真人了。
我想,它应该是穷举了真实浏览器的所有 API 来检测是否真机真人,因为假的就是假的,总是有点不一样。
直接上干货:
reCAPTCHA icon 大功告成 - 已完置完毕! checkmark 管理 Google Cloud 项目设置 checkmark 每月可免费提供多达 10,000 次评估 若要启用高级功能,请访问托管您 reCAPTCHA 密钥的 Google Cloud Platform 项目。 在您的网站提供给用户的 HTML 代码中使用此网站密钥。 6*************************************** 此密钥用于您的网站和 reCAPTCHA 之间的通信。 6***************************************
就是这样子,开通了之后两个密钥。
这个在开发环境上,是不好测试的,因为域不同,其实也无需测试,用了人家的东西,就得受的起。
<script src="https://www.google.com/recaptcha/api.js?render=6***************************************">
阻挡的页面啥也不需要,只需加在上面的即可。然后绑定事件:
click(function(e){ e.preventDefault(); grecaptcha.ready(function() { grecaptcha.execute("6***************************************",{action:"submit"}).then(function(token) { ajax({ "method":"POST", "url":"", "data":{"a":"recaptcha","token":token}, "dataType":"json", "beforeSend": function(xhr){xhr.setRequestHeader("token","");}, "success":function(rsObj, statusStr, ResponseObj){ }, "error":function(objRequest, statusStr, statusText){}, "complete":function(){setTimeout(function(){},6e3)} }); }); }); });
server:
$token = arr_get($_POST, 'token'); $response = curl_p('https://www.google.com/recaptcha/api/siteverify', ['secret'=>'6***************************************', 'response'=>$token], [params]);
response 样例:
{ "success": true, "challenge_ts": "2000-00-00T00:50:27Z", "hostname": "xxx.com", "score": 0.9, "action": "submit" }
大功告成!
暂无