跳转到主要内容

概述

网站的人机验证能有效限制垃圾内容的提交,google的reCAPTCHA是一个非常不错的选择。由于防火墙的原因,reCAPTCHA模块无法在国内正常使用,将模块中源码出现的google.com 换成recaptcha.net 就可以了,下面简单叙述一下安装配置和修改过程。

基础准备

  1. 需要一个能访问google服务的网络,注册google账号和使用reCAPTCHA必需。
  2. 需要一个正常运行的本地或者正式的Drupal网站,drupal7+的都可以。

安装配置

如果没有composer管理drupal,就直接到reCAPTCHA模块的网址下载到本地,还有captcha模块也要下载,然后drupal 8到后台admin/modules中手动安装,drupal 7 可以解压后拷贝到网站根目录下的modules目录,然后进后台扩展中手动安装。

如果会使用composer和drush那就更加简单,使用如下命令即可:

#composer 和drush的使用配置不是本篇主题,请搜索本站其他文章
#基础扩展,含基本的数学算式验证
composer require drupal/captcha  
#区分大小写,主角
composer require drupal/reCAPTCHA  
drush en captcha  reCAPTCHA

安装后访问admin/config/people/captcha路径,或者通过配置页面的CAPTCHA module settings连接进入reCAPTCHA设置。

访问标签栏中最后一个“reCAPTCHA”标签配置两个key。点击输入框下方链接进入注册页面,将步骤2中获得的两个key依次填入即可。

图像
drupal 8 国内配置recaptcha模块

注册新网站,这里不要选择v3版本的reCAPTCHA,因为v3目前模块并不支持,有另一个模块,这里不谈。前提是能访问google,并且先注册一个邮件账户。

图像
drupal 8国内配置recaptcha步骤2
图像
drupal 8国内配置recaptcha步骤2_2

进入标签“格式设置”,这里就是设置需要开启验证码的页面,注意新手先不要开启login页面,而是先开启register页面做测试。免得登出之后因为验证码问题无法登陆后台。真出现这种情况,可以通过drush pmu 命令卸载掉模块再登陆。

图像
drupal 8国内配置reCAPTCHA步骤3

访问设置也第一个标签,开启默认的提问方式为reCAPTCHA,系统默认是简单数学题,需要手动选一下。

图像
drupal 8 国内配置reCAPTCHA步骤4

保存以上配置之后,基本设置已经完成,但是在没有墙外代理的情况下并不能出验证码,可以在设置了验证码的页面如register页面测试,发现页面在加载google api的时候一直加载中。

修改源码

在模块目录中使用bash查找关键字google.com:

#查找reCAPTCHA模块目录中含有google.com字符串的文件 
find . -type f | xargs grep "google.com"  

通过以上命令,发现非注释用的含有google.com关键字的文件有两个:

  1. ./recaptcha-php/src/ReCaptcha/ReCaptcha.php
  2. ./recaptcha.module

使用文本编辑器如vim之类将这两个文件正式代码中google.com关键字替换成recaptcha.net,注释性的内容不用替换。保存后,再刷新register页面,期待已久的reCAPTCHA验证就可以出现了!

分类