如何补全代码实现可用JS自动点击器,绕过网站AFK检测并解决内存报错?
错误原因分析
- 递归调用逻辑错误:你在
ace函数里每5毫秒就再次触发ace执行,无限高频调用直接占满内存,触发SBOX_FATAL_MEMORY_EXCEEDED内存溢出报错 - 语法混淆:你混用了jQuery语法和原生JS语法,
:contains选择器、.ready()、.each()、.text()都是jQuery专属方法,原生JS不支持,执行直接报错 - 元素选择错误:「Evet」对应的是
<button>元素,你一直查询<a>标签,永远找不到目标元素
可用脚本方案
// ==UserScript== // @name 自动绕过AFK检测 // @namespace http://tampermonkey.net/ // @version 1.0 // @description 自动点击AFK弹窗的Evet按钮保持在线 // @match *://你要适配的网站地址/* // @author ace // @grant none // ==/UserScript== (function() { 'use strict'; // 每3秒检测一次,频率足够覆盖30秒倒计时,也不会占用过多资源 setInterval(() => { // 方案1:直接调用网站已有的取消AFK方法,最稳定 if (typeof hidePortalTimeOut === 'function' && PortalTimeOutStatus === 1) { hidePortalTimeOut(); return; } // 方案2:如果上面的方法失效,就模拟点击按钮 const evetBtn = document.querySelector('.modal-footer button.btn-success'); if (evetBtn && evetBtn.textContent.includes('Evet') && getComputedStyle(document.getElementById('musercontrol')).display !== 'none') { evetBtn.click(); } }, 3000); })();
使用说明
- 把
@match后面的*://你要适配的网站地址/*替换成你要使用脚本的网站实际地址即可 - 脚本每3秒检测一次AFK弹窗状态,检测到弹窗出现就自动触发确认操作,不会占用过多系统资源
- 双重方案兜底,优先调用网站原生逻辑,原生逻辑不可用的情况下自动降级为模拟点击按钮,兼容性更好
内容的提问来源于stack exchange,提问作者ACE is Firing
相关产品推荐
相关产品推荐

