简介:本文详细介绍 hCaptcha 图像识别 API 的对接流程,涵盖基础概念、对接前准备、核心步骤、错误处理及最佳实践,助力开发者高效集成。
hCaptcha 是一款基于人工智能的图像识别验证服务,通过动态生成图像分类任务(如选择特定物体、识别场景等)验证用户真实性,有效抵御自动化脚本攻击。其核心优势包括:
访问 hCaptcha 官网 完成注册,获取以下关键信息:
对接方式 | 适用场景 | 复杂度 |
---|---|---|
前端嵌入 + 后端验证 | 高安全性需求,需防止绕过前端验证 | 中 |
纯后端 API 调用 | 无前端交互的自动化系统(如爬虫) | 高 |
推荐:90% 的场景采用“前端嵌入 + 后端验证”模式,平衡安全性与用户体验。
<!DOCTYPE html>
<html>
<head>
<script src="https://js.hcaptcha.com/1/api.js" async defer></script>
</head>
<body>
<form id="myForm">
<div class="h-captcha" data-sitekey="YOUR_SITE_KEY"></div>
<button type="submit">提交</button>
</form>
<script>
document.getElementById('myForm').addEventListener('submit', async (e) => {
e.preventDefault();
const token = document.querySelector('.h-captcha').getAttribute('data-hcaptcha-response');
if (!token) {
alert('请完成验证');
return;
}
// 调用后端验证接口
const response = await fetch('/api/verify', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ token })
});
const result = await response.json();
if (result.success) {
alert('验证通过');
} else {
alert('验证失败');
}
});
</script>
</body>
</html>
关键点:
data-sitekey
必须与后台配置一致;data-hcaptcha-response
字段作为验证凭证。
const express = require('express');
const axios = require('axios');
const app = express();
app.use(express.json());
const SECRET_KEY = 'YOUR_SECRET_KEY';
app.post('/api/verify', async (req, res) => {
const { token } = req.body;
if (!token) {
return res.status(400).json({ success: false, error: '缺少token' });
}
try {
const response = await axios.post('https://hcaptcha.com/siteverify', {
secret: SECRET_KEY,
response: token
});
if (response.data.success) {
res.json({ success: true });
} else {
res.status(400).json({ success: false, error: '验证失败' });
}
} catch (error) {
console.error('验证错误:', error);
res.status(500).json({ success: false, error: '服务异常' });
}
});
app.listen(3000, () => console.log('Server running on port 3000'));
验证逻辑:
https://hcaptcha.com/siteverify
发送 POST 请求;secret
(后端密钥)和 response
(前端token);success: true
表示验证通过。错误码 | 含义 | 解决方案 |
---|---|---|
100 | 无效的 sitekey | 检查前端配置的 sitekey |
200 | 无效的 response token | 确保前端正确传递 token |
300 | 请求超时 | 检查网络或重试 |
10000000-ffff-ffff-ffff-000000000001
)进行预验证;通过 data-challenge
参数调整验证复杂度:
<div class="h-captcha" data-sitekey="YOUR_SITE_KEY" data-challenge="easy"></div>
可选值:easy
(默认)、normal
、hard
。
支持暗黑模式等主题:
<div class="h-captcha" data-sitekey="YOUR_SITE_KEY" data-theme="dark"></div>
对多个 token 进行批量验证(需联系 hCaptcha 开启企业版功能)。
hCaptcha 图像识别 API 的对接需兼顾前端交互与后端验证的安全性。通过本文的步骤,开发者可快速实现:
下一步建议: