popcorner / discuz_recaptcha

Google reCAPTCHA云验证码,可在中国大陆地区正常使用
https://addon.dismall.com/?@cdc_recaptcha.plugin
Apache License 2.0
36 stars 8 forks source link

开个坑,期待支持 reCAPTCHA v3 #1

Closed Mushan3420 closed 4 years ago

Mushan3420 commented 4 years ago

reCAPTCHA v3 属于无感验证,比 reCAPTCHA v2 的用户体验好了很多,期待支持 reCAPTCHA v3。

popcorner commented 4 years ago

之前有很多证据表明reCAPTCHA v3在国内的支持并不好,v3是基于打分的,而谷歌的打分机制跟谷歌服务的使用情况有很大的相关性,鉴于国内对谷歌服务的连通情况,上v3不是一个好选择,会把很多真实用户给打成低分从而拒绝掉,反而会影响网站的正常使用。 此外这个插件是基于discuz的验证码机制制作的,而这个机制仅支持显式的插入一个可见的验证码并让用户进行交互,而v3理论上是要覆盖全站页面才能进行行为判定和打分的,因此也无法通过这套机制实现出来。v2的invisible版本不支持也是同样的原因。

Mushan3420 commented 4 years ago

之前有很多证据表明reCAPTCHA v3在国内的支持并不好,v3是基于打分的,而谷歌的打分机制跟谷歌服务的使用情况有很大的相关性,鉴于国内对谷歌服务的连通情况,上v3不是一个好选择,会把很多真实用户给打成低分从而拒绝掉,反而会影响网站的正常使用。 此外这个插件是基于discuz的验证码机制制作的,而这个机制仅支持显式的插入一个可见的验证码并让用户进行交互,而v3理论上是要覆盖全站页面才能进行行为判定和打分的,因此也无法通过这套机制实现出来。v2的invisible版本不支持也是同样的原因。

v3 和 v2 一样,其 API 也是可以使用 google.cn 以及 recaptcha.net 的,因此连通性上应该不存在问题。在 WordPress 上面有大量基于 v3 的插件,可用性是经得起检验的。 另外,基于行为判定和打分的验证方式,目前应用中心的同盾就在做,应该也是可以变通和实现的。

popcorner commented 4 years ago

我说的不是验证码本身的连通性,你可以仔细看下我说的是什么。我说的是验证码能加载但是不能正常使用,会把正常人打低分拒绝掉。如果调低分数限制的话确实能用了,但是那样就过滤不了机器,我之前写了不到10行代码就能成功打出跟国内真人差不多的分数来。

Mushan3420 commented 4 years ago

我说的不是验证码本身的连通性,你可以仔细看下我说的是什么。我说的是验证码能加载但是不能正常使用,会把正常人打低分拒绝掉。如果调低分数限制的话确实能用了,但是那样就过滤不了机器,我之前写了不到10行代码就能成功打出跟国内真人差不多的分数来。

如果真是这样那的确会影响国内用户,不过目前 DZ 的 reCAPTCHA v3 插件还是个空白,没有是挺可惜的了。

对了,不知道你在不在 DZ 官方的 forker 群,他们最近正忙于 3.5 的开发,建议加入。

popcorner commented 4 years ago

至于实现方式方面,我特意强调了我用的是Discuz原生的验证码机制。这样实现出来的验证码插件性能才是最好的,和第三方模板和插件也容易配合使用。自己写一套是啥都能实现,但是无论是兼容性还是性能都没得比。说真的,你可以拿别的验证码插件的代码跟我这个比一下就明白了,我这个实现足够简洁而且也很高效,几乎所有配置都做了缓存并且生成了静态文件,校验逻辑也非常简单。用起来完全不会影响到网站的性能。 在discuz限制很严重的验证码机制上能实现出这个来其实思路上要难很多,这也是我做它的原因,因为这事有点意思。

对了,不知道你在不在 DZ 官方的 forker 群,他们最近正忙于 3.5 的开发,建议加入。

不在……我加过来着,但是就没有然后了。 我给x3.5提过PR的,你可以在已合并的PR里看见我。

Mushan3420 commented 4 years ago

至于实现方式方面,我特意强调了我用的是Discuz原生的验证码机制。这样实现出来的验证码插件性能才是最好的,和第三方模板和插件也容易配合使用。自己写一套是啥都能实现,但是无论是兼容性还是性能都没得比。说真的,你可以拿别的验证码插件的代码跟我这个比一下就明白了,我这个实现足够简洁而且也很高效,几乎所有配置都做了缓存并且生成了静态文件,校验逻辑也非常简单。用起来完全不会影响到网站的性能。 在discuz限制很严重的验证码机制上能实现出这个来其实思路上要难很多,这也是我做它的原因,因为这事有点意思。

对了,不知道你在不在 DZ 官方的 forker 群,他们最近正忙于 3.5 的开发,建议加入。

不在……我加过来着,但是就没有然后了。 我给x3.5提过PR的,你可以在已合并的PR里看见我。

懂你的意思,不过验证码机制这个东西,也许你可以来改了它。另外,用你在应用中心留的邮箱查收一下邮件。我给了您 DZ 官方负责人的联系方式。

laozhoubuluo commented 4 years ago

至于实现方式方面,我特意强调了我用的是Discuz原生的验证码机制。这样实现出来的验证码插件性能才是最好的,和第三方模板和插件也容易配合使用。自己写一套是啥都能实现,但是无论是兼容性还是性能都没得比。说真的,你可以拿别的验证码插件的代码跟我这个比一下就明白了,我这个实现足够简洁而且也很高效,几乎所有配置都做了缓存并且生成了静态文件,校验逻辑也非常简单。用起来完全不会影响到网站的性能。 在discuz限制很严重的验证码机制上能实现出这个来其实思路上要难很多,这也是我做它的原因,因为这事有点意思。

对了,不知道你在不在 DZ 官方的 forker 群,他们最近正忙于 3.5 的开发,建议加入。

不在……我加过来着,但是就没有然后了。 我给x3.5提过PR的,你可以在已合并的PR里看见我。

我们也发现验证码这块存在问题了,也试着在3.5上做了修复(但尚未合并),不过效果还是差强人意(勉勉强强)。既然issue主已经跟官方打过招呼,也已经发您官方联系方式了,那您可以联系一下官方再次尝试入群。

popcorner commented 4 years ago

@laozhoubuluo 我收到了邮件但是似乎遇到了一点问题,我没查找到对应的人

Mushan3420 commented 4 years ago

@laozhoubuluo 我收到了邮件但是似乎遇到了一点问题,我没查找到对应的人

直接搜第二封邮件的QQ号码试试看

popcorner commented 4 years ago

@laozhoubuluo 我收到了邮件但是似乎遇到了一点问题,我没查找到对应的人

直接搜第二封邮件的QQ号码试试看

谢谢!这下查找到了。

Mushan3420 commented 4 years ago

https://github.com/popcorner/discuz_recaptcha/tree/v3