自动勾选论坛帖子 - 悬赏、最佳答案、无悬赏
这段代码主要是用于自动勾选某个论坛中特定类型的帖子,比如'有最佳答案'、'悬赏中'、'不存在悬赏'等。它首先获取所有帖子的链接,然后对每个链接进行访问,获取帖子的信息,判断该帖子是否符合要求,如果符合要求,就记录该帖子的复选框位置,最后勾选这些复选框。代码中还包含一些控制变量,比如控制勾选哪些链接、元素起始位置等。该代码可以帮助用户快速找到并勾选需要的帖子,提高效率。/n/n代码示例:/njavascript/nvar controlq = 0; // 元素起始位置(如果你需要继续任务,根据上一次结果【提示】填写)/nvar controlg = 1; // 控制勾选哪些链接 1✔有最佳答案,2▶悬赏中,3✖不存在悬赏/n/nvar linkcounter = 0; // 复选框位置记录器/nvar links = document.getElementsByTagName(/'a/');/nvar answerIndexes = [];/nvar stepnumber = 30;/nasync function fetchHTML(url) {/n const timeout = 3000; // 添加一个超时时间/n const controller = new AbortController();/n const id = setTimeout(() => controller.abort(), timeout);/n try { const response = await fetch(url, { signal: controller.signal }); const data = await response.text(); clearTimeout(id); return data; } catch (err) { clearTimeout(id); throw err; } /n}/n/nif (controlq !== 0) linkcounter = Math.floor((controlq - 56) / 2);/nfor (var i = controlq; i < links.length; i++) {/n var href = links[i].getAttribute(/'href/');/n if (href && href.indexOf(/'read.php?tid-/') !== -1) {/n var url = window.location.origin + /'/' + href;/n var data = await fetchHTML(url);/n var title = data.match(/<title>(.*?)<//title>/)[1].replace(/ - Lv/+ Level Plus - powered by Pu!mdHd/g, /'/').replace(/ /g, /' /');/n var reward = data.match(/此帖悬赏.+?SP币/); if (reward) { var rewardText = reward[0].replace(/<//?[^>]+(>|$)/g, /'/').replace(/ /g, /' /'); }/n var bestAnswer = data.match(/最佳答案获得者: (//w+)/);/n/n if (bestAnswer) {/n console.log(/'✔有最佳,回答者/' + bestAnswer[1] + /',元素位置:/' + i + /' 标题:/' + title);/n } else if (reward) {/n console.log(/' ▶/' + rewardText + /',元素位置:/' + i + /' 标题:/' + title);/n } else {/n console.log(/' ✖不存在悬赏/' + /',元素位置:/' + i + /' 标题:/' + title);/n }/n if (controlg === 1 && bestAnswer || rewardText.indexOf('已结束') !== -1) { //如果 帖子还是悬赏中,但是,剩余时间是【已结束】,也算作结案了/n answerIndexes.push(linkcounter); // 记录需要勾选链接的索引值/n } else if (controlg === 2 && reward) {/n answerIndexes.push(linkcounter); // 勾选此帖悬赏.+?SP币的链接/n } else if (controlg === 3 && !reward && !bestAnswer) {/n answerIndexes.push(linkcounter); // 勾选不存在悬赏状态的链接/n }/n linkcounter = linkcounter + 1; stepnumber = stepnumber - 1; await new Promise(resolve => setTimeout(resolve, 1000)); if (stepnumber <= 0) { console.log(/'//n/' + /'➥➥➥提示:下次继续任务时,代码第一行需要改成:var controlq = /' + (i + 2)); break; }/n }/n}/n/nconsole.log(controlg === 1 ? /'✔有最佳答案(含☹过期悬案)的复选框是:/' + answerIndexes.join() : controlg === 2 ? /'▶悬赏中...的复选框是:/' + answerIndexes.join() : controlg === 3 ? /'✖不存在悬赏...的复选框是:/' + answerIndexes.join() : /'/');/nvar checkboxes = document.querySelectorAll('input[type=/'checkbox/']');/nvar checkedIndexes = answerIndexes; // 需要勾选的索引值/nfor (var i = 0; i < checkboxes.length; i++) {checkboxes[i].checked = checkedIndexes.indexOf(i) !== -1 ? true: checkboxes[i].checked;}/n/n/n代码中包含一些控制变量,比如controlg 控制勾选哪些链接,controlq 控制元素起始位置,你可以根据需要修改它们。/n/n使用说明:/n1. 将代码粘贴到浏览器的控制台(按下 F12 键打开控制台)。/n2. 修改代码中 controlg 的值,选择要勾选的帖子类型:/n * 1: 有最佳答案(含过期悬赏)/n * 2: 悬赏中/n * 3: 不存在悬赏/n3. 如果需要继续任务,请根据上一次运行结果的提示,修改代码中 controlq 的值。/n4. 点击控制台中的 “Enter” 键,开始执行脚本。/n/n注意事项:/n* 此脚本仅供学习和参考,请勿用于任何商业用途或违反网站使用条款的行为。/n* 该脚本需要在浏览器的控制台中运行,并且需要访问当前页面的所有元素。/n* 脚本的运行速度和效率可能因网络状况、网站负载等因素而异。/n* 请务必备份重要数据,并在使用脚本前仔细阅读网站使用条款。/n
原文地址: https://www.cveoy.top/t/topic/lPgk 著作权归作者所有。请勿转载和采集!