@botpoison/浏览器
浏览器库 Botpoison 挑战, (中文(简体) ),
用于网络表格的 CAPTCHA 的无形替代品。 当访客按住
发送, 库获取一个签名的工作证明谜题, 在
浏览器并将答案附在窗体上。 访客没有看到谜题,没有
复选框和无部件。 您的服务器然后用一个电话检查答案, 用于
实例 @botpoison/node。 。 。 .
- 无依取相. 装入
async。 。 。 . - 设置不 cookie 并在浏览器中存储任何内容 .
- 需求
BigInt和Web Crypto,所以页面必须服务于 HTTPS(或 从当地主机).
您需要一个项目的公用钥匙( E)pk_...) (中文(简体) ). 创建免费的工程
(原始内容存档于2017-10-26). botpoison.com。 。 。 .
一个简单的 HTML 形式
没有JavaScript可以写入. 添加脚本并在表单上放出您的公钥 :
<script
src="https://unpkg.com/@botpoison/[email protected]/dist/index.js"
integrity="sha384-Coq4yXcH6P37EoKbvbmZZj3UpsLwU5Ir/tth7Fgf24Q5JUj2I4hcwqtj3zKi7+PA"
crossorigin="anonymous"
async
></script>
<form action="/contact" method="POST" data-botpoison-public-key="pk_xxxxxxxx">
<!-- your fields -->
<button type="submit">Send</button>
</form>
提交库解决谜题时, 添加隐藏 _botpoison 字段和
发送表格。 燃烧 botpoison-challenge-start, (中文(简体) ),
botpoison-challenge-success 财务报告和审定财务报表 botpoison-challenge-error 在表单上。 打开
未发送表单出错: 请听 botpoison-challenge-error 告诉
游客们 发生了什么事.
脚本加载前发送的表格 _botpoison。为了防止这种情况,保留
发送禁用到脚本起火 botpoison-ready
(单位:千美元)实例) (中文(简体) ).
用 JavaScript 发送的表格
npm install @botpoison/browser
import Botpoison from "@botpoison/browser";
const botpoison = new Botpoison({ publicKey: "pk_xxxxxxxx" });
form.addEventListener("submit", async (event) => {
event.preventDefault();
const { solution } = await botpoison.challenge();
await fetch("/contact", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ ...fields, _botpoison: solution }),
});
});
challenge() 当谜题无法获取或解开时拒绝, 例如
当API无法到达. challenge({ onProgress }) 报告进展情况
解时从 0 到 1 .
在您的服务器上
发送 _botpoison 值为 /verify 用你的密钥,接受
只在答复时提交 ok: true。见
在您的服务器上验证
用于Node.js,PHP,Python,Go,Rust,Java和平原HTTP.