安企CMS使用 reCAPTCHA 漫游器防护功能阻止自动化攻击

📅 2026-09-10 👁️ 15

reCAPTCHA 是一种强大的漫游器拦截工具,可保护网站免受网络垃圾、滥用行为和欺诈行为的侵害。它通过分析用户行为和其他因素来确定操作是由真人还是漫游器执行的。如果检测到可疑活动,reCAPTCHA 可能会采取措施来防止未经授权的访问,例如显示验证挑战或完全阻止互动。这有助于确保网站保持受保护状态,同时尽可能减少对合法用户的干扰。

以下是三项关键功能:

自适应风险评估:分析各种因素,评估用户是漫游器的风险,并相应地调整响应 高级漫游器检测:采用先进技术区分真人与漫游器,确保准确识别 持续学习:运用机器学习技术不断提高漫游器检测的准确率,并根据新的威胁做出调整

注意 服务器在国内的不要启用,国内无法正常使用该功能。

先在 Google Cloud 上配置

安企CMS现在支持配置使用 reCAPTCHA 拦截网站留言自动化攻击。下面是安企CMS接入 reCAPTCHA 的操作方法:

  1. 访问 https://cloud.google.com/security/products/recaptcha, 点击【开始使用】按钮,并填写网站信息(已添加网站的,点击【Fraud Defense 控制台】进去操作)。 recaptcha-1.png
  2. 在弹出的【注册新网站】页面中,填写标签、选择 reCAPTCHA 类型、域名、项目(如果没有项目,则需要先创建),填写完成后,点击提交按钮完成创建。 recaptcha-2.png recaptcha-3.png
  3. 创建过程大约需要30秒左右,创建完成后,会来到【将 reCAPTCHA 添加到您的网站】页面,上面包含了 网站密钥 和 通信密钥,请几十妥善保管 recaptcha-4.png

再在 安企CMS 管理后台上配置

来到 安企CMS 网站的管理后台,在 功能 -> 系统功能 里找到【Akismet/reCAPTCHA】(也可以在顶部搜索栏搜索 reCAPTCHA) recaptcha-5.png 点击【Akismet/reCAPTCHA】功能进入配置页面,在出现的页面中,选择 开启 reCAPTCHA, 并填写 网站密钥 和 通信密钥,点击保存使配置生效。 recaptcha-6.png

安企CMS 前端留言界面配置

在安企CMS 管理后台配置了 网站密钥 和 通信密钥 后,前端界面还不会直接出现 reCAPTCHA,还需要进行界面适配。

在安企CMS站点中,前端模板可以通过网站密钥变量 recaptcha_key 来判断站点有没有启用了 reCAPTCHA,如果启用了,则网站密钥recaptcha_key会存在正确的值。

我们在留言表单中添加对应的判断来使用 reCAPTCHA:

操作 template/default/guestbook/index.html(其他模板同理,留言表单均可用)

<form> 元素增加 id="guestbook-form"

在 form 表单内部添加如下代码:

  <!-- 使返回值为JSON -->
  <input type="hidden" name="return" value="json">
  <p class="form-tip mt-2 hidden text-sm"></p>

{%- if recaptcha_key %}
  <!-- 启用 reCAPTCHA -->
  <script src="https://www.google.com/recaptcha/api.js?render={{recaptcha_key}}"></script>
  <script>
      (function () {
          // 供提交脚本调用:获取 reCAPTCHA token,失败时回调 null 降级为直接提交
          window.getRecaptchaToken = function (cb) {
              if (typeof grecaptcha === 'undefined') {
                  cb(null);
                  return;
              }
              grecaptcha.ready(function () {
                  grecaptcha.execute('{{recaptcha_key}}', { action: 'guestbook' }).then(function (token) {
                      cb(token);
                  }).catch(function () {
                      cb(null);
                  });
              });
          };
      })();
  </script>
{%- endif %}
<script>
    (function () {
        var form = document.getElementById('guestbook-form');
        if (!form) return;
        var tip = form.querySelector('.form-tip');
        var submitBtn = form.querySelector('button[type="submit"]');

        function showTip(text, ok) {
            if (!tip) return;
            tip.textContent = text;
            tip.classList.remove('hidden');
            tip.classList.toggle('text-green-600', ok);
            tip.classList.toggle('dark:text-green-400', ok);
            tip.classList.toggle('text-red-600', !ok);
            tip.classList.toggle('dark:text-red-400', !ok);
        }

        function doSubmit(token) {
            if (token) {
                var input = form.querySelector('input[name="recaptcha_token"]');
                if (!input) {
                    input = document.createElement('input');
                    input.type = 'hidden';
                    input.name = 'recaptcha_token';
                    form.appendChild(input);
                }
                input.value = token;
            }
            if (submitBtn) submitBtn.disabled = true;
            fetch(form.action, { method: 'POST', body: new FormData(form) })
                .then(function (res) { return res.json(); })
                .then(function (res) {
                    if (res.code === 0) {
                        showTip('留言提交成功,我们会尽快与您联系!', true);
                        form.reset();
                    } else {
                        showTip(res.msg || '留言提交失败,请稍后重试。', false);
                    }
                })
                .catch(function () {
                    showTip('留言提交失败,请稍后重试。', false);
                })
                .finally(function () {
                    if (submitBtn) submitBtn.disabled = false;
                });
        }

        form.addEventListener('submit', function (e) {
            e.preventDefault();
            if (typeof window.getRecaptchaToken === 'function') {
                window.getRecaptchaToken(doSubmit);
            } else {
                doSubmit(null);
            }
        });
    })();
