https://huodong.10155.com/h5/hdact5/basketballGame/#/
签到三天,第三天每次刷新增加一次投篮机会,理论上可以刷无限次投篮次数,bug有一定的时效性,有可能过几天就修复了,注意:只有签到满三天,在第三天的时候这个bug才会触发,第四天会重置,就不会触发这个逻辑漏洞
// 全局变量:记录执行次数和所有返回结果
let executeCount = 0; // 执行次数计数器
const requestResults = []; // 存储每次请求的返回结果
// 封装请求头配置,减少重复代码
function setCommonHeaders(xhr) {
xhr.setRequestHeader('Accept', 'application/json, text/plain, */*');
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.setRequestHeader('Pragma', 'no-cache');
xhr.setRequestHeader('Cache-Control', 'no-cache');
xhr.setRequestHeader('accessToken', 'Bearer eb2cdded-2105-4833-86c6-6b27856c8dea');
xhr.setRequestHeader('Accept-Language', 'zh-CN,zh;q=0.9');
}
// 第一个请求:开始挑战
function startChallenge() {
// 每次执行计数器+1
executeCount++;
const currentExecId = executeCount; // 记录本次执行的序号
console.log(`===== 第 ${currentExecId} 次执行 =====`);
const requestData = JSON.stringify({
"activityId": 1312,
"mobile": "你的手机号"
});
const xhr = new XMLHttpRequest();
xhr.withCredentials = true;
// 初始化本次执行的结果记录
const currentResult = {
execId: currentExecId, // 执行序号
time: new Date().toLocaleString(), // 执行时间
firstRequest: null, // 第一个请求结果
secondRequest: null // 第二个请求结果
};
xhr.addEventListener('readystatechange', function () {
if (this.readyState === this.DONE) {
// 处理第一个请求完成后的逻辑
if (this.status >= 200 && this.status < 300) {
try {
const responseData = JSON.parse(this.responseText);
console.log(`第 ${currentExecId} 次 - 第一个请求返回结果:`, responseData);
currentResult.firstRequest = responseData; // 记录第一个请求结果
// 确保获取到result后再执行第二个请求
if (responseData.result) {
challengeResultRecord(responseData.result, currentResult);
} else {
const errorMsg = `第 ${currentExecId} 次 - 第一个请求未返回result字段`;
console.error(errorMsg, responseData);
currentResult.firstRequest = { error: errorMsg, rawData: responseData };
// 记录本次结果
requestResults.push(currentResult);
}
} catch (e) {
const errorMsg = `第 ${currentExecId} 次 - 解析第一个请求返回数据失败`;
console.error(errorMsg, e);
currentResult.firstRequest = { error: errorMsg, errorDetail: e };
// 记录本次结果
requestResults.push(currentResult);
}
} else {
const errorMsg = `第 ${currentExecId} 次 - 第一个请求失败,状态码:${this.status}`;
console.error(errorMsg);
currentResult.firstRequest = { error: errorMsg, statusCode: this.status };
// 记录本次结果
requestResults.push(currentResult);
}
}
});
xhr.open('POST', 'https://huodong.10155.com/wo_activity/basketballCheck/startChallenge');
setCommonHeaders(xhr);
xhr.send(requestData);
}
// 第二个请求:提交挑战结果
function challengeResultRecord(challengeId, currentResult) {
const currentExecId = currentResult.execId;
const requestData = JSON.stringify({
"id": challengeId,
"hitCount": 8
});
const xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener('readystatechange', function () {
if (this.readyState === this.DONE) {
// 处理第二个请求完成后的逻辑
if (this.status >= 200 && this.status < 300) {
try {
const responseData = JSON.parse(this.responseText);
console.log(`第 ${currentExecId} 次 - 第二个请求返回结果:`, responseData);
currentResult.secondRequest = responseData; // 记录第二个请求结果
} catch (e) {
const errorMsg = `第 ${currentExecId} 次 - 解析第二个请求返回数据失败`;
console.error(errorMsg, e);
currentResult.secondRequest = { error: errorMsg, errorDetail: e };
}
} else {
const errorMsg = `第 ${currentExecId} 次 - 第二个请求失败,状态码:${this.status}`;
console.error(errorMsg);
currentResult.secondRequest = { error: errorMsg, statusCode: this.status };
}
// 记录本次完整结果
requestResults.push(currentResult);
console.log(`===== 第 ${currentExecId} 次执行完成,累计执行 ${executeCount} 次 =====`);
}
});
xhr.open('POST', 'https://huodong.10155.com/wo_activity/basketballChallengeTime/challengeResultRecord');
setCommonHeaders(xhr);
xhr.send(requestData);
}
// 定时执行函数:每0.5秒执行一次startChallenge
function startScheduledExecution() {
// 立即执行第一次
startChallenge();
// 之后每0.5秒执行一次(1000毫秒 = 1秒)
setInterval(() => {
startChallenge();
}, 500);
// 提供查看结果的辅助函数
window.getExecutionResults = function() {
console.log('===== 所有执行结果汇总 =====');
console.log(`累计执行次数:${executeCount}`);
console.log('执行详情:', requestResults);
return {
totalCount: executeCount,
results: requestResults
};
};
console.log('定时任务已启动,每0.5秒执行一次!');
console.log('可调用 getExecutionResults() 查看所有执行记录');
}
// 启动定时执行
startScheduledExecution();
📌 转载信息
转载时间:
2026/1/3 14:40:47