您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
bitquant auto submit
// ==UserScript== // @name bitquant auto submit - prod // @namespace http://tampermonkey.net/ // @version 2025-07-02 01 // @description bitquant auto submit // @author You // @match https://www.bitquant.io/ // @icon https://www.google.com/s2/favicons?sz=64&domain=bitquant.io // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; function log(msg) { console.log(`[AutoSubmit][${new Date().toLocaleTimeString()}]`, msg); } let submitCount = 0; // 新增提交计数器 // === 配置区 === const INPUT_WAIT_MIN = 5000; // 输入后最小等待时间(毫秒) const INPUT_WAIT_RANGE = 2000; // 输入后等待时间波动范围(毫秒) const RETRY_WAIT = 5000; // 重试等待时间(毫秒) const NEXT_STEP_WAIT = 3000; // 提交后到下次操作等待时间(毫秒) const maxSubmitCount = 30; // 最大提交次数 // 文本区 const originalTexts = ['btc', 'eth', 'bnb', 'sol', 'xpr', 'usdt', 'usdc', 'trx', 'doge', 'ada', 'hype', 'sui', 'link', 'avax', 'ton', 'shib', 'ltc', 'arb', 'op', 'inj']; //const extraTexts = ['价格', '总量', '市值排名', '是否值得购买', '市值排名', '24小时交易量', '历史最高价', '流通供应量', '活跃地址数', '大额交易追踪', '交易所持仓比', '重大新闻事件']; const extraTexts = ['', 'price', 'total supply', 'market cap ranking', 'whether worth buying', 'market cap ranking', '24-hour trading volume', 'all-time high', 'circulating supply', 'active address count', 'large transaction tracking', 'exchange holdings ratio', 'major news events']; // 生成所有组合并打乱 function shuffle(arr) { for (let i = arr.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); [arr[i], arr[j]] = [arr[j], arr[i]]; } return arr; } function generateCombos() { const combos = []; for (const t of originalTexts) { for (const e of extraTexts) { combos.push(t + (e ? ' ' + e : '')); } } return shuffle(combos); } let combos = generateCombos(); // 查找页面元素 function findElements() { const textarea = document.querySelector('textarea'); if (!textarea) { log(`未找到 textarea,${RETRY_WAIT / 1000} 秒后重试`); setTimeout(tryGetTextareaAndStart, RETRY_WAIT); return null; } const form = textarea.closest('form'); if (!form) { log(`未找到 form,${RETRY_WAIT / 1000} 秒后重试`); setTimeout(tryGetTextareaAndStart, RETRY_WAIT); return null; } return { textarea, form }; } // 检查是否应停止(无配额或次数到达上限) function checkShouldStop() { if (document.body && document.body.innerText.includes('No more messages left for today')) { log('检测到"No more messages left for today",脚本停止执行'); return true; } if (submitCount >= maxSubmitCount) { log(`已提交${submitCount}次,达到上限,脚本停止。`); return true; } return false; } // 检查元素状态 function checkElementsState(elements) { const { textarea } = elements; if (textarea.disabled || textarea.readOnly) { log(`textarea 不可输入,${RETRY_WAIT / 1000} 秒后重试`); setTimeout(() => tryGetTextareaAndStart(), RETRY_WAIT); return false; } return true; } // 按字符逐步输入内容 function typeText(textarea, text, callback) { textarea.focus(); textarea.value = ''; let i = 0; function inputChar() { if (i > text.length) { // 输入完成后插入空格并模拟真实按键 textarea.focus(); textarea.setSelectionRange(textarea.value.length, textarea.value.length); // 依次派发事件 const spaceDown = new KeyboardEvent('keydown', { key: ' ', code: 'Space', keyCode: 32, which: 32, bubbles: true }); const spacePress = new KeyboardEvent('keypress', { key: ' ', code: 'Space', keyCode: 32, which: 32, bubbles: true }); const spaceUp = new KeyboardEvent('keyup', { key: ' ', code: 'Space', keyCode: 32, which: 32, bubbles: true }); textarea.dispatchEvent(spaceDown); textarea.dispatchEvent(spacePress); // 尝试用 setRangeText 插入空格 textarea.setRangeText(' ', textarea.selectionStart, textarea.selectionEnd, 'end'); const inputEvent = new Event('input', { bubbles: true }); textarea.dispatchEvent(inputEvent); textarea.dispatchEvent(spaceUp); if (callback) callback(); return; } textarea.value = text.slice(0, i); const inputEvent = new Event('input', { bubbles: true }); textarea.dispatchEvent(inputEvent); i++; setTimeout(inputChar, 300); } inputChar(); } // 提交单个文本 function submitText(elements) { const { textarea, form } = elements; // combos用完后重头开始 if (combos.length === 0) { log('所有组合已用完,重头开始并重新打乱'); combos = generateCombos(); } const inputText = combos.pop(); log(`填写内容: ${inputText}`); // 按字符输入内容 typeText(textarea, inputText, () => { // 输入后等待一段时间再查找并点击提交按钮 const waitTime = Math.floor(Math.random() * INPUT_WAIT_RANGE) + INPUT_WAIT_MIN; log(`等待 ${waitTime / 1000} 秒后查找并点击提交按钮`); setTimeout(() => { if (checkShouldStop()) { return; } const button = form.querySelector('button'); if (!button) { log(`未找到提交按钮,${RETRY_WAIT / 1000} 秒后重试`); setTimeout(() => submitText(elements), RETRY_WAIT); return; } if (button.disabled) { log(`提交按钮不可用,${RETRY_WAIT / 1000} 秒后重试`); setTimeout(() => submitText(elements), RETRY_WAIT); return; } log('点击提交按钮'); button.click(); submitCount++; // 每次提交后计数+1 // 继续下一个 setTimeout(() => tryGetTextareaAndStart(), NEXT_STEP_WAIT); }, waitTime); }); } // 主要处理流程 function tryGetTextareaAndStart() { // 是否停止 if (checkShouldStop()) { return; } // 查找元素 const elements = findElements(); if (!elements) { return; } // 检查元素状态 if (!checkElementsState(elements)) { return; } // 提交文本 submitText(elements); } window.addEventListener('load', function() { log('页面已加载,开始检测元素'); tryGetTextareaAndStart(); }); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址