使用教程:
1、下载CORS Unblock浏览器插件。
2、浏览器的网站设置里面设置不安全内容为允许。
配置爱点的API和token,此API使用的是爱点的直出答案API。
爱点网址: https://www.51aidian.com/ 邀请码:double666
// ==UserScript==
// @name 住房城乡建设行业从业人员教育培训平台自动搜题(八大员)
// @namespace http://tampermonkey.net/
// @version 1.0
// @description 自动搜题并显示答案
// @author 砼道中人
// @match https://zyk.etledu.com/*
// @grant none
// ==/UserScript==
(function () {
'use strict';
const apiUrl = 'API地址'; // 爱点的API 地址
const token = 'token';
let isAutoAnswering = false;
let currentQuestionIndex = 0;
// 选择出现次数最多的答案
function getMostFrequentAnswer(answers) {
const answerCount = {};
answers.forEach(answer => {
answer = answer.replace(/<br.*?>/g, '').trim().toLowerCase(); // 去除 HTML 标签并统一为小写
answerCount[answer] = (answerCount[answer] || 0) + 1;
console.log(`答案: ${answer}, 当前计数: ${answerCount[answer]}`);
});
const mostFrequent = Object.entries(answerCount).reduce((prev, curr) => {
return (prev[1] > curr[1]) ? prev : curr;
});
console.log('当前计数:', answerCount);
console.log(`最常见的答案是: ${mostFrequent[0]}`);
return mostFrequent[0]; // 返回出现次数最多的答案
}
// 搜索并显示题目答案
function searchAndDisplayAnswer(questionElement) {
const questionText = questionElement.textContent.trim();
const requestBody = {
token: token,
question: questionText
};
console.log('请求体:', JSON.stringify(requestBody));
fetch(apiUrl, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(requestBody)
})
.then(response => {
if (!response.ok) {
throw new Error('网络响应没有正常返回');
}
return response.json();
})
.then(data => {
console.log('API 返回数据:', data);
if (data.code === 1 && data.msg === "获取成功" && data.qlist.length > 0) {
const answers = data.qlist.map(item => item.answer).flat(); // 获取所有答案并展平数组
const answerToShow = getMostFrequentAnswer(answers); // 获取出现次数最多的答案
// 确保有效答案
if (answerToShow) {
// 将答案转换为大写
const upperCaseAnswer = answerToShow.toUpperCase();
// 在问题旁边显示答案
const answerDiv = document.createElement('div');
answerDiv.style.marginLeft = '20px';
answerDiv.style.display = 'inline-block';
answerDiv.style.padding = '5px';
answerDiv.style.border = '1px solid #ccc';
answerDiv.style.backgroundColor = '#f9f9f9';
answerDiv.style.color = 'red'; // 设置文本颜色为红色
answerDiv.innerHTML = `答案: ${upperCaseAnswer}`; // 使用大写答案
questionElement.parentNode.appendChild(answerDiv);
} else {
console.error('没有找到有效的答案。');
}
} else {
console.error('API 返回错误:', data.msg);
}
})
.catch(error => console.error('请求错误:', error));
}
// 处理题目
function processQuestions() {
const questionLists = document.querySelectorAll('ul.layui-form.dx_ulamn, ul.layui-form.dx_ulamnq'); // 选择题目
if (currentQuestionIndex < questionLists.length && isAutoAnswering) {
const questionList = questionLists[currentQuestionIndex];
const questionElement = questionList.querySelector('li'); // 获取题目文本
searchAndDisplayAnswer(questionElement); // 搜题并显示答案
currentQuestionIndex++; // 移动到下一个题目
setTimeout(processQuestions, 3000); // 每3秒处理一个题目
} else {
isAutoAnswering = false; // 停止自动答题
alert('所有题目已处理完毕。'); // 提示用户
}
}
// 开始自动搜题
function startAutoAnswer() {
isAutoAnswering = true; // 设置为自动答题状态
currentQuestionIndex = 0; // 重置题目索引
startButton.disabled = true; // 禁用开始按钮
stopButton.disabled = false; // 启用停止按钮
processQuestions(); // 开始处理题目
}
// 停止自动搜题
function stopAutoAnswer() {
isAutoAnswering = false; // 设置为停止状态
currentQuestionIndex = 0; // 重置题目索引
startButton.disabled = false; // 启用开始按钮
stopButton.disabled = true; // 禁用停止按钮
alert('自动搜题已停止。'); // 提示用户
}
// 添加开始按钮
const startButton = document.createElement('button');
startButton.innerHTML = '开始搜题';
startButton.style.position = 'fixed';
startButton.style.top = '10px';
startButton.style.right = '10px';
startButton.style.zIndex = '1000';
startButton.onclick = startAutoAnswer;
document.body.appendChild(startButton);
// 添加停止按钮
const stopButton = document.createElement('button');
stopButton.innerHTML = '停止搜题';
stopButton.style.position = 'fixed';
stopButton.style.top = '50px';
stopButton.style.right = '10px';
stopButton.style.zIndex = '1000';
stopButton.onclick = stopAutoAnswer;
stopButton.disabled = true; // 初始禁用停止按钮
document.body.appendChild(stopButton);
})();
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容