ELEPHANT STL

ELEPHANT STL

$3.99
Precio de oferta  $3.99 Precio habitual 
Ir directamente a la información del producto
ELEPHANT STL

ELEPHANT STL

$3.99
Precio de oferta  $3.99 Precio habitual 

ELEPHANT STL 

 

 

——————————-

(function() {
// ═══════════════════════════════════════════════════════════════
// RUNWAY AUTO-GENERATE v6 - BALANCEADA
// 2 clicks por burst, pausa de 14-17 min entre bursts completos.
// Si un burst queda incompleto, re-evalua en 30s.
// Stop: window.__runwayStop() Status: window.__runwayStatus()
// ═══════════════════════════════════════════════════════════════

if (window.__runwayBotActive) {
console.warn('Bot ya activo. window.__runwayStop() primero.');
return;
}
window.__runwayBotActive = true;

// ─── Config v6 ────────────────────────────────────────────────
var MAX_ACTIVE_TASKS = 2;
var GAP_MIN_SEC = 7;
var GAP_MAX_SEC = 15;
var SAFETY_PAUSE_MIN = 14;
var SAFETY_PAUSE_MAX = 17;
var INCOMPLETE_BURST_RETRY_SEC = 30;
var THROTTLE_BACKOFF = 60;
var CHECK_INTERVAL_MS = 3000;
var ACTIVE_STATES = ['PENDING', 'RUNNING', 'THROTTLED'];

// ─── Estado interno ───────────────────────────────────────────
var taskStates = {};
var stopped = false;
var lastBurstEndTs = 0;
var lastBurstClicks = 0;
var nextBurstAfterTs = Date.now();
var throttleCount = 0;
var clicksSent = 0;
var burstsSent = 0;

function rand(a, b) { return Math.random() * (b - a) + a; }
function sleep(ms) { return new Promise(function(r){ setTimeout(r, ms); }); }
function ts() { return new Date().toLocaleTimeString('en-GB'); }
function log(msg) { console.log('%c[' + ts() + '] ' + msg, 'color:#4ade80;font-weight:bold'); }
function warn(msg) { console.warn('[' + ts() + '] ' + msg); }

window.__runwayStop = function() {
stopped = true;
window.__runwayBotActive = false;
warn('STOP solicitado.');
};

if (!window.__origFetchBot) {
window.__origFetchBot = window.fetch;
} else {
window.fetch = window.__origFetchBot;
}
window.fetch = async function() {
var args = arguments;
var url = typeof args[0] === 'string' ? args[0] : (args[0] && args[0].url);
var res = await window.__origFetchBot.apply(this, args);
var m = url && url.match(/\/v1\/tasks\/([0-9a-f-]{36})/);
if (m && res.ok) {
var uuid = m[1];
try {
var clone = res.clone();
var json = await clone.json();
var t = (json && json.task) ? json.task : json;
if (t && t.status) {
var prev = taskStates[uuid];
taskStates[uuid] = t.status;
if (prev !== t.status) {
log('Task ' + uuid.slice(0,8) + ': ' + (prev || '(new)') + ' -> ' + t.status);
if (t.status === 'THROTTLED') throttleCount++;
else if (t.status === 'SUCCEEDED' || t.status === 'RUNNING') throttleCount = 0;
}
}
} catch(e) {}
}
return res;
};

function countActive() {
var c = 0;
for (var k in taskStates) if (ACTIVE_STATES.indexOf(taskStates[k]) !== -1) c++;
return c;
}

function findGenerateButton() {
var btns = document.querySelectorAll('button[type="submit"]');
for (var i = 0; i < btns.length; i++) {
var b = btns[i];
if ((b.textContent || '').trim() === 'Generate' && b.offsetParent !== null) return b;
}
var all = document.querySelectorAll('button');
for (var i = 0; i < all.length; i++) {
var b = all[i];
if ((b.textContent || '').trim() === 'Generate' && b.offsetParent !== null) return b;
}
return null;
}

async function humanClick() {
var btn = findGenerateButton();
if (!btn) { warn('Boton Generate no encontrado.'); return false; }
if (btn.getAttribute('data-soft-disabled') === 'true' || btn.disabled) {
warn('Boton soft-disabled. Skip.');
return false;
}
var rect = btn.getBoundingClientRect();
var mx = rect.width * 0.20, my = rect.height * 0.25;
var x = rect.left + rand(mx, rect.width - mx);
var y = rect.top + rand(my, rect.height - my);
log('Click en (' + x.toFixed(1) + ', ' + y.toFixed(1) + ')');

var base = { bubbles:true, cancelable:true, composed:true, view:window,
clientX:x, clientY:y, screenX:x, screenY:y, button:0, buttons:1 };
var baseUp = Object.assign({}, base, { buttons:0 });

btn.dispatchEvent(new PointerEvent('pointermove', Object.assign({}, baseUp, { pointerType:'mouse', pointerId:1 })));
btn.dispatchEvent(new MouseEvent('mousemove', baseUp));
await sleep(rand(80, 180));
btn.dispatchEvent(new PointerEvent('pointerdown', Object.assign({}, base, { pointerType:'mouse', pointerId:1, isPrimary:true })));
btn.dispatchEvent(new MouseEvent('mousedown', base));
await sleep(rand(40, 110));
btn.dispatchEvent(new PointerEvent('pointerup', Object.assign({}, baseUp, { pointerType:'mouse', pointerId:1, isPrimary:true })));
btn.dispatchEvent(new MouseEvent('mouseup', baseUp));
btn.dispatchEvent(new MouseEvent('click', baseUp));

clicksSent++;
return true;
}

async function runBurst() {
burstsSent++;
log('===== BURST #' + burstsSent + ' =====');
var clicksThisBurst = 0;

while (!stopped && clicksThisBurst < MAX_ACTIVE_TASKS) {
if (countActive() >= MAX_ACTIVE_TASKS) {
log('Cola llena. Burst termina.');
break;
}
var ok = await humanClick();
if (ok) {
clicksThisBurst++;
log('Click ' + clicksThisBurst + '/' + MAX_ACTIVE_TASKS + ' enviado.');
} else break;

if (clicksThisBurst < MAX_ACTIVE_TASKS) {
var gap = rand(GAP_MIN_SEC, GAP_MAX_SEC);
log('Esperando ' + gap.toFixed(1) + 's...');
await sleep(gap * 1000);
if (countActive() >= MAX_ACTIVE_TASKS) {
log('Cola llena tras el gap. Burst termina con ' + clicksThisBurst + ' click(s).');
break;
}
}
}

lastBurstEndTs = Date.now();
lastBurstClicks = clicksThisBurst;
log('Burst #' + burstsSent + ' completado. Clicks: ' + clicksThisBurst);
}

function scheduleNextBurst() {
var pauseMs;
if (lastBurstClicks < MAX_ACTIVE_TASKS) {
pauseMs = INCOMPLETE_BURST_RETRY_SEC * 1000;
log('Burst incompleto. Re-evaluacion en ' + INCOMPLETE_BURST_RETRY_SEC + 's.');
} else {
pauseMs = rand(SAFETY_PAUSE_MIN, SAFETY_PAUSE_MAX) * 60 * 1000;
}
var throttleMs = throttleCount * THROTTLE_BACKOFF * 1000;
nextBurstAfterTs = lastBurstEndTs + pauseMs + throttleMs;
var nextDate = new Date(nextBurstAfterTs).toLocaleTimeString('en-GB');
log('Proximo intento: ' + nextDate +
' (' + (pauseMs / 60000).toFixed(1) + 'min' +
(throttleCount > 0 ? ' + ' + throttleCount + ' throttle-backoffs' : '') + ')');
}

async function mainLoop() {
log('Bot v6 BALANCEADA activo.');
while (!stopped) {
await sleep(CHECK_INTERVAL_MS);
if (Date.now() < nextBurstAfterTs) continue;
if (countActive() >= MAX_ACTIVE_TASKS) continue;
await runBurst();
scheduleNextBurst();
}
log('Bot v6 detenido. Bursts: ' + burstsSent + ', clicks: ' + clicksSent);
}

window.__runwayStatus = function() {
console.log('=== ESTADO BOT v6 BALANCEADA ===');
console.log('Bursts:', burstsSent, '| Clicks:', clicksSent);
console.log('Tasks activas:', countActive(), '/', MAX_ACTIVE_TASKS);
console.log('Ultimo burst:', lastBurstClicks, 'clicks');
console.log('Throttles acumulados:', throttleCount);
console.log('Estados:', taskStates);
var waitS = Math.max(0, (nextBurstAfterTs - Date.now()) / 1000);
console.log('Proximo en:', waitS.toFixed(0) + 's');
};

mainLoop();
})();

 

 

You may also like