// ==UserScript== // @name 黑糖 // @namespace http://sugarblack.top // @version 0.1.0 // @description q11e 代刷网站的定时提交控制脚本 // @author zemelee // @license MIT // @match http://sugarblack.top/* // ==/UserScript== async function oneTime(count) { let homeBtn = document.querySelector("#home-btn"); homeBtn.click() await new Promise((resolve) => { setTimeout(resolve, 1000); }); let inputEl = document.querySelector('input[step="5"][max="100"]'); inputEl.value = count const inputEvent = new Event('input', { bubbles: true }); inputEl.dispatchEvent(inputEvent); await new Promise((resolve) => { setTimeout(resolve, 500); }); let submitBtn = document.querySelector("#submit-btn"); submitBtn.click() await new Promise((resolve) => { setTimeout(resolve, 1000); }); const buttons = document.querySelectorAll('button'); const confirmBtn = Array.from(buttons).filter(button => button.innerText.trim() === '确认'); confirmBtn[0].click() } function showMessage(text, delay) { messageBox = document.createElement('div'); messageBox.textContent = text; messageBox.style.cssText = ` position: fixed; top: 50%; left: 50%; transform: translateX(-50%); background-color: rgba(0, 0, 0, 0.8); color: white; padding: 10px 20px; border-radius: 5px; z-index: 9999; `; document.body.appendChild(messageBox); setTimeout(() => { document.body.removeChild(messageBox); messageBox = null; // 释放引用,准备下一次使用 }, delay); // 4 seconds } function validate(inputs) { let inputNum = inputs[0] let inputInterval = inputs[1] let inputFor = inputs[2] if (!inputNum.value || !inputInterval.value || !inputFor.value) { showMessage("份数/间隔/循环次数 需要填写完整", 3500) return false } if (inputNum.value >= 88 || inputNum.value <= 1) { showMessage("提交次数区间为[2, 88]!", 3500) return false } if (inputInterval.value > 600 || inputInterval.value < 10) { showMessage("间隔时间区间为[10, 600s]!", 3500) return false } if (inputFor > 100 || inputFor < 1) { showMessage("循环次数区间为[1, 100]!", 3500) return false } return true } async function executeRepeatedly(delay, forTime, singleCnt) { let count = 0; async function execute() { if (count < forTime) { showMessage(`当前循环轮次:${count + 1}`, 5000) await oneTime(singleCnt); // 等待 oneTime() 完成 count++; setTimeout(execute, delay * 1000); } } await execute(); window.location.replace("http://sugarblack.top/#/home/params") } (async function () { 'use strict'; let singleCnt = localStorage.getItem("singleCnt") || null; let forTime = localStorage.getItem("forTime") || null; let delay = localStorage.getItem("delay") || null; await new Promise((resolve) => { setTimeout(resolve, 1000); }); const btns = document.querySelector(".btns") btns.appendChild(document.createElement("br")) // const label1 = document.createElement('label'); const label2 = document.createElement('label'); const label3 = document.createElement('label'); label1.textContent = "份数"; label2.textContent = "间隔"; label3.textContent = "循环"; let inputNum = document.createElement("input") let inputInterval = document.createElement("input") let inputFor = document.createElement("input") inputNum.placeholder = "每次提交的份数"; inputInterval.placeholder = "提交间隔(秒)"; inputFor.placeholder = "循环次数"; // inputNum.className = "inputNum"; // inputInterval.className = "inputInterval"; // inputFor.className = "inputFor"; if (singleCnt && forTime && delay) { inputNum.value = singleCnt; inputInterval.value = delay; inputFor.value = forTime; } let inputs = [inputNum, inputInterval, inputFor] let labels = [label1, label2, label3] inputs.forEach((item, index) => { item.style.marginLeft = "6px"; item.style.marginRight = "20px"; item.type = "number"; item.style.width = "150px"; btns.appendChild(labels[index]); btns.appendChild(item) }) let startBtn = document.createElement("button") startBtn.textContent = "开始" startBtn.style.marginLeft = "10px"; startBtn.addEventListener("click", function () { if (!validate(inputs)) return singleCnt = inputNum.value; forTime = inputFor.value; delay = inputInterval.value; localStorage.setItem("singleCnt", singleCnt) localStorage.setItem("forTime", forTime) localStorage.setItem("delay", delay) executeRepeatedly(delay, forTime, singleCnt) }) btns.appendChild(startBtn) })();