因为众所周知的原因,Google 的 reCAPTCHA 在中国地区完全无法正常使用,所以我将目光转向了hChaptcha
第一步#
注册,你可以使用 Github 或 Google 登录,也可以注册账户
注册完成后你可以获得你的 secret 密钥
第二步#
进入 Dashboard,点击网站,里边会有一个预置的,点击旁边的灰色按钮,在这里
添加你的网址,顺便记下 site 密钥
第三步#
更改博客目录 /var/Widget下的 Login.php,在顶部添加以下内容
class Paul_GCaptcha {
public static $success, $failed;
// 发送验证信息
public static function send($post_data) {
$postdata = http_build_query($post_data);
$options = array(
'http' => array(
'method' => 'POST',
'header' => 'Content-type:application/x-www-form-urlencoded',
'content' => $postdata,
'timeout' => 15 * 60 // 超时时间
)
);
$context = stream_context_create($options);
$result = file_get_contents("https://hcaptcha.com/siteverify", false, $context);
return $result;
}
// 判断验证状况
public static function check(){
if($_POST["h-captcha-response"]){
$data = array(
'secret' => '这里是你的SECRET密钥',
'response' => $_POST["h-captcha-response"] // 接收用户提交的验证数据
);
$result = self::send($data);
$result = json_decode($result, true);
$result = $result["success"];
if($result == true){
return true; // 验证成功
}
else{
return false; // 验证失败
}
}
else{
return false; // 用户没有提交到验证信息
}
}
之后在博客目录 /admin下的 login.php 中,合适的位置添加
<script src="https://js.hcaptcha.com/1/api.js" async defer></script>
<div class="h-captcha" data-sitekey="你的SITE密钥"></div>
在登陆页面下看到 hCaptcha 就完成了
如果你使用 handsome 主题,要在后台外观设置 → 开发者设置 → 自定义输出 body 尾部的 HTML 代码 中输入以下内容
<script src="https://js.hcaptcha.com/1/api.js" async defer></script>
然后在 /usr/themes/handsome/component/headnav.php 中大约 369 行下面另起一行添加以下内容(Handsome 9.0.2)
<div class="h-captcha" style="transform: scale(0.827); -webkit-transform: scale(0.827); transform-origin: 0 0; -webkit-transform-origin: 0 0;" data-sitekey="你的SITE密钥"></div>
至此,hCaptcha 在 Typecho 的部署大功告成!
后言#
文章代码其实是从BLxcwg666这里来的,但是原文是 reCAPTCHA 教程,所以又自己稍加修改而成
此文由 Mix Space 同步更新至 xLog
原始链接为 https://blog.nekotc.cn/posts/default/2