ReCAPTCHA 使用

谷歌免费验证码reCaptcha的使用

原文链接:https://wuweijun.cn/2019/12/%E8%B0%B7%E6%AD%8CreCapture%E7%9A%84%E4%BD%BF%E7%94%A8/


注册谷歌 获取密钥

需要注册一个谷歌账户,然后申请一对公钥密钥,公钥用于前端请求谷歌,密钥用于后台验证。

https://www.google.com/recaptcha/admin


选择需要的版本v2 还是v3

https://developers.google.cn/recaptcha/docs/versions?hl=zh-cn

v3 版本是会返回一个评分,0到1之间,允许你在没有任何用户交互的情况下验证交互是否合法,让你根据分数自己进行提示验证限制爬虫等。

v2 版本则是提供几种可能,一种是点击按钮,一种则是自动提交,可以是原站点的某个按钮,或者直接用JS直接调用,需要在验证reCaptcha完成后执行回调,网站底部可以隐藏谷歌reCaptcha的徽章,你也可以隐藏。


v2的使用

展示谷歌验证插件
1. 自动渲染

重点:class="g-recaptcha" data-sitekey="your_site_key"

<html>
  <head>
    <title>reCAPTCHA demo: Simple page</title>
    <script src="https://www.google.com/recaptcha/api.js" async defer></script>
  </head>
  <body>
    <form action="?" method="POST">
      <div class="g-recaptcha" data-sitekey="your_site_key"></div>
      <br/>
      <input type="submit" value="Submit">
    </form>
  </body>
</html>

注意: 国内需要用**https://recaptcha.net **代替原谷歌地址

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

2. 显式渲染

通过指定onload回调函数并向JavaScript资源添加参数,可以延迟渲染。

在加载reCaptcha js之间需要先定义好回调函数,使用async defer 加载脚本

3.配置v2

可以配置语言,主题(dark light),大小 以及各种回调等。
具体看官网配置

https://developers.google.cn/recaptcha/docs/display?hl=zh-cn#configuration

4.js api

接口名称则代表了他们的意思,渲染 重置 获取

grecaptcha.render(
container,
parameters
)

grecaptcha.reset(
opt_widget_id
)

grecaptcha.getResponse(
opt_widget_id
)
服务端验证

注意: 国内需要用**https://recaptcha.net **代替原谷歌地址

https://www.recaptcha.net/recaptcha/api/siteverify

参数说明
secret 必选 注册时拿到的密钥
response 必选 前端请求拿到的响应令牌
remoteip 可选

API 响应: success 为true则验证通过

{
  "success": true|false,
  "challenge_ts": timestamp,  // timestamp of the challenge load (ISO format yyyy-MM-dd'T'HH:mm:ssZZ)
  "hostname": string,         // the hostname of the site where the reCAPTCHA was solved
  "error-codes": [...]        // optional
}

####### 5. 例子

  1. 官网例子
<html>
  <head>
    <title>reCAPTCHA demo: Explicit render after an onload callback</title>
    <script type="text/javascript">
      var onloadCallback = function() {
        grecaptcha.render('html_element', {
          'sitekey' : 'your_site_key'
        });
      };
    </script>
  </head>
  <body>
    <form action="?" method="POST">
      <div id="html_element"></div>
      <br>
      <input type="submit" value="Submit">
    </form>
    <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit"
        async defer>
    </script>
  </body>
</html>

流程大概是前端加载谷歌验证码的js,发送一个包含公钥的请求得到谷歌响应后,把响应信息按要求发送给后台,后台带着密钥和客户端获取的响应信息请求谷歌的验证API,得到响应。

注意: 国内需要用**https://recaptcha.net **代替原谷歌地址

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

https://recaptcha.net/recaptcha/api/siteverify

  1. 框架实现

https://github.com/VividCortex/angular-recaptcha/

https://github.com/DethAriel/ng-recaptcha

https://github.com/DanSnow/vue-recaptcha


设置

https://developers.google.cn/recaptcha/docs/settings?hl=zh-cn


安全性

依赖谷歌强大的机器学习算法,以及谷歌研发的维护,reCaptcha一定程度上还是可以的。目前也有开源破解方案参考,但是随着谷歌的更新其作用肯定是会失效,所以感兴趣的参考就行:

https://github.com/ecthros/uncaptcha2

风险

由于使用的谷歌服务 有不可访问的风险,可以通过代理规避。

参考

https://blog.csdn.net/baidu_38990811/article/details/83546143

https://www.jianshu.com/p/c63b78a373ad

推荐阅读更多精彩内容

  • 微软、谷歌、亚马逊、Facebook等硅谷大厂91个开源软件盘点(附下载地址)文章

    开源软件中有大量专家构建的代码,大大节省了开发人员的时间和成本,热衷于开源的大厂们总是能够带给我们新的惊喜。201...

    麦思博阅读 1,631评论 1赞 11

  • 微软、谷歌、亚马逊、Facebook等硅谷大厂91个开源软件盘点(附下载地址)

    开源软件中有大量专家构建的代码,大大节省了开发人员的时间和成本,热衷于开源的大厂们总是能够带给我们新的惊喜。201...

    Cynthia成阅读 1,853评论 0赞 15

  • Xposed学习之《hook某国外app实现自动识别谷歌验证码》

    声明 1.所谓的自动识别谷歌验证码并不是真正的利用人工智能去识别谷歌验证码,在本文章中只是对接某国外的验证码识别平...

    淡v漠阅读 3,451评论 1赞 4

  • 验证码WEB端产品调研(一):Google reCAPTCHA

    本文主要旨在横向对比国内外同行产品,为公司自研验证码产品设计提供参考和思路(目前仅关注web端,app端前期复用h...

    弗拉明哥阅读 5,715评论 8赞 17

  • 华空间餐饮空间设计丨奈雪的茶大梅沙店

    现在很多年轻人在闲暇时光都会约几个好友去奶茶店喝喝茶,聊聊天。出去逛街都会选择点一杯奶茶,不开心就喝杯奶茶,想要庆...

    餐饮快跑阅读 128评论 0赞 0

  • 人生的大问题

    四十不惑,行至半途,之前的种种和往后的目标都已了了分明。迷时师度,觉时自度,此生决定往觉悟路上坚定不移走,...

    瓶子1679阅读 64评论 2赞 1

  • 心经

    心经 《般若波罗蜜多心经》观自在菩萨,行深般若波罗蜜多时,照见五蕴皆空,度一切苦厄。舍利子,色不异空,空不异色,色...

    王淦阅读 94评论 0赞 0