正在加载...
475 字
2 分钟
基于Cap-Pow人机验证的分支One-Pow,提供了基础的人机识别和安全防护。
2025-08-27

上一篇文章我介绍了什么是Cap-Pow和开源的PHP服务端Cap-Pow Server for PHP,本文便给大家带来了一个基于Cap-Pow的分支:One-Pow。One-Pow提供了一些基础的行为验证人机识别和防止爆破的安全防护。

官网:https://cha.eta.im/

One-Pow对比Cap-Pow主要更新了以下功能,安全性有了更高的提升。

  • 更新了更好看的组件UI和交互动画
  • FNV-1a 算法由32位换为128位
  • 将token参与POW运算,增强重放攻击防护
  • 新增收集行为数据分析,具备一定的人机识别访问
  • 新增风险分析返回不同的计算难度
  • 新增频繁请求拦截
  • 轻量级的机器学习模型(行为风险得分+机器学习评分进行综合评分)
  • 自动标记高风险IP

使用One-Pow可以无需自己搭建后端,您可以直接访问官网,按照说明集成到项目内即可,例如:

<!--导入组件JS-->
<script src="https://cha.eta.im/static/js/pow.min.js"></script>
<!--添加验证组件-->
<pow-widget
id="pow"
data-pow-api-endpoint="https://cha.eta.im/">
</pow-widget>

验证通过后,您可以将返回的token信息通过表单一起发送到后端,后端再通过访问我们的API接口验证token是否有效,例如:

前端:

const widget = document.querySelector("#pow");
widget.addEventListener("pow:success", async function (e) {
const token = e.detail.token;
// 发送token到您的服务器进行验证
const result = await fetch('"https://cha.eta.im/api', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ token })
});
const validation = await result.json();
console.log("验证结果:", validation);
});

后端:

<?php
// 解析请求数据
$input = file_get_contents('php://input');
$data = json_decode($input, true);
// 例如您已经封装了一个curl请求方法
$data = [
"token" => $data['token'] ?? null;
];
$result = Request::sendRequest("https://cha.eta.im/api/validate", [
'method' => 'POST',
'headers' => ['Content-Type' => 'application/json',
'body' => json_encode($data)
]);
if($result['success'] ?? false){
echo json_encode(["success"=>true,"message"=>"验证成功"]);
}else{
echo json_encode(["success"=>false,"message"=>"验证失败"]);
}

至此您已经完成了One-Pow的全部验证流程。

希望此项目能帮助到您!

基于Cap-Pow人机验证的分支One-Pow,提供了基础的人机识别和安全防护。
https://www.tr0.cn/761/
作者
小森
发布于
2025-08-27
许可协议
CC BY-NC-SA 4.0