YvYang的AI摘要
Spark-Lite

前言

近来许多朋友们包括作者的网站都受到了一些恶意和推广评论的骚扰,于是作者决定在评论区添加人机验证的功能。
作者使用的评论系统是Twikoo,在更新了编写本文时的最新版本1.7.14后发现Twikoo不知道什么时候加入了人机验证,这可省了大功夫,然后便是选择验证系统了,目前有三种选择Cloudflare Turnstile 极验 GeetestCap,作者看上了开源的 Cap ,由于没有服务器所以作者找到了社区的CloudFlare版本,进行了一些适配的修改后接入了Twikoo。

教程

那就让我们开始吧,本次教程分为VercelCloudflare版本

部署在Veercel

创建Vercel项目

方法一

点击按钮一键部署
Deploy with Vercel

方法二

Fork本项目后手动部署到Vercel

创建 Neon 数据库

Vercel 项目 Dashboard 中:

  1. 进入 Storage 选项卡
  2. 点击 Create → Neon Postgres
  3. 选择区域(建议选 US East,离 Vercel 函数最近)
  4. 创建完成后,连接到刚刚创建的项目

设置 CAP_SECRET_KEY

进入 Environment Variables添加CAP_SECRET_KEY

Name Value 说明
CAP_SECRET_KEY 你的强密钥 Twikoo 服务端验证密钥
1
2
# 生成 32 字节 (64 位十六进制) 强密钥
openssl rand -hex 32

部署并配置自定义域名

  1. 在 Vercel 项目 Settings → Domains 中添加你的自定义域名
  2. 在 DNS 管理中添加 CNAME 记录
  3. 等待 SSL 证书自动签发(约 1-2 分钟)

部署在Cloudflare Worker

创建Worker

方法一

使用下面链接一键部署
Deploy to Cloudflare

方法二

Fork本项目后手动部署到Cloudflare

添加自定义域名

在Worker的项添加自定义域名

添加秘钥

在Worker设置变量和秘钥项添加秘钥

项目
类型 秘钥
变量名称 CAP_SECRET_KEY
你的强秘钥

秘钥可以用以下代码生成,创建Python文件,写入代码运行即可

1
2
3
4
5
import secrets

# 32字节原始随机熵,编码后约 43 字符
secret_key = secrets.token_urlsafe(32)
print(secret_key)

填写完成后部署即可

接入Twikoo

登录进入 Twikoo 管理面板→配置管理→人机验证 按照表格修改设置后保存

配置项 说明
CAPTCHA_PROVIDER Cap 启用 Cap 验证码
CAP_API_ENDPOINT https://你的自定义域名/api/ Cap 服务地址(带 /api/ 后缀)
CAP_SECRET_KEY 你的强秘钥 与 worker 中 CAP_SECRET_KEY 一致

示例

虽然说是针对Twikoo做了一些拓展,但项目原本的功能是没有改变的,如想在文章中加入验证卡片可使用一下代码

1
2
3
4
<cap-widget 
id="cap"
data-cap-api-endpoint="https://你的自定义域名/api/">
</cap-widget>


详细内容请参考官方文档
作者在Cloudflare和Vercel分别部署了一个示例,感兴趣的读者可以体验
Cloudflare: https://cft.yvyang.qzz.io/
Vercel: https://cap.yvyang.top/

相关链接