EP03. “防垃圾邮件设置:reCAPTCHA 与 Cloudflare”
🔒 登录后可标记已读这篇笔记讲怎么给 Contact Form 7 加上 reCAPTCHA v2/v3 防垃圾邮件验证,以及进阶用 Cloudflare 页面规则单独保护联系表单页面。前置知识:先看过《表单搭建完整指南》,表单已经搭建好并放到页面上。
重点内容
reCAPTCHA v2 与 v3 的差异
| reCAPTCHA v2 | reCAPTCHA v3 | |
|---|---|---|
| 用户体验 | 需要访客手动打勾「我不是机器人」,有时还要求做图片拼图验证;交互感强 | 完全无感,不需要访客做任何操作,背景自动监测行为 |
| 判定方式 | 通过/不通过的挑战式验证 | 打分制,给每次访问打 0.0~1.0 的分数,分数越低越像机器人;站主自己设定分数门槛决定放行还是拦截 |
| 是否需要额外 shortcode | 需要在表单末尾加 [recaptcha] shortcode | 不需要额外 shortcode,全自动生效 |
💡 reCAPTCHA 后台有 Analytics 分析面板,可以看到发出过多少次验证挑战、通过率等数据,用来评估防护效果。
📌 当前版本现状
- Contact Form 7 5.1 版本起,已经拿掉了对 reCAPTCHA v2 的内建支持,只内建支持 v3;表单模板里残留的
[recaptcha]旧 shortcode 会被直接忽略(当作空字符串处理) - 如果确实需要 v2(比如客户坚持要看到打勾框),必须额外装第三方插件「ReCaptcha v2 for Contact Form 7」(IQComputing 出品)才能补回 v2 功能和
[recaptcha]shortcode,这是「装额外插件补回来的」,不是 Contact Form 7 核心自带 - 建议:新项目没有特殊理由,直接用内建的 v3 即可,体验更好也不用额外装插件
设置步骤(v3,Contact Form 7 内建)
- 后台进入表单编辑页 → Integration Tab(Integrations)
- 除了 reCAPTCHA,这个 Tab 也能看到 Akismet 这类反垃圾邮件整合选项,按需要一起启用
- 点 reCAPTCHA 的 "Setup Integration",会给一个跳转链接,在新分页打开 Google reCAPTCHA 后台(需要登录 Google 账号,第一次要先注册)
- 在 Google reCAPTCHA 后台点「+」注册新站点,填写:
- Label:自己取一个方便识别的名字
- reCAPTCHA Type:选 v3(Contact Form 7 支持的版本)
- Domains:根域名的话,non-www 和 www 两个版本都要加;如果用子域名,只加子域名,域名不要带
https://或路径 - Owners:默认会带入当前 Google 账号邮箱,可按需再加其他人
- 勾选服务条款 → Submit,会拿到一组 Site Key 和 Secret Key
[截图:Google reCAPTCHA 后台注册新站点成功后显示的 Site Key 与 Secret Key 页面]
- 回到 WordPress 后台 → Contact → Integration,把 Site Key 和 Secret Key 分别贴进对应输入框 → Save Changes
- 设置成功后,前台表单页面右下角会出现「protected by reCAPTCHA」的标记,代表已生效
[截图:设置成功后前台联系表单页面右下角出现的「protected by reCAPTCHA」标记]
设置步骤(v2,需额外装插件)
- 安装并启用第三方插件「ReCaptcha v2 for Contact Form 7」(Plugins → Add New → 搜索安装)
- 到该插件的设置页,把 reCAPTCHA V2 设为默认选项(default option)
- 跟 v3 一样,去 Google reCAPTCHA 后台注册新站点,这次 reCAPTCHA Type 选 v2(Checkbox),其他步骤(域名、Owners、拿 Site Key/Secret Key)流程相同
- 回到 WordPress 后台 → Contact 表单设置页,把 Site Key、Secret Key 贴到该插件提供的 Integration 输入框,Save Changes
- v2 比 v3 多一步:需要手动在表单末尾加上
[recaptcha]shortcode,v3 则不需要这一步 - 保存后前台表单会出现 Google 的「我不是机器人」打勾框
Cloudflare 页面规则保护联系表单(可选,进阶)
如果网站本身有接 Cloudflare,可以针对联系表单页面单独设一条 Page Rule 加强防护:
- URL Matches:
*your-domain.com/your-contact-page/*(只锁定联系表单所在页面,不影响站内其他页面) - Browser Integrity Check:开启(分析 HTTP 请求头,拦截爬虫/垃圾邮件程序常见的请求头特征)
- Security Level:设为 High(近两周内有恶意行为记录的访客会被挑战验证)
💡 这样设置的好处是只针对联系表单页面加严,站内其他「只读」页面不受影响,不会无谓拖慢一般访客的体验。
常见误区
- ❌ 以为装了 Contact Form 7 就自动有 v2 打勾框——5.1 版本后核心只内建 v3,v2 需要额外装第三方插件才能用
- ❌ 用 v2 时忘记在表单末尾手动加
[recaptcha]shortcode——v2 需要这一步,v3 不需要,两者操作流程不完全一样 - ❌ Google reCAPTCHA 后台注册域名时带上
https://或路径——Domains 字段只填纯域名,不要带协议前缀或路径 - ❌ 整站都套用严格的 Cloudflare Security Level——只针对联系表单页面设 Page Rule 加严,避免拖慢站内其他只读页面的访客体验
- 💡 reCAPTCHA v3 的分数门槛可以自己调整,被误判拦截太多正常访客时,适度调低门槛能改善体验
Sources
YouTube:
- Contact Form 7 Full Tutorial (Forms, Email, Flamingo, ReCAPTCHA)
- Contact Form 7 ReCAPTCHA V2 And V3 Setup Tutorial
Blog / Website:
- 如何为WordPress网站配置Contact Form 7(WBOLT_COM)