易班帖子自动评论点赞
// ==UserScript==
// @name 易班帖子自动评论点赞
// @namespace https://wechatid.github.io/2024/11/06/Yiban-JSmonkey/
// @version 1.0
// @description 易班帖子自动评论点赞的脚本,完全自动获取网薪经验值。易班帖子自动评论点赞脚本,自动获取网薪和经验值
// @match https://s.yiban.cn/app/*
// @exclude https://s.yiban.cn/app/383996/post-detail/wxnC9a90k2Bge27
// @grant GM_addStyle
// @grant GM_xmlhttpRequest
// @grant GM_download
// @license All rights reserved
// ==/UserScript==
(function () {
"use strict";
let COMMENT_COUNTER = 0;
// 评论次数
let msg_text;
window.liked_count = 1;
window.valid_liked_count = 1;
let sever = 'http://113.45.159.104:8000';
const floatingWindowHTML = `
<div id="floatingWindow">
<div id="title">易班自动评论发帖</div>
<div id="announcement">公告:欢迎使用易班帖子自动评论点赞,自动执行零风险100%安全。<br>配合<a href="https://greasyfork.org/zh-CN/scripts/516166-%E6%98%93%E7%8F%AD%E8%87%AA%E5%8A%A8%E5%8F%91%E5%B8%96%E7%BD%91%E8%96%AA%E7%BB%8F%E9%AA%8C%E5%80%BC" target="_blank">自动发帖脚本</a>使用一天能获取160+网薪经验值<br>两个脚本共用同一张卡密哦~<br>加QQ群获取<strong>免费</strong>试用额度,群号:912033859 验证密码为:9412<br>刷网薪值和经验值必备!</div>
<div class="button-row">
<button class="btnhy" onclick="window.open('http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=73thmEuo_TCaipv8gUuEk1cTbbTgGKIe&authKey=iJEotuZey7eVphPY8Ab9b3Jk%2FSfg00laloCvM6%2FfjLkWv1sgtUWxnMtwLACYn18f&noverify=0&group_code=912033859', '_blank')">加QQ群</button>
<button class="btnhy" onclick="window.open('https://hsfaka.cn/shop/D2GYQYL1', '_blank')">购买卡密</button>
</div>
<div id="countdown" style="display: inline-block;">评论次数: <div id="comment_counter" style="display: inline-block;">0</div></div>
<div id="likes" style="display: inline-block;">点赞次数: <div id="thum_counter" style="display: inline-block;">0</div></div>
<div id="finish_text" style="color: yellow;"></div>
<div id="msg_key">卡密剩余次数:<div id="key_counter" style="display: inline-block; color: red;">10</div></div>
<div id="inputRow">
<input type="text" id="inputBox" placeholder="请输入卡密">
<button id="subtn" class="btnhy">确定</button>
</div>
<span id="toggleBtn">▼</span> <!-- 折叠/展开按钮 -->
</div>
`;
// 将浮动窗口插入到body的第一行
document.body.insertAdjacentHTML('afterbegin', floatingWindowHTML);
// 2. 添加样式
GM_addStyle(`
#floatingWindow {
position: fixed;
bottom: 10px;
left: 10px;
width: 300px;
max-height: 500px;
background: #2c3e50;
color: #fff;
border-radius: 8px;
box-shadow: 0 2px 10px rgba(0,0,0,0.3);
padding: 10px;
font-family: Arial, sans-serif;
transition: all 0.3s ease;
}
#title {
font-size: 13px;
font-weight: bold;
margin-bottom: 10px;
}
#announcement {
font-size: 13px;
color: #bdc3c7;
margin-bottom: 10px;
}
.button-row {
display: flex;
justify-content: space-between;
margin-bottom: 10px;
}
.btnhy {
background-color: #2980b9;
color: #fff;
border: none;
padding: 6px 12px;
border-radius: 4px;
cursor: pointer;
font-size: 13px;
}
.btnhy:hover {
background-color: #3498db;
}
#countdown, #likes,#msg_key{
font-size: 13px;
color: #ecf0f1;
}
#inputRow {
display: flex;
align-items: center;
}
#inputBox {
width: 180px;
padding: 6px;
border-radius: 4px;
border: 1px solid #34495e;
background-color: #34495e;
color: #ecf0f1;
margin-right: 10px;
}
#toggleBtn {
position: absolute;
top: 10px;
right: 10px;
font-size: 17px;
cursor: pointer;
color: #fff;
background: rgba(0, 0, 0, 0.3);
border-radius: 50%;
padding: 5px;
}
#floatingWindow.collapsed {
max-height: 40px;
overflow: hidden;
}
`);
// 3. 添加折叠和展开功能
const toggleBtn = document.getElementById('toggleBtn');
const floatingWindow = document.getElementById('floatingWindow');
toggleBtn.addEventListener('click', () => {
floatingWindow.classList.toggle('collapsed');
toggleBtn.innerHTML = floatingWindow.classList.contains('collapsed') ? '▲' : '▼';
});
// 从 localStorage 中读取保存的 API Key
let savedKey = localStorage.getItem('apiKey');
if (savedKey) {
// 如果有保存的API Key,将其填充到输入框
document.getElementById('inputBox').value = savedKey;
} else {
document.getElementById('inputBox').placeholder = "暂未填写你的卡密";
}
// 获取确认按钮并添加事件监听器
document.getElementById('subtn').addEventListener('click', function() {
// 获取用户输入的 API Key
const apiKey = document.getElementById('inputBox').value;
if (apiKey) {
// 存储用户输入的 API Key 到 localStorage
localStorage.setItem('apiKey', apiKey);
savedKey = localStorage.getItem('apiKey');
document.getElementById('inputBox').value = savedKey;
alert('卡密已保存,请妥善保管,清除缓存会丢失卡密信息!刷新页面即可开始');
} else {
//alert('请输入有效的API Key');
}
});
let remaining = document.getElementById('key_counter');//剩余次数
GM_xmlhttpRequest({
method: 'GET',
url: sever + '/check_counter?key=' + savedKey,
headers: {
'Accept': 'application/json'
},
onload: function(r) {
if (r.status === 200) {
try {
const j = JSON.parse(r.responseText);
remaining.textContent = j.counter;
} catch (e) {
remaining.textContent = '响应解析失败';
}
} else {
remaining.textContent = '卡密不存在';
}
},
onerror: function() {
remaining.textContent = '请求失败';
}
});
setTimeout(() => {
window.scrollTo(0, document.querySelector("body > div.container.with-bg > section > section.comments.box").offsetTop);
setTimeout(() => {
window.scrollTo(0, document.querySelector("body > div.container.with-bg > section > section.comments.box").offsetTop + 105 * 20);
setTimeout(() => {
let reloadCoult = document.querySelector("body > div.container.with-bg > section > section.comments.box > div").children.length;
if (reloadCoult >= 35) {
Thumbs();
executeFirstPart(startInterval);
//评论执行入口(函数调用)
} else {
alert("脚本加载失败,当前帖子点赞量过少,请选择一个高浏览量的帖子。");
}
}, 2000);
}, 2000);
}, 3800);
function executeFirstPart() {
let input_div;
input_div= document.querySelector("body > div.container.with-bg > section > section.submit > div > div");
if (input_div) {
input_div.click();
setTimeout(() => {
let input_text;
input_text= document.querySelector("body > div.container.with-bg > section > section.submit > div > div.inner > div.input-wrapper > input[type=text]");
let text = getRandomMessage();
msg_text = text;
input_text.value = text;
input_text.dispatchEvent(new Event('input'));
let send_btn = document.querySelector("body > div.container.with-bg > section > section.submit > div > div.inner > div.submit-btn.btn");
send_btn.click();
setTimeout(() => {
verify();
startInterval();
}, 2000);
}, 1000);
}
}
function startInterval() {
console.log("开始计时")
COMMENT_COUNTER++;
if (COMMENT_COUNTER == 30){
document.getElementById("comment_counter").textContent = "30(已完成)";
document.getElementById("finish_text").textContent = "恭喜你已完成!本次允许获得60网薪和经验值,配合自动发帖脚本使用能达到160网薪和经验值!";
return;
}
let time = 60;
// 每60秒执行一次
let send_cd = setInterval(() => {
time = time - 1;
document.getElementById("comment_counter").textContent = COMMENT_COUNTER + "/" + time;
if (time == 0){
executeFirstPart();
clearInterval(send_cd);
}
}, 1000);
}
function Thumbs(){
let _t = setInterval(() => {
let dom = document.querySelector(
"body > div.container.with-bg > section > section.comments.box > div > div:nth-child(" +
liked_count +
") > div > div.status > div.actions > div.like > div"
);
if (!dom.firstChild.classList.contains("liked")) {
dom.click();
valid_liked_count++;
liked_count++;
document.getElementById("thum_counter").textContent = liked_count;
if (valid_liked_count >= 35) {
clearInterval(_t);
document.getElementById("thum_counter").textContent = liked_count + "(已完成)";
}
} else {
liked_count++;
}
}, 4000);
}
function simulateComplexClick(element, offsetX, offsetY) {
let rect = element.getBoundingClientRect();
let click_x = rect.left + offsetX;
let click_y = rect.top + offsetY;
["mousedown", "mouseup", "click", /* "touchstart"*/ ].forEach((eventType) => {
var clickEvent = new MouseEvent("mousedown", {
bubbles: true,
cancelable: true,
view: unsafeWindow,
clientX: click_x,
clientY: click_y,
});
element.dispatchEvent(clickEvent);
let new_msg;
setTimeout(() => {
new_msg = document.querySelector("body > div.container.with-bg > section > section.comments.box > div > div:nth-child(1) > div > div.content");
//获取最新一条评论
if (msg_text == new_msg.textContent.trim()) {
console.log('发送成功');
}else{
verify();
}
}, 3000);
});
}
window.simulateComplexClick = simulateComplexClick
let bg_url = ''; // 全局状态变量,存储背景图 URL
let interval; // 用于保存定时器引用
function verify() {
// 清除之前的定时器
if (interval) {
clearInterval(interval);
}
setTimeout(() => {
interval = setInterval(() => {
//let element = document.querySelector('.shumei_captcha_loaded_img_bg');
let base_dom = document.querySelector("body").lastChild.childNodes[1].childNodes[0];
let element = base_dom.childNodes[0].childNodes[2].firstChild.firstChild;
if (element) {
console.log("333");
// 检查 src 是否更新
if (element.src.indexOf('https') !== -1 && bg_url !== element.src) {
clearInterval(interval); // 清除定时器,防止重复执行
bg_url = element.src; // 更新 bg_url
GM_xmlhttpRequest({
method: 'GET',
url: sever + '/predict?key=' + savedKey + '&bg_img=' + encodeURIComponent(element.src),
headers: {
'Accept': 'application/json'
},
onload: function(r) {
if (r.status === 200) {
try {
const j = JSON.parse(r.responseText);
if (j['reply'] === 'success') {
simulateComplexClick(base_dom.childNodes[0].childNodes[2].firstChild.firstChild, j['position']['X'] / 2, j['position']['Y'] / 2);
remaining.textContent = j['counter'];
} else {
alert('次数不够');
}
} catch (e) {
alert('响应解析失败');
}
} else {
alert('卡密或者服务器错误');
}
},
onerror: function() {
alert('请求失败');
}
});
}
}
}, 100);
}, 100);
}
// 随机选择短句或者 3 个随机词语
function getRandomMessage() {
// 词语和短句数组
const words1 = [
"希望", "憧憬", "友爱", "团结", "合作", "愉快", "勤奋", "刻苦", "认真", "专注", "钻研", "踏实", "勤恳",
"坦然", "努力", "爱心", "积极", "友好", "自信", "勇敢",
"坚定", "整齐", "动人", "典雅", "豁达", "和谐", "尊敬"];
const words2 = [
"整洁", "称赞", "简洁", "秀丽", "匀称", "标致", "感激", "魅力", "优秀", "关切", "坚强", "清净", "壮志", "激励", "勉励",
"坚持", "奋进", "恒心", "毅力", "勤奋", "刻苦", "追求", "坚强", "自信", "干净", "壮观","玲珑", "健壮", "慈祥", "温柔", "赞许", "欣喜", "安详", "坦然", "努力", "爱心",
"甜蜜", "积极", "友好", "自信", "勇敢", "坚定", "整齐", "俏丽", "端庄", "文静", "动人", "典雅", "豁达",
];
const phrases = ["不要等待机会,而要创造机会。",
"成功的秘诀在于对失败的态度。",
"每天告诉自己一次,我真的很不错。",
"发光并非太阳的专利,你也可以发光。",
"理想的路总是为有信心的人预备着。",
"不要等待机会,而是要创造机会。",
"业精于勤荒于嬉,行成于思毁于随。",
"世界会向那些有目标和远见的人让步。",
"发光并非太阳的专利,你也可以发光。",
"理想的路总是为有信心的人预备着。",
"环境不会改变,解决之道在于改变自己。",
"保持积极的心态,不断激发自己的潜能。",
"每一发奋努力的背后,必有加倍的赏赐回报。",
"过去不等于未来,只有努力才能成就更好的未来。",
"只有不断学习和提升自我,才能跟上时代的步伐。",
"每天进步一点点,积累小的成功,实现大的目标。",
"只有勇于尝试新事物,才能拓展自己的视野和能力。",
"生活中不是缺乏机会,而是缺乏发现机会的眼睛。",
"要在竞争中取胜,必须不断提高自己的竞争力。",
"人生没有过不去的坎,只有过不去的心态。",
"要想获得成功,必须要有明确的目标和计划。",
"困难像弹簧,你弱它就强;你强它就弱。",
"只有不断找寻机会的人才会及时把握机会。",
"拥有梦想只是一种智力,实现梦想才是一种能力。",
"只要坚持努力,就一定能够实现自己的目标。",
"每个人都可以成为自己想要的样子,只要他们愿意努力。",
"成功需要耐心和恒心,而不是一时的冲动。",
"不要害怕失败,它会让你更加坚强。",
"只要你相信自己,没有什么是不可能的。",
"不要被别人的评价所左右,要相信自己内心的声音。",
"努力不一定会成功,但不努力一定不会成功。",
"不要害怕冒险,因为冒险是成长的唯一途径。",
"不要被困难所吓倒,因为困难是磨炼人的最好武器。",
"与其嫉妒别人的成功,不如用自己的努力去争取。",
"每一次失败都是一次宝贵的经验,只要我们不放弃。",
"如果你有鸭梨,把它放冰箱里,它就会变成冻梨。",
"在这世上珍贵的东西总是罕有,所以这世上只有一个你。",
"不要被过去的失败困扰,要从失败中吸取经验,继续前行。",
"每个人都有自己的优点和不足,关键是要发挥自己的长处。",
"成败不在别人,而在自己。只有不断努力向前,才能实现梦想。",
"每个人都有属于自己的战斗,挣脱过去,活在当下,还有创造未来。",
"面对困难,首先要相信自己的能力,然后寻找解决问题的方法。",
"做自己喜欢的事情是最重要的,因为那样你会更加快乐和自信。",
"乐观者在一个灾难中看到一个希望,悲观者在一个希望中看到一个灾难。",
"人生就像一场马拉松比赛,只有坚持到最后,才能看到美丽的风景。",
"每一天都是一个新的开始,让我们迎接挑战,尽展潜能,追求卓越!",
"相信自己,你能做到任何事情。只有克服了困难,才能更上一层楼!",
"保持积极心态,让自己的情绪高涨,用激情和自信去迎接生活的挑战!",
"每一个成功者都有一个开始。勇于开始,才能找到成功的路。",
"有一种人只做两件事:你成功了,他妒嫉你;你失败了,他笑话你。",
"乐观者在一个灾难中看到一个希望,悲观者在一个希望中看到一个灾难。",
"不要害怕失败,失败是成功的垫脚石。只有敢于尝试,才能收获更多的成功!",
"不断学习和进步,让自己成为更加有用的人。只有不断超越自己,才能实现梦想。",
"不要安于现状,要勇往直前。只有敢于追求梦想,才能实现自己的价值!",
"只要我们坚持努力,成功就会一步步靠近。让我们不断进取,成为更好的自己!",
"无论才能、知识多么卓著,如果缺乏热情,则无异纸上画饼充饥,无补于事。",
"过去的事已经一去不复返。聪明的人是考虑现在和未来,根本无暇去想过去的事。",
"无论遇到什么困难,都要坚信自己可以战胜它。相信自己,就是胜利的第一步!",
"世上并没有用来鼓励工作努力的赏赐,所有的赏赐都只是被用来奖励工作成果的。",
"不要因为一次的失误而放弃整个事情,只要你认真总结经验教训,就一定能够成功。",
"世上并没有用来鼓励工作努力的赏赐,所有的赏赐都只是被用来奖励工作成果的。",
"努力是人生的一种精神状态,往往最美的不是成功的那一刻,而是那段努力奋斗的过程。",
"保持积极的生活态度,把每天的事情安排得井井有条。只有做好小事,才能成就大事!",
"不要让别人的评价左右自己的人生选择。做自己喜欢的事,坚定自己的信念,才能真正成功!",
"要使自己的生命获得极值,就不能太在乎别人对你的看法,我最合适的老师在一座荒岛上——富兰克林?罗斯福。",
"伟人之所以伟大,是因为他与别人共处逆境时,别人失去了信心,他却下决心实现自己的目标。",
"实现自己既定目标的关键是意志。意志坚定的人,能自普通小事中挖掘出无穷无尽的潜能。",
"今天的努力,是幸运的伏笔,当下的付出,是明日的花开,让我们怀揣希望去努力,静待美好的出现。",
"岁月流逝,光阴一去不复返,漫漫人生路,多少坎坷起起伏,昨日的忧伤,昨日的哀痛,埋葬在岁月的长河里,除了遗忘还有铭记。",
"生活中难免会有一些委屈,受委屈时我们的情绪往往会影响到整一天的心情和工作,其实和委屈已经没有多大的关系了,关键是我们要学会释放自己,消化它。",
"人生就像一盒巧克力,你永远不知道你会吃到什么口味,每天都要吃点苦的东西,以免忘记苦味。",
"无论遇到多大的困难,只要我们始终坚持并努力奋斗,我们一定能够克服它们,最终实现我们的目标。",
"勇敢面对困难和挫折,不退缩,不放弃,积极寻求解决问题的方法,一步一个脚印地前进。",
"成功并不是一蹴而就的,它是需要积累的,只有不断地积累经验、知识和技能,我们才能逐步迈向成功的道路。",
"不要害怕失败,因为失败是成功的垫脚石。只有经历过失败,我们才能更好地吸取教训,发现自己的不足之处,不断提高自己。",
"要有远大的目标和梦想,同时要敢于追求梦想、勇于突破自己的限制,不断地挑战自己,超越自己。",
"不要忘记自己的价值,不要被周围的声音所左右。每个人都有自己的独特之处,只有发掘并发挥自己的优势,才能真正实现自己的价值。",
"不断地学习和成长是永不停息的过程。只有不断地学习新的知识和技能,我们才能更好地适应不断变化的社会环境,迎接更多的挑战。",
"保持积极乐观的心态是走向成功的重要因素之一。无论遇到什么困难和挫折,都要积极面对、乐观向上,相信自己一定能够克服它们。",
"只有付出真诚的努力和奋斗,才能获得真正的成就和收获。不要想着走捷径或者偷懒,只有脚踏实地地前行才能走得更远更高。",
"坚持正确的原则和价值观是实现自己梦想的基石。不要做违背自己原则的事情,要有正确的道德观念和社会责任感。",
"任何的收获都不是巧合,而是每天的努力与坚持得来的。不怕你每天迈出一小步,只怕你停滞不前;不怕你每天做一点事,只怕你无所事事。",
"人生并非都是选择题,而是在做应用题,那要我们一点一滴的去论证,是取舍的过程,做错了也没关系。向前走,不必想太多,也不要害怕,相信梦想并坚持。",
"路是自己选的,所以即使以后会跌倒,会受伤,也都要学会自己承受,自己疗伤。我们都是这样,学会长大的。",
"今天的努力,是幸运的伏笔,当下的付出,是明日的花开,让我们怀揣希望去努力,静待美好的出现。",
"人生有一副最好的补药:早起的第一缕阳光、一个好习惯、一分诚实的劳动以及一份淡泊名利的平常心。",
"路是自己选的,所以即使以后会跌倒、会受伤,也都要学会自己承受、自己疗伤。我们都是这样,学会长大的。",
"人生如天气,可预料,但往往出乎意料。在自己的人生舞台上,我们不要做配角,要做自己生活的主角。",
"过去的是回忆,现在的是拼搏,未来的是梦想。表面的东西不必太过于在意,更不用去为了那些无关紧要的东西而彻夜无眠。",
"失败并不可怕,可怕的是你从未尝试过。不要害怕失败,勇敢地去尝试、去创新,才能拓展自己的视野和能力。",
"每个人都是独一无二的,要学会欣赏自己的优点和长处,自信地展现自己的魅力。不要过分比较,相信自己可以创造美好的未来。",
"生活不会给你一帆风顺的旅程,它会设置各种障碍和挑战来考验你。面对困难时,要坚定信念,相信自己能够克服一切。",
"没有哪条路是一帆风顺的,但坚持走下去就会看到曙光。只要努力奋斗,付出辛勤的汗水,成功就会向你招手。",
"不要害怕失败,因为每一次失败都是通向成功必经之路。只有勇敢地面对失败,才能汲取经验,不断成长和进步。",
"人生就像一场马拉松比赛,要想走得更远、更稳,必须学会坚持。只有持之以恒地努力,才能抵达目标并享受成功的喜悦。",
"每一个伟大的事物,都是由无数个小事物组成的。所以,试着去做那些小事情,然后你就会发现自己正在伟大。",
"无论遇到什么困难,都要坚信自己拥有无限的可能。只要不断努力,不放弃追求,就一定能够克服难关,实现自己的目标。",
"勇敢面对挑战,把每一次困难当作是成长的机会。即使在黑暗中,也要用内心的阳光照亮前行的道路。",
"不要害怕失败,因为失败并不可怕。可怕的是你从未尝试过就放弃。要学会从失败中汲取经验教训,继续前进,最终走向成功。",
"拥有积极的心态是非常重要的。无论情况多么糟糕,都要保持乐观和积极,相信自己能够改变现状。",
"要学会坚持和耐心。成功需要时间和努力,不要期待一蹴而就。只有不断地付出努力,才能收获成功的果实。",
"不要让他人的评价左右你的行动和决定。你要清楚自己的价值并且坚定地走自己的路。你的成功与快乐不需要建立在别人的认可上。",
"不管前方有多少荆棘,只要你心中有梦想,脚下有力量,就一定能够闯出一条属于自己的路。所以,不要害怕挑战,勇敢前行吧!"];
const randomChoice = Math.random(); // 生成一个 0 到 1 之间的随机数
if (randomChoice < 0.5) {
// 返回短句
const randomIndex = Math.floor(Math.random() * phrases.length);
return phrases[randomIndex];
} else {
// 返回 3 个随机词语,词语之间用逗号分隔
const randomWords = [];
while (randomWords.length < 3) {
const wordList = Math.random() < 0.5 ? words1 : words2;
const randomWord = wordList[Math.floor(Math.random() * wordList.length)];
if (!randomWords.includes(randomWord)) {
randomWords.push(randomWord);
}
}
return randomWords.join(", "); // 使用逗号连接词语
}
}
})();