/* global React, ReactDOM */ const { useState: uS, useEffect: uE, useRef: uRf } = React; const Ic = window.SBIcon; /* ---- CURSOR ---- */ const isTouch = () => window.matchMedia('(hover: none)').matches; function Cursor() { const ref = uRf(null); uE(() => { if (isTouch()) return; // desabilita em touch devices const el = ref.current; let mx = -100, my = -100; const move = e => { mx = e.clientX; my = e.clientY; el.style.left = mx + 'px'; el.style.top = my + 'px'; }; const down = e => { el.classList.add('clicking'); const r = document.createElement('div'); r.className = 'cursor-ripple'; r.style.left = e.clientX + 'px'; r.style.top = e.clientY + 'px'; document.body.appendChild(r); setTimeout(() => r.remove(), 600); }; const up = () => el.classList.remove('clicking'); const over = e => { if (e.target.closest('a,button')) el.classList.add('hovering'); }; const out = e => { if (e.target.closest('a,button')) el.classList.remove('hovering'); }; document.addEventListener('mousemove', move); document.addEventListener('mousedown', down); document.addEventListener('mouseup', up); document.addEventListener('mouseover', over); document.addEventListener('mouseout', out); return () => { document.removeEventListener('mousemove', move); document.removeEventListener('mousedown', down); document.removeEventListener('mouseup', up); document.removeEventListener('mouseover', over); document.removeEventListener('mouseout', out); }; }, []); if (isTouch()) return null; return
; } /* ---- SCROLL REVEAL ---- */ function observeReveal(io) { document.querySelectorAll('.reveal:not(.visible)').forEach(el => io.observe(el)); } function useReveal() { uE(() => { /* reveal geral */ const io = new IntersectionObserver(entries => { entries.forEach(e => { if (e.isIntersecting) { e.target.classList.add('visible'); io.unobserve(e.target); } }); }, { threshold: 0.12 }); observeReveal(io); // re-observa após 300ms para pegar qualquer elemento adicionado depois do mount const t = setTimeout(() => observeReveal(io), 300); /* linhas divisórias nas seções */ const secIo = new IntersectionObserver(entries => { entries.forEach(e => { if (e.isIntersecting) e.target.classList.add('visible'); }); }, { threshold: 0.1 }); document.querySelectorAll('.section').forEach(el => secIo.observe(el)); /* compare rows em cascata */ const rowIo = new IntersectionObserver(entries => { entries.forEach(e => { if (e.isIntersecting) { const rows = e.target.querySelectorAll('.compare-row'); rows.forEach((r, i) => setTimeout(() => r.classList.add('visible'), i * 80)); rowIo.unobserve(e.target); } }); }, { threshold: 0.1 }); document.querySelectorAll('.compare').forEach(el => rowIo.observe(el)); /* ∞ refaz ao voltar pro topo */ const heroIo = new IntersectionObserver(entries => { entries.forEach(e => { if (e.isIntersecting) { const counter = document.querySelector('.inf-counter'); if (counter) { counter.classList.remove('inf-done'); counter.style.filter = 'blur(3.5px)'; counter.textContent = '0'; } } }); }, { threshold: 0.5 }); const heroEl = document.querySelector('.hero'); if (heroEl) heroIo.observe(heroEl); return () => { clearTimeout(t); io.disconnect(); rowIo.disconnect(); heroIo.disconnect(); }; }, []); } /* ---------------- STARFIELD ---------------- */ function Starfield() { const ref = uRf(null); uE(() => { if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) return; const c = ref.current, ctx = c.getContext('2d'); let paused = false; const visObs = new IntersectionObserver(([e]) => { paused = !e.isIntersecting; }, { threshold: 0 }); visObs.observe(c); let raf, w, h, stars = [], shooting = [], t = 0, frameCount = 0; const dpr = Math.min(window.devicePixelRatio || 1, 2); function mkStar(cx, cy) { const a = Math.random() * Math.PI * 2; const r = Math.pow(Math.random(), 0.55) * Math.max(w, h) * 0.62; const x = cx + Math.cos(a) * r * (0.92 + Math.random() * 0.3); const y = cy + Math.sin(a) * r * 0.72; const d = Math.hypot(x - cx, y - cy) / (Math.max(w, h) * 0.6); const b = Math.max(0, 1 - d) * (0.4 + Math.random() * 0.6); /* drift: velocidade suave aleatória */ return { x, y, ox: x, oy: y, /* posição base */ s: (Math.random() * 1.3 + 0.2) * dpr, b, tw: Math.random() * 6.283, sp: 0.6 + Math.random() * 1.8, /* velocidade de piscar mais variada */ dx: (Math.random() - 0.5) * 0.08 * dpr, /* drift x */ dy: (Math.random() - 0.5) * 0.04 * dpr, /* drift y */ dr: Math.random() * 6.283, /* fase do drift */ dsp: 0.2 + Math.random() * 0.5, /* velocidade do drift */ }; } function build() { stars = []; const n = Math.floor((w * h) / (1700 * dpr * dpr)); const cx = w * 0.5, cy = h * 0.3; for (let i = 0; i < n; i++) stars.push(mkStar(cx, cy)); } function spawnShooting() { /* estrela cadente parte do topo-direita em diagonal */ const sx = w * (0.3 + Math.random() * 0.6); const sy = h * (Math.random() * 0.35); const angle = Math.PI * (0.18 + Math.random() * 0.14); /* ~30-40° */ shooting.push({ x: sx, y: sy, len: (80 + Math.random() * 140) * dpr, angle, life: 1, spd: (6 + Math.random() * 6) * dpr }); } function resize() { w = c.width = window.innerWidth * dpr; h = c.height = window.innerHeight * dpr; c.style.width = window.innerWidth + 'px'; c.style.height = window.innerHeight + 'px'; build(); } /* mouse */ let mx = -9999, my = -9999; const onMouse = e => { mx = e.clientX * dpr; my = e.clientY * dpr; }; window.addEventListener('mousemove', onMouse, { passive: true }); let nextShoot = 3; function draw() { if (paused) { raf = requestAnimationFrame(draw); return; } ctx.clearRect(0, 0, w, h); frameCount++; /* glow central */ const g = ctx.createRadialGradient(w * 0.5, h * 0.28, 0, w * 0.5, h * 0.28, h * 0.62); g.addColorStop(0, 'rgba(58,60,68,0.18)'); g.addColorStop(1, 'rgba(0,0,0,0)'); ctx.fillStyle = g; ctx.fillRect(0, 0, w, h); t += 0.022; /* ---- estrelas ---- */ for (const st of stars) { /* piscar: dupla frequência para efeito mais orgânico */ const tw = 0.45 + 0.35 * Math.sin(t * st.sp + st.tw) + 0.2 * Math.sin(t * st.sp * 2.3 + st.tw * 1.7); /* drift orbital suave */ let ox = st.ox + Math.sin(t * st.dsp + st.dr) * st.dx * 18; let oy = st.oy + Math.cos(t * st.dsp + st.dr) * st.dy * 14; /* repulsão do cursor */ const dist = Math.hypot(ox - mx, oy - my); const repel = 90 * dpr; if (dist < repel && dist > 0) { const force = (1 - dist / repel) * 22 * dpr; ox += (ox - mx) / dist * force; oy += (oy - my) / dist * force; } const alpha = Math.min(1, Math.max(0, st.b * tw)); /* tamanho pulsa levemente */ const sr = st.s * (0.85 + 0.15 * Math.sin(t * st.sp * 1.4 + st.tw)); ctx.globalAlpha = alpha; /* estrelas mais brilhantes ganham glow — calculado a cada 2 frames */ if (alpha > 0.7 && sr > 1.2 * dpr && frameCount % 2 === 0) { const grd = ctx.createRadialGradient(ox, oy, 0, ox, oy, sr * 3); grd.addColorStop(0, 'rgba(210,215,225,0.6)'); grd.addColorStop(1, 'rgba(210,215,225,0)'); ctx.fillStyle = grd; ctx.beginPath(); ctx.arc(ox, oy, sr * 3, 0, 6.283); ctx.fill(); } ctx.fillStyle = '#d4d8e2'; ctx.beginPath(); ctx.arc(ox, oy, sr, 0, 6.283); ctx.fill(); } /* ---- estrelas cadentes ---- */ nextShoot -= 0.022; if (nextShoot <= 0) { spawnShooting(); nextShoot = 4 + Math.random() * 8; } for (let i = shooting.length - 1; i >= 0; i--) { const sh = shooting[i]; sh.x += Math.cos(sh.angle) * sh.spd; sh.y += Math.sin(sh.angle) * sh.spd; sh.life -= 0.028; if (sh.life <= 0 || sh.x > w || sh.y > h) { shooting.splice(i, 1); continue; } const tx = sh.x - Math.cos(sh.angle) * sh.len; const ty = sh.y - Math.sin(sh.angle) * sh.len; const grad = ctx.createLinearGradient(tx, ty, sh.x, sh.y); grad.addColorStop(0, 'rgba(255,255,255,0)'); grad.addColorStop(1, `rgba(255,255,255,${sh.life * 0.85})`); ctx.globalAlpha = 1; ctx.strokeStyle = grad; ctx.lineWidth = 1.2 * dpr; ctx.beginPath(); ctx.moveTo(tx, ty); ctx.lineTo(sh.x, sh.y); ctx.stroke(); } ctx.globalAlpha = 1; raf = requestAnimationFrame(draw); } resize(); draw(); window.addEventListener('resize', resize); return () => { cancelAnimationFrame(raf); window.removeEventListener('resize', resize); window.removeEventListener('mousemove', onMouse); visObs.disconnect(); }; }, []); return ; } /* ---------------- NAV ---------------- */ function Nav({ onLogin, onSignup, onPanel, user }) { const [sc, setSc] = uS(false); const [active, setActive] = uS(''); const links = [ { href:'#como', label:'Como funciona' }, { href:'#recursos',label:'Recursos' }, { href:'#demo', label:'Painel ao vivo' }, { href:'#planos', label:'Planos' }, { href:'#faq', label:'FAQ' }, ]; uE(() => { const f = () => setSc(window.scrollY > 24); window.addEventListener('scroll', f); f(); return () => window.removeEventListener('scroll', f); }, []); uE(() => { const ids = links.map(l => l.href.slice(1)); const ios = ids.map(id => { const el = document.getElementById(id); if (!el) return null; const io = new IntersectionObserver( ([e]) => { if (e.isIntersecting) setActive('#'+id); }, { rootMargin:'-40% 0px -50% 0px' } ); io.observe(el); return io; }); return () => ios.forEach(io => io && io.disconnect()); }, []); return ( ); } /* ---------------- 777 COUNTER ---------------- */ function Counter777() { const [val, setVal] = uS(0); const runAnim = () => { setVal(0); let n = 0; function tick() { n++; const progress = n / 60; const eased = Math.pow(progress, 2); setVal(Math.round(eased * 777)); if (n >= 60) { setVal(777); return; } setTimeout(tick, 20 + progress * 40); } setTimeout(tick, 600); }; uE(() => { runAnim(); }, []); uE(() => { const hero = document.querySelector('.hero'); if (!hero) return; const io = new IntersectionObserver(([e]) => { if (e.isIntersecting) runAnim(); }, { threshold: 0.5 }); io.observe(hero); return () => io.disconnect(); }, []); return +{val}; } /* ---------------- INFINITY COUNTER ---------------- */ function InfinityCounter() { const [val, setVal] = uS(0); const [done, setDone] = uS(false); const runAnim = () => { setDone(false); setVal(0); let n = 0; function tick() { n++; const progress = n / 100; const eased = Math.pow(progress, 2.5); setVal(Math.round(eased * 100)); if (n >= 100) { setDone(true); return; } setTimeout(tick, 60 - progress * 52); } setTimeout(tick, 400); }; uE(() => { runAnim(); }, []); uE(() => { const hero = document.querySelector('.hero'); if (!hero) return; const io = new IntersectionObserver(([e]) => { if (e.isIntersecting) runAnim(); }, { threshold: 0.5 }); io.observe(hero); return () => io.disconnect(); }, []); return ( {done ? '∞' : val} ); } /* ---------------- HERO PANEL ---------------- */ function HeroPanel() { const [wins, setWins] = uS(Array.from({length:12},()=>0)); const [phase, setPhase] = uS(0); const [profit, setProfit] = uS(0); const [log, setLog] = uS({icon:'·', label:'Aguardando...', detail:'', color:'#52545a'}); const [logVis, setLogVis] = uS(true); const [cycleNum, setCycleNum] = uS(1); const [elapsed, setElapsed] = uS(0); const [flashWin, setFlashWin] = uS(-1); const [hovWin, setHovWin] = uS(-1); const pixValues = [47,23,61,31,54,19,42,38,27,65,33,50]; // stats por janela: [ciclos, sacado] const winStats = React.useRef(Array.from({length:12},()=>({ciclos:0,sacado:0,perfil:0}))); const flashTimer = React.useRef(null); const showLog = (entry) => { setLogVis(false); setTimeout(() => { setLog(entry); setLogVis(true); }, 260); }; const delay = ms => new Promise(r => setTimeout(r, ms)); // timer uE(() => { const t = setInterval(() => setElapsed(e => e+1), 1000); return () => clearInterval(t); }, []); const fmt = s => `${String(Math.floor(s/60)).padStart(2,'0')}:${String(s%60).padStart(2,'0')}`; uE(() => { let alive = true; async function cycle(cn) { setWins(Array.from({length:12},()=>0)); setPhase(0); setProfit(0); setElapsed(0); showLog({icon:'·', label:'Iniciando...', detail:'', color:'#52545a'}); await delay(600); setPhase(1); for (let i = 0; i < 12; i++) { if (!alive) return; await delay(550); winStats.current[i].perfil = cn*12 + i + 1; setWins(prev => { const n=[...prev]; n[i]=1; return n; }); showLog({icon:'↻', label:`Perfil #${String(cn*12+i+1).padStart(2,'0')}`, detail:'abrindo navegador...', color:'#94a3b8'}); } await delay(700); setPhase(2); setWins(Array.from({length:12},()=>2)); showLog({icon:'⚡', label:'Acelerador ativo', detail:'+2.3× velocidade', color:'#facc15'}); await delay(7400); if (!alive) return; setPhase(3); setWins(Array.from({length:12},()=>3)); let total = 0; for (let i = 0; i < pixValues.length; i++) { if (!alive) return; await delay(650); total += pixValues[i]; setProfit(total); // flash numa janela aleatória let wi = Math.floor(Math.random()*12); const curFlash = flashWin; while (wi === curFlash) wi = Math.floor(Math.random()*12); winStats.current[wi].sacado += pixValues[i]; winStats.current[wi].ciclos += 1; if (flashTimer.current) clearTimeout(flashTimer.current); setFlashWin(wi); flashTimer.current = setTimeout(() => setFlashWin(-1), 500); showLog({icon:'✓', label:'PIX sacado', detail:`R$ ${pixValues[i]},00`, color:'#4ade80'}); } await delay(2500); if (alive) { setCycleNum(c=>c+1); cycle(cn+1); } } winStats.current = Array.from({length:12},()=>({ciclos:0,sacado:0,perfil:0})); cycle(0); return () => { alive = false; }; }, []); const winClass = (s, i) => { let c = s===1?' on': s===2?' on accel': s===3?' on done': ''; if (flashWin===i) c += ' flash'; return c; }; return (
}
Enquanto você cadastra uma conta por vez, o SpiderBot abre dezenas de
navegadores indetectáveis em paralelo, cria contas, abre o jogo de sua escolha, acelera e ainda saca no seu pix.
Tudo no automático, você apenas precisa clicar em começar.
{d}
{d}
Com 5 contas/hora na mão versus 40 com o SpiderBot e R$5 de lucro por conta. A diferença é absurda.
Navegue pelas abas, monte a grade de telas e aperte ▶ Play pra ver o bot provisionar as contas em tempo real.
Do acesso semanal ao vitalício. Todos com liberação imediata.
{p.desc}
Teste sem medo. Se o SpiderBot não escalar a sua operação como prometido, é só chamar no suporte que devolvemos cada centavo.
"{q}"
{a}
Ganhe {DISCOUNT} de desconto na sua compra.
Configure uma vez e deixe o SpiderBot fazer o resto. Tempo é dinheiro.
Escolher meu planoEnviado para {pending.email}
Verifique seu e-mail e insira o código de 6 dígitos para confirmar o cadastro.
Senha redefinida com sucesso!
Escaneie o QR Code ou copie o código PIX
{pixCode ?O acesso é liberado automaticamente após o PIX ser processado
Seu plano {plan.name} está ativo.
{errMsg}