LMLPHP后院

reCAPTCHA3 配置技术

maybe yes 发表于 2024-07-05 08:43

如果需要阻止墙内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"
}

大功告成!

2024-09-08 08:28:04 1725755284 0.007582