reCAPTCHA是一项免费的非机器人活动验证服务,由google提供

选择使用去现成的开源组件实现人机身份验证服务

在github搜索 php分类 + reCAPTCHA 能找到了不少合适的资源
下面介绍使用https://github.com/anhskohbo/no-captcha在国内实现reCAPTCHA人机验证

以下操作基于laravel5.5下

  1. 使用composer require anhskohbo/no-captcha给项目载入相关依赖包
  2. 使用样子前往 https://www.google.com/recaptcha/admin 注册SECRETSITEKEY
  3. 修改no-captcha源码使用代理服务器提供的js和验证接口
  4. 在模块中使用
  5. 在控制器中进行验证

修改源码以便支持国内访问

打开 \vendor\anhskohbo\no-captcha\src\NoCaptcha.php

在模板中使用

{!! NoCaptcha::renderJs() !!}
    {!! NoCaptcha::display() !!}

在控制器进行验证

$this->validate($request, [
        'article_id'=> 'required|numeric',
        'email'=> 'required|email',
        'g-recaptcha-response' => 'required|captcha'
    ],[
        'g-recaptcha-response.required' => '请进行人机身份验证',
        'g-recaptcha-response.captcha' => '人机身份验证失败',
    ]);

在国内想要使用这项服务,需要使用代理服务器(下面代理服务器网上找到的,不清楚安全性和稳定性)
1,将https://www.google.com/recaptcha/api.js

替换为

https://recaptcha.net/recaptcha/api.js

2,将https://www.google.com/recaptcha/api/siteverify
替换为

https://recaptcha.net/recaptcha/api/siteverify
在国内想要使用这项服务,需要使用代理服务器(下面代理服务器网上找到的,不清楚安全性和稳定性)
https://recaptcha.net/recaptcha/api.js 替代 https://www.google.com/recaptcha/api.js
https://recaptcha.net/recaptcha/api/siteverify 替代 https://www.google.com/recaptcha/api/siteverify

总结

reCAPTCHA是一个安全、易于添加的免费人机身份验证服务,如果要在国内使用的话,需要使用代理服务器。 reCAPTCHA与传统的图片验证相比,具有更高和安全性;传统的图片验证码,在某些ORC服务商号称99%验证码识别准确率,想要拦截机器人,就像自行车只锁轮子来防盗一样。 在国内有geetest可提供相似人机验证服务,但是轮子比较旧了(laravel组件太久没有更新),百度geetest发现破解风气太重,暂时先不下手了。


原文链接:https://github.com/1zh/1zh.github.io/issues/1

最后修改:2023 年 01 月 22 日
如果我的文章帮到你了,欢迎随意赞赏