当然可以。下面是一个生成问题库的示例,其中包括多种类型的问题和选项,以便用来进行人机验证。
问题库示例
const questions = [
{
question: '请选择所有水果',
options: [
{ id: 1, text: '苹果', isCorrect: true },
{ id: 2, text: '香蕉', isCorrect: true },
{ id: 3, text: '汽车', isCorrect: false },
{ id: 4, text: '猫', isCorrect: false },
{ id: 5, text: '草莓', isCorrect: true },
{ id: 6, text: '大象', isCorrect: false },
]
},
{
question: '请选择所有动物',
options: [
{ id: 1, text: '苹果', isCorrect: false },
{ id: 2, text: '香蕉', isCorrect: false },
{ id: 3, text: '汽车', isCorrect: false },
{ id: 4, text: '猫', isCorrect: true },
{ id: 5, text: '草莓', isCorrect: false },
{ id: 6, text: '大象', isCorrect: true },
]
},
{
question: '请选择所有交通工具',
options: [
{ id: 1, text: '苹果', isCorrect: false },
{ id: 2, text: '香蕉', isCorrect: false },
{ id: 3, text: '汽车', isCorrect: true },
{ id: 4, text: '猫', isCorrect: false },
{ id: 5, text: '草莓', isCorrect: false },
{ id: 6, text: '自行车', isCorrect: true },
]
},
{
question: '请选择所有蔬菜',
options: [
{ id: 1, text: '西红柿', isCorrect: true },
{ id: 2, text: '香蕉', isCorrect: false },
{ id: 3, text: '土豆', isCorrect: true },
{ id: 4, text: '猫', isCorrect: false },
{ id: 5, text: '草莓', isCorrect: false },
{ id: 6, text: '胡萝卜', isCorrect: true },
]
},
{
question: '请选择所有颜色',
options: [
{ id: 1, text: '红色', isCorrect: true },
{ id: 2, text: '香蕉', isCorrect: false },
{ id: 3, text: '蓝色', isCorrect: true },
{ id: 4, text: '猫', isCorrect: false },
{ id: 5, text: '绿色', isCorrect: true },
{ id: 6, text: '大象', isCorrect: false },
]
},
{
question: '请选择所有家用电器',
options: [
{ id: 1, text: '电视', isCorrect: true },
{ id: 2, text: '冰箱', isCorrect: true },
{ id: 3, text: '汽车', isCorrect: false },
{ id: 4, text: '洗衣机', isCorrect: true },
{ id: 5, text: '草莓', isCorrect: false },
{ id: 6, text: '手机', isCorrect: true },
]
}
];
module.exports = questions;
说明
- 每个问题都有一个
question
字段,表示问题的文本内容。 - 每个问题都有一个
options
字段,表示选项的数组,每个选项包含一个id
、text
和isCorrect
字段。id
是选项的唯一标识符。text
是选项的文本内容。isCorrect
是一个布尔值,表示该选项是否是正确答案。
如何使用
你可以将问题库保存为一个 JavaScript 文件(例如 questions.js
),然后在你的 Express 应用中引用和使用:
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const port = 3000;
const questions = require('./questions'); // 引入问题库
app.use(bodyParser.json());
app.get('/captcha-question', (req, res) => {
const randomIndex = Math.floor(Math.random() * questions.length);
res.json(questions[randomIndex]);
});
app.post('/verify-captcha', (req, res) => {
const { question, selectedOptions } = req.body;
const correctQuestion = questions.find(q => q.question === question);
if (!correctQuestion) {
return res.status(400).json({ success: false, message: '无效的问题' });
}
const correctOptions = correctQuestion.options.filter(option => option.isCorrect).map(option => option.text);
if (selectedOptions.length !== correctOptions.length) {
return res.json({ success: false, message: '验证失败' });
}
const isCorrect = selectedOptions.every(option => correctOptions.includes(option));
if (isCorrect) {
res.json({ success: true });
} else {
res.json({ success: false, message: '验证失败' });
}
});
app.listen(port, () => {
console.log(`Server is running at http://localhost:${port}`);
});
这样,你就可以在你的 Express 应用中动态生成问题,并进行后端验证。