【梅克军团】免操作避税神器,合理避税不求人!油猴批量血液献祭脚本2.0再升级!
本帖最后由 源子 于 2024-11-6 12:21 编辑前情提要:血液批量献祭油猴脚本——合理避税,从我做起
避税的原理不再过多赘述,之前的脚本只是随手写的,有种力大砖飞的美感,也就可能随机吞掉你几次兑换量罢了。另外操作界面还是太复杂了,还要看使用说明才知道怎么用,这样不好不好。@Name
本次脚本主要有以下几项改动:
1、本次的2.0版本不再采用模拟点击的方式,直接在后端提交请求,实现了数量更精准的献祭。
2、兑换界面与泥潭原页面基本一致,仅将兑换按钮的文本修改成了“批量兑换”,方便区分脚本是否成功运行。
3、新增了提示文本,方便直观比较税前税后价。
已知BUG:因为浮点计算的问题,泥潭的计算公式在计算某些数值时会出现误差。例如兑换100旅程,实际应该消耗3500血液,但是泥潭的计算公式错误地计算成了3449。虽然无伤大雅,但是如果管理看到这里的话可以考虑修改一下计算公式,先将税率0.15放大100倍,计算完成后再截位,规避浮点计算,就不会出现这种问题。不过这跟咱的脚本没啥关系,咱们逃税只需要3400。
使用说明:最好的使用说明就是没有使用说明!看看这个界面,还需要我说明什么吗!只管放心大胆地填,逃税的事就交给脚本去执行!
万一被抓,逃税是脚本做的,关我周树人什么事?
PS:楼主的血液量较少,测试量不足,如果使用过程发现有什么BUG,不妨给楼主点个免费的评分补点血,才能更好地修BUG,这不是骗赞,真的不是骗赞!
逃税完成展示:
用了chatGPT重构了变量名并添加注释,方便有志之士复用,不得不说chatGPT在这方面真挺方便的,让我打那么老长一段变量名那可真是会要老命的
// ==UserScript==
// @name 批量血液献祭2.0
// @namespace http://tampermonkey.net/
// @version 2.0
// @description替换原网页功能,批量血液献祭
// @match https://www.gamemale.com/home.php?mod=spacecp&ac=credit&op=exchange
// @author 源子
// ==/UserScript==
(function() {
'use strict';
function showInfo(message) {
console.log(message); // 输出到控制台
showError(message); // 在前端显示消息
}
// 获取表单元素
const form = document.querySelector('#exchangeform'); // 兑换表单
const submitButton = document.querySelector('#exchangesubmit_btn'); // 提交按钮
const exchangeAmountInput = document.querySelector('#exchangeamount'); // 兑换数量输入框
const toCreditsSelect = document.querySelector('#tocredits'); // 目标积分选择框
const taxPercentDisplay = document.querySelector('#taxpercent'); // 显示原价、含税价和现价的区域
const exchangedesamountInput = document.querySelector('#exchangedesamount'); // 现价显示框
const TAX_RATE = 0.15; // 税率为 15%
// 禁用网页自带的 exchangecalcredit 计算逻辑
exchangeAmountInput.removeAttribute('onkeyup');
toCreditsSelect.removeAttribute('onchange');
// 设置提交按钮文本为“批量兑换”
if (submitButton) {
const buttonText = submitButton.querySelector('em');
if (buttonText) {
buttonText.textContent = "批量兑换";
}
}
// 更新显示原价、含税价和现价的函数
function updatePriceDisplay() {
const exchangeAmount = parseInt(exchangeAmountInput.value) || 1;
const selectedOption = toCreditsSelect.options;
const ratio = parseFloat(selectedOption.getAttribute('ratio'));
const originalPrice = exchangeAmount * ratio; // 原价
const taxIncludedUnitPrice = Math.floor(ratio * (1 + TAX_RATE)); // 含税单价取整
const finalPrice = Math.floor(originalPrice * (1 + TAX_RATE)); // 含税总价
const roundedTotalPrice = taxIncludedUnitPrice * exchangeAmount; // 现价:含税单价的整数部分乘数量
// 更新税率显示区域,显示原价、 泥潭含税价和逃税价
taxPercentDisplay.textContent = `原价: ${originalPrice}, 泥潭含税价: ${finalPrice}, 逃税价: ${roundedTotalPrice}`;
exchangedesamountInput.value = roundedTotalPrice;
}
// 添加监听器以在输入和选择变化时更新价格显示
exchangeAmountInput.addEventListener('input', updatePriceDisplay);
toCreditsSelect.addEventListener('change', updatePriceDisplay);
// 替换提交按钮行为
function replaceSubmitButton() {
if (submitButton) {
submitButton.onclick = (event) => {
event.preventDefault(); // 阻止默认提交
submitFormMultipleTimes(); // 调用自定义的提交函数
};
showInfo("兑换功能已升级为批量兑换");
} else {
console.warn("未找到提交按钮,检查选择器是否正确");
}
}
// 多次提交
async function submitFormMultipleTimes() {
const repeatCount = parseInt(exchangeAmountInput.value) || 1;
const actionUrl = form.action;
const headers = {
"User-Agent": "Mozilla/5.0",
"Cookie": document.cookie
};
const exchangeAmount = parseInt(exchangeAmountInput.value) || 1;
const totalExchangeAmount = exchangeAmount * repeatCount; // 总兑换量
let successCount = 0; // 初始化成功次数计数器
for (let i = 0; i < repeatCount; i++) {
try {
const formData = new FormData(form);
formData.set('exchangeamount', 1); // 每次提交的 exchangeamount 值设为 1
const response = await fetch(actionUrl, {
method: 'POST',
headers: headers,
body: formData,
});
if (!response.ok) {
console.error(`兑换失败:第${i + 1}次`);
} else {
successCount++; // 增加成功计数
showInfo(`兑换成功:第${i + 1}次`);
}
} catch (error) {
console.error(`兑换错误:第${i + 1}次`, error);
}
}
// 延时 1 秒提示兑换总量、成功次数并刷新页面
setTimeout(() => {
alert(`兑换完成!成功次数/兑换量:${successCount}/${repeatCount},获得${toCreditsSelect.options.getAttribute('title')}:${successCount},消耗血液:${exchangedesamountInput.value}`);
location.reload();
}, 1000); // 延时 1 秒
}
// 初始化替换按钮
replaceSubmitButton();
// 初始化价格显示
updatePriceDisplay();
})();
最后附上一个乞讨用的附件,走过路过不要错过~
批量血液献祭这个功能感觉很适合萌新惹{:6_169:} 谢谢 血液去哪里领.JPG
避税能省出好几个积分的血液来惹 反正我一直保持着能省一点是一点的原则,这属于是锦上添花了 狠狠泥潭的薅羊毛哇~ 很好用,一点一点旅程兑换起来确实更划算……首先我得有那么多血液ヘ(;´Д`ヘ)所以我选择靠勋章回帖加旅程 对于我这种农场主来说,血液随便消耗了QAQ 很不错东西惹,节约下很多的税收浪费 这样兑换就简洁了,初版兑换时不小心输错过,还好血液多,无伤大雅。 我一直都是手动一个个点的XD 现在基本上已经没有血液献祭的需求了,最多偶尔换一个灵魂 献祭类脚本我用的比较少需求也不大 都是手动点的… 我为了避税都是一个个自己手打的 谢谢大佬,比上一个版本更加简化了呢<(_ _)> 惹,很棒的功能更新惹,前天批量换100咒术等了好久才换完~ 很好的功能 让我的血液飞速下降:lol 對新人友好,老鹹魚已經用不上了.
https://img.gamemale.com/album/202408/03/102140l525dr2fcjnwqdf6.gif.thumb.jpg 谢谢大佬,这个还蛮有用的,偷睡去了{:4_86:} 好一个100倍无伤大雅哈哈哈 合理避税从此刻开始(*ˉ︶ˉ*)