WordPress+CF7+谷歌reCaptcha V2和V3的经验分享(上集)

大家好,上节课演示CF7+reCAPTCHA V3发邮件报错,之后研究了一天也没成功发出。我把期间的研究的经验与各位分享,这其中的“雷”不少,省着大家以后再花费不必要的时间。

先说说:谷歌验证码(人机识别)reCaptcha V2 和V3

  1. 我们用谷歌reCaptcha目的是:过滤表单发垃圾邮件,我们需要用户的留言,不想或尽量少的看到机器人发送垃圾邮件。
  2. 谷歌reCaptcha可以判断目前访问页面、提交信息的这位,是人类还是机器人。
  3. 谷歌reCaptcha目前有两个版本V2和V3。V3版本是2018年11月发布的,之前一直用V2版本,V2版本是需要人做选择、判断的那种。据说有些机器已经找到了解决reCaptcha V2的方法,使用V2还会有垃圾邮件。
  4. 谷歌的reCaptcha V3是一种学习的算法,会越来越聪明,可缺点是它太新了,估计还没准备好。
  5. 现在国外WordPress论坛很多人在抱怨reCaptcha V3不能正常工作,出现了很多兼容问题。有很多因素会干扰reCaptcha V3的判断,有的网友说V3还会导致GTmetrix速度变慢。
  6. 谷歌宣布他们也将完全支持reCaptcha V2。
  7. V2适合小网站,V3适合大网站,这也是从国外论坛看来的。
  8. 我根据外贸同学们的总结,我们做的外贸网站太小了,如果垃圾邮件不多,最好别用谷歌reCaptcha,别给潜在用户设限。
  9. 如果有垃圾邮件比较多,除了reCaptcha还有其他解决方法,在后面的课程中还会介绍。

谷歌reCaptcha说完了,下面继续分享我的操作

第一套测试环境(目前最新版)

  1. 时间是2019年4月
  2. WordPress版本是最新的5.1.1
  3. CF7版本也是最新的5.1.1(2018年12月18日更新的)
  4. 谷歌验证码reCaptcha V3(API)
  5. BeTheme主题(最新版21.1.6)、WordPress默认主题
  6. 除了WP Mail SMTP插件之外,其他插件都停了

以上这套环境,如果不关联reCaptcha API,访客可以正常提交、发送邮件,邮箱能收到提交邮件。这说明在关联reCaptcha之前,CF7流程是正常的。

reCaptcha-icon

测试结果:

  1. 关联reCaptcha V3 API后,网站前台表单页面的右下角,可以看到谷歌reCaptcha图标,如上图,这说明谷歌reCaptcha已经在工作了。
    1. 如果页面不显示reCaptcha图标,有可能是API有问题。
    2. 因为这套环境用的是reCaptcha V3,不需要在CF7里添加Captcha字段,V3可以自动识别垃圾邮件。
    3. 如果是reCaptcha V2 需要点击单选框,进行人及身份验证,根据提示选择公交车、红绿灯、自行车之类的,如下图
      recaptcha-v2
      reCaptcha-v2-2
  2. 提交表单信息,报错了,如下图,错误提示的边框颜色是橙色,为什么说颜色?
    1. CF7表单的错误提示边框分几种颜色,在它的网站有介绍。
    2. 绿色是正常的颜色
    3. 红色是错误的颜色
    4. 橙色边框表示垃圾邮件保护模块(如reCAPTCHA)检测到垃圾邮件尝试,而我一直遇到的是这个错误。

44731555644334_.pi

探寻问题之旅

我反复检查了自己的操作和设置,没发现问题,谷歌reCaptcha也是生效的,如果不加谷歌验证码可以正常发送,百思不得解。
后来找到了WordPress.org 的CF7插件的支持论坛,里面对CF7的骂声不断(从2018年12月到2019年4月),从支持reCaptcha V3开始的讨伐之声。
bad

CF7作为一款免费开源的WordPress插件,有很多用户基础,从2018年12月的5.1版本开始“只”支持reCaptcha V3 API,不支持V2 API。之前版本的CF7(比如5.0.5)支持reCaptcha V2,大家用的好好的。

WordPress 插件一般都采用默认自动更新的方式,从CF7 5.0.5升级到5.1后,因为需要手动申请并替换V3 API,这一点让用户很反感(CF7 5.1 不支持reCaptcha V2),关键是还上了V3 API还是无法正常使用,我看论坛里的留言说V3不起作用,还会收到大量垃圾邮件。

bug

我遇到的问题是发不出去,这个问题还与WordPress版本有关,CF官方网站有一条信息,CF7 5.1.1之后的版本报错的用户请检查主题,有些主题不正确地省略wp_footer(),阻止脚本加载的调用。

于是我又去BeTheme主题的官方支持论坛,原来早已有人问过这个问题了,BeTheme的人一直回复说,我们的主题支持这个,可以正常使用CF7 5.1.1和reCaptcha V3,还说让清空缓存,停用除了cf7之外的所有插件。这些办法我都试过了,甚至把服务器的Memcached缓存都停了,可是问题依旧。后来我切换成WordPress默认主题,还是报错,看来这个问题与主题无关。

我看CF7论坛里很多人在讨论,老版本的CF7(比如CF7 5.0.5),搭配reCaptcha V2还是可以的,因为以前大家都是这么做的,于是我重新还原了老版本。

篇幅不想做太长,下节课见。

前往《WordPress主题公共课》完整版教程

发表回复

请填写评论
请填写您的名字

最近流行

热点内容