</script>

保存代码后,就可以启用 reCAPTCHA 了。

你在页面右下角看到 一个 reCAPTCHA 正常的图标,则表示配置完全正确

recaptcha-7.png

相关文章

多语言站点功能使用教程二:单站翻译插件架构多语言方式

从 AnQiCMS v3.4.8 版开始,支持更强大的多语言站点功能。 AnQiCMS 的多语言功能支持两种方式实现,一是使用独立多站点架构(适合大型/高定制化需求),二是单站翻译插件架构(适合中小型/敏捷迭代)。 下面将带你使用AnQiCMS的多语言功能: ▶ 方式2:单站翻译插件架构(适合中小型/敏捷迭代) 操作步骤 第一步:启用多语言站点功能 登录AnQiCMS后台管理界面。

2025-03-29

多语言站点功能使用教程一:独立多站点架构多语言方式

从 AnQiCMS v3.4.8 版开始,支持更强大的多语言站点功能。 AnQiCMS 的多语言功能支持两种方式实现,一是使用独立多站点架构(适合大型/高定制化需求),二是单站翻译插件架构(适合中小型/敏捷迭代)。 下面将带你使用AnQiCMS的多语言功能: 方式1:独立多站点架构(适合大型/高定制化需求) 这种方式灵活性较高,但对于站点运营人员来说,要求也较高,需要更多的配置和代码开发工作

2025-03-29

安企CMS多语言站点功能介绍

从 AnQiCMS v3.4.7 版开始,支持更强大的多语言站点功能。 AnQiCMS 的多语言功能支持两种方式实现,一是使用独立多站点架构(适合大型/高定制化需求),二是单站翻译插件架构(适合中小型/敏捷迭代)。 两种方式实现的多语言功能,分别有着各自的优缺点,具体请看下面的说明。 方式1:独立多站点架构(适合大型/高定制化需求) 技术实现细节 主-子站点同步机制

2025-03-29

AnqiCMS(安企CMS)如何使用滴滴友链自动上链功能

交换友情链接是每个做网站都要经历的事情。很多朋友在交换友情链接的事情上花费了大量的功夫,奈何交换效率比较低下,导致时间白白浪费掉了。滴滴友链平台(https://didi.seowhy.com/)推出了自动交换友链的功能,可以自动的完成友情链接交换,减轻了友情链接交换的大量工作。作为一款功能完备的C

2022-11-08

链接推送使用帮助

搜索引擎链接推送功能的使用,可以让你发布的文档,及时的告知各大搜索引擎,让他们的蜘蛛及时过来抓取页面,达到促进页面收录效果。目前系统支持的主动推送的搜索引擎有:百度搜索、必应搜索。百度搜索主动推送接口需要使用百度搜索主动推送接口你需要从百度搜索资源平台 https://ziyuan.baidu.co

2022-06-21

伪静态规则使用帮助

伪静态规则可以让你能够根据实际的需要,来定义网站的url组成形式。为了方便用户,减少配置的麻烦,系统内置了4种现成的伪静态规则,只需要选择就可以直接使用。默认的伪静态规则有:数字模式数字模式下,文档详情、文档列表、单页详情,文档标签,都使用{id}来作为URL生成依据,通常做中文站使用较多。模型命名

2022-06-21