当然可以。下面是一个生成问题库的示例,其中包括多种类型的问题和选项,以便用来进行人机验证。
问题库示例
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 应用中动态生成问题,并进行后端验证。