/* ============================================================ SpiderBot v2.0.1 — abas e modais do painel ============================================================ */ const I = window.SBIcon; const MODES = window.SBModes; const { useState: useS } = React; /* ---------------- primitivos ---------------- */ const Btn = ({ ic, cls = '', children, onClick, title, style }) => ( ); const Ck = ({ on, onClick, children, q, hi }) => ( ); const Sw = ({ on }) => ; const SwRow = ({ ic, on, onClick, children }) => ( ); const NumStep = ({ value, onChange, min = 1, max = 6 }) => { const set = v => onChange(Math.max(min, Math.min(max, v))); return (
set(parseInt(e.target.value, 10) || min)}/>
); }; const Sel = ({ value, onChange, opts, style }) => ( ); const Card = ({ title, right, children, style, bodyStyle }) => (
{right ?

{title}

{right}
:

{title}

}
{children}
); const Table = ({ cols, head, children }) => (
{head.map((h, i) =>
{h}
)}
{children}
); const Tr = ({ cols, children }) =>
{children}
; const Td = ({ l, cls = '', children }) => (
{l ? {l} : null}{children}
); const EmptyRow = ({ children, red }) => (
{children}
); /* QR falso, determinístico */ function FakeQR() { const n = 21, cells = []; let seed = 7; const r = () => { seed = (seed * 1103515245 + 12345) & 0x7fffffff; return seed / 0x7fffffff; }; for (let y = 0; y < n; y++) for (let x = 0; x < n; x++) { const fx = x < 7 ? x : (x >= n - 7 ? x - (n - 7) : -1); const fy = y < 7 ? y : (y >= n - 7 ? y - (n - 7) : -1); const finder = (x < 7 && y < 7) || (x >= n - 7 && y < 7) || (x < 7 && y >= n - 7); const v = r(); const on = finder ? (fx === 0 || fx === 6 || fy === 0 || fy === 6 || (fx >= 2 && fx <= 4 && fy >= 2 && fy <= 4)) : v > 0.55; if (on) cells.push(); } return {cells}; } /* feed de log reaproveitado */ const LogFeed = ({ logs, empty }) => (
{logs.length === 0 ? {empty || 'Sem registros.'} : logs.map(l => (
[{l.ts}] {l.msg}
))}
); /* ============================================================ INÍCIO ============================================================ */ function Inicio(p) { const { modo, setModo, oculta, setOculta, delay, setDelay, delayLink, setDelayLink, qtd, setQtd, dep, setDep, func, setFunc, link, setLink, logs, setLogs, running, togglePlay, qr } = p; const tg = k => setFunc(f => Object.assign({}, f, { [k]: !f[k] })); const setDepAt = (i, v) => setDep(d => { const n = d.slice(); n[i] = v; return n; }); return (

Início

Configurações de navegação, funcionalidades e log do sistema.
{/* ---- coluna 1 ---- */}
{MODES.map(m => ( setModo(m.key)}>{m.label} ))} Senhas
Delay (segundos): setDelay(e.target.value)}/>
setDelayLink(v => !v)}>Delay por Link
Quantidade de contas:
{qtd}
Valores para depósito:
setDepAt(0, e.target.value)}/> setDepAt(1, e.target.value)}/>
{oculta ? 'ATIVADO' : 'DESATIVADO'}
{/* ---- coluna 2 ---- */}
tg('proxy')}> Proxy {func.proxy ? 'On' : 'Off'} tg('captcha')}>Resolver captcha tg('ads')}>Sem anúncios tg('retrato')}>Modo retrato tg('guia')}>Bloquear 2ª guia tg('escada')}>Escadinha
QR de Depósito
{qr ? R$ {dep[0]},00 · aguardando : 'Nenhum QR capturado ainda'}
{/* ---- coluna 3 ---- */}
Login: spiderbot Acesso: Vitalício
Log de Operações: Abrir DIAG setLogs([])}>Clear
Emulação: {(MODES.find(m => m.key === modo) || MODES[0]).label}
{/* ---- barra inferior ---- */}
Link: setLink(e.target.value)}/>
Múltiplos Links Atualizações Token
); } /* ============================================================ CHAVES PIX ============================================================ */ function Pix(p) { const { pixKeys, setPixKeys, setModal } = p; return (

Chaves PIX

{pixKeys.length} chave(s) cadastrada(s)

Importar setModal('pix')}>Nova chave
{pixKeys.length === 0 ? Nenhuma chave cadastrada. : pixKeys.map(k => (
))}
{k.tipo} {k.chave} ✓ válida
); } /* ============================================================ CONTAS ============================================================ */ const C_COLS = '22px 1.25fr 1fr 1fr .8fr .9fr 1fr .8fr'; function Contas(p) { const { contas, setContas } = p; const [sel, setSel] = useS({}); const [q, setQ] = useS(''); const nSel = Object.values(sel).filter(Boolean).length; const list = contas.filter(c => !q || (c.login + ' ' + c.casa + ' ' + c.conta).toLowerCase().includes(q.toLowerCase())); const all = list.length > 0 && list.every(c => sel[c.id]); return (

Contas

{contas.length} registro(s) · {nSel} selecionada(s) — armazenamento local criptografado (contas.json)

Backup Abrir Selecionadas { setContas(c => c.filter(x => !sel[x.id])); setSel({}); }}>Excluir Selecionadas { setContas([]); setSel({}); }}>Excluir Tudo
setQ(e.target.value)}/>
{ const n = {}; if (!all) list.forEach(c => n[c.id] = true); setSel(n); }}> , 'Data/Hora', 'Casa', 'Login', 'Senha', 'Senha de saque', 'ID da conta', 'Saldo']}> {list.length === 0 ? Nenhuma conta cadastrada ainda. As contas criadas pelo bot aparecerão aqui automaticamente. : list.map(c => (
))}
{c.data} {c.casa} {c.login} {c.senha} {c.saque} {c.conta} {c.saldo}
Página 1 de 1 · Mostrando {list.length} de {contas.length}
Voltar Próxima
); } /* ============================================================ PROXY ============================================================ */ const P_COLS = '34px 1.5fr .8fr 1.6fr .9fr .5fr 68px'; function Proxy(p) { const { proxies, setProxies, setModal } = p; const ativos = proxies.filter(x => x.on).length; return (

Proxies

{proxies.length} proxy(ies) cadastrado(s) · {ativos} ativo(s)

Importar lista Spider Proxy setModal('proxy')}>Novo proxy
{proxies.length === 0 ? Nenhum proxy cadastrado. : proxies.map(x => (
))}
{x.label} {x.proto} {x.addr} {x.auth ? '✓ autenticado' : '—'} {x.pais}
); } /* ============================================================ TELAS ============================================================ */ function Telas(p) { const { grid, setGrid, lit, monAtivo, setMonAtivo, reduzir, setReduzir, render, setRender } = p; const total = grid.x * grid.y; const setG = (k, v) => setGrid(g => Object.assign({}, g, { [k]: v })); return (
Renderização:
CALIBRADOR: 1920x1080 [GRADE]
Perfil de tela:
{Array.from({ length: total }, (_, i) => (
{i + 1} {i + 1}
))}
Monitor: Detectar (1 detectado) setMonAtivo(v => !v)}>Ativo Grade: setG('y', v)}/> × setG('x', v)}/> = {total} telas
setReduzir(v => !v)}>Reduzir Janelas Salvar Posições Personalizadas
Ao clicar no botão Play, o app abrirá {total} janela(s) — uma para cada célula da grade — no Monitor 1 (Principal): 1920x1080.
); } /* ============================================================ API ============================================================ */ const API_JOGOS = [ 'Cachorro Sortudo (PP) — API RÁPIDA', 'CAMPO MINADO (FC) — API RÁPIDA', 'Coco (WG) — API RÁPIDA', 'Code of Cairo (PP) — API RÁPIDA', 'DJ Neko (PP) — API RÁPIDA', 'Dragon Hatch (WG) — API RÁPIDA', 'Dragon Tiger Luck (PG) — API PADRÃO', 'Dragon vs Tiger (WG) — API RÁPIDA', "Dragon's Treasure (WG) — API RÁPIDA", "Dragon's Treasure2 (WG) — API RÁPIDA", 'Elemental Gems (PP) — API RÁPIDA', 'Emotiwins (PP) — API RÁPIDA', "Emperor's Favour (PG) — API RÁPIDA", 'ESCALADA DA TORRE (FC) — API RÁPIDA', 'Fenix Sortuda (PP) — API RÁPIDA', 'Fortune Dragon (PG) — API PADRÃO', 'Fortune Gems (WG) — API RÁPIDA', 'Fortune Horse (PG) — API PADRÃO', 'Fortune Horse (WG) — API RÁPIDA', 'Fortune Mouse (PG) — API PADRÃO', 'Fortune Ox (PG) — API PADRÃO', 'Fortune Ox (WG) — API RÁPIDA', 'Fortune Rabbit (PG) — API PADRÃO', 'Fortune Rabbit (WG) — API RÁPIDA', 'Fortune Rabbit 2 (WG) — API RÁPIDA', 'Fortune Snake (PG) — API PADRÃO', 'Fortune Snake (WG) — API RÁPIDA', 'Fortune Tiger (PG) — API PADRÃO', 'Fortune Tiger (WG) — API RÁPIDA', 'Gem Saviour (PG) — API RÁPIDA', 'Gold Train (PP) — API RÁPIDA', 'Gummy Strike (PP) — API RÁPIDA', 'Hip Hop Panda (PG) — API PADRÃO', 'Jelly Candy (PP) — API RÁPIDA', "Joker's Jewels (PP) — API RÁPIDA", 'Leopard of Gold (WG) — API RÁPIDA', 'Lucky Dog (WG) — API RÁPIDA', 'Lucky Neko (PG) — API PADRÃO', 'Lucky Panda (PP) — API RÁPIDA', 'Macaco Sortudo (PP) — API RÁPIDA', 'Mahjong Ways (PG) — API PADRÃO', 'Mahjong Ways 2 (PG) — API PADRÃO', 'Mahjong Ways2 (WG) — API RÁPIDA', "Master Chen's Fortune (PP) — API RÁPIDA", 'MINES (JDB) — API RÁPIDA', 'Monkey Madness (PP) — API RÁPIDA', 'Mr Hallow (PG) — API RÁPIDA', 'Piggy Gold (PG) — API PADRÃO', 'Plushie Frenzy (PG) — API RÁPIDA', 'Plusie Wins (PP) — API RÁPIDA', 'RAPID 777 (TADA) — API RÁPIDA', 'Samba Dance (WG) — API RÁPIDA', "Santa's Gift Rush (PG) — API RÁPIDA", 'Super Ace (WG) — API RÁPIDA', 'Super Tiki Strike (PP) — API RÁPIDA', 'Tigre Sortudo (PP) — API RÁPIDA', 'Touro Sortudo (PP) — API RÁPIDA', 'Treasure Tower (PP) — API RÁPIDA', 'Treasures of Aztec (PG) — API PADRÃO', 'Treasures of Aztec (WG) — API RÁPIDA', 'Triple Dragon (PP) — API RÁPIDA', 'Triple Tiger (PP) — API RÁPIDA', 'TWIN WINS (TADA) — API RÁPIDA', 'Wild Ape (PG) — API PADRÃO', 'Wild Bandito (PG) — API PADRÃO', ]; const API_VALORES_BET = ['R$ 0,10','R$ 0,20','R$ 0,30','R$ 0,40','R$ 0,50','R$ 0,60','R$ 0,70','R$ 0,80','R$ 0,90','R$ 1,00']; function Api(p) { const { contas, proxies, logs, setLogs, running, togglePlay, dep, setQr } = p; const [sel, setSel] = useS({}); const [provedora, setProvedora] = useS('Todas'); const [tipo, setTipo] = useS('Todos'); const [jogo, setJogo] = useS(API_JOGOS[0]); const [valorBet, setValorBet] = useS('R$ 0,10'); const [giros, setGiros] = useS('350'); const [proxyOn, setProxyOn] = useS(false); const [proxySel, setProxySel] = useS('selecione...'); const [chavePix, setChavePix] = useS('Telefone'); const [valorDep, setValorDep] = useS(dep?.[0] || '10'); const nSel = Object.values(sel).filter(Boolean).length; const all = contas.length > 0 && contas.every(c => sel[c.id]); const toggleAll = () => { const n = {}; if (!all) contas.forEach(c => n[c.id] = true); setSel(n); }; const pushLog = (k, msg) => setLogs(v => [...v, { k, msg, ts: new Date().toLocaleTimeString('pt-BR', { hour12: false }), id: Math.random() }].slice(-60)); const handleIniciar = () => { if (running) { togglePlay(); return; } if (nSel === 0) { pushLog('wr', 'Por favor selecione as contas na coluna Contas para executar'); return; } pushLog('nf', 'Auto Slot iniciado via API — ' + jogo + ' · bet ' + valorBet + ' · ' + giros + ' giros.'); togglePlay(); }; const handleDepositar = () => { setQr && setQr(true); pushLog('ok', 'QR de depósito gerado via API · R$ ' + valorDep + ',00'); }; return (

API

Operação automatizada direto pela API das casas — sem abrir uma tela sequer.
{/* ---- coluna 1: contas ---- */}
{nSel}/{contas.length}}>
Voltar 1/1 Avançar
Selecionar Todas Abrir Selecionadas {contas.length === 0 ?
nenhuma conta
:
{contas.map(c => ( setSel(s => Object.assign({}, s, { [c.id]: !s[c.id] }))}> {c.login}  · {c.casa} ))}
} Página inicial
{/* ---- coluna 2: auto slot ---- */}
Provedora
Tipo
Jogo
Valor da bet
Giros setGiros(e.target.value)}/>
Execução
x.label))} style={{ flex: 1 }}/> setProxyOn(v => !v)}> Proxy {proxyOn ? 'on' : 'off'}
Speedhack auto aplicado via API
pushLog('nf', 'Nenhuma aposta válida encontrada nas últimas 24h.')}>Apostas Válidas pushLog('ok', 'Saldo consultado via API.')}>Saldo pushLog('ok', 'Bônus coletado via API.')}>Coletar Bônus pushLog('ok', 'Chave PIX (' + chavePix + ') cadastrada com sucesso.')}>Cadastrar PIX pushLog('wr', 'Saque solicitado via API — aguardando confirmação.')}>Sacar
Tipo da chave PIX
Valor do depósito (R$)
setValorDep(e.target.value)}/> Depositar
{/* ---- coluna 3: log ---- */}
setLogs([])}>limpar}>
); } /* ============================================================ OPERAÇÃO ============================================================ */ const SLOTS = ['Emperor', 'Santa', 'Halloween', 'Fortune Ox', 'Lucky Dog', 'Plushie Wins']; function Operacao(p) { const { logs, setLogs, speed, setSpeed, tools, setTools, slots, setSlots, mesmasChaves, setMesmasChaves, dep } = p; const tg = k => setTools(t => Object.assign({}, t, { [k]: !t[k] })); const tgSlot = k => setSlots(s => Object.assign({}, s, { [k]: !s[k] })); return (
Abrir setLogs([])}>Clear } style={{ minHeight: 150 }}>
Página Inicial Relatório de Apostas Página de Baús Atualizar Página Preencher Dados Coletar Missões Página Promoções Cadastrar SMS
Depositar
Cadastrar Chaves PIX setMesmasChaves(v => !v)}>Mesmas chaves para links diferentes Sacar
Slot para buscar:
Buscar
Janelas para controlar:
{/* ---- ferramentas ---- */}
tg('espelho')}>[F2] Modo Espelho tg('dados')}>[F3] Exibir Dados tg('ext')}>Extensão Extensão Bloqueios
✦ Speed Hack ✦
{['1x', '2x', '4x', '8x', '12x'].map(s => ( ))}
AUTO SLOT [F8] Desativar Proxy
{SLOTS.map(s => tgSlot(s)}>{s})}
Configurar IR
); } /* ============================================================ MERCADO PAGO ============================================================ */ function MercadoPago(p) { const { mp, setMp, setModal } = p; const [prov, setProv] = useS(false); return (

Mercado Pago

{mp.length} conta(s) cadastrada(s) · até 5 visíveis sem rolar

setModal('mp')}>Nova conta
{mp.length === 0 ?
Nenhuma conta cadastrada. Cada conta é um login real no Mercado Pago — abra pra logar (uma vez, na mão) e depois use "Importar" pra trazer as chaves PIX dessa conta pra aba Chaves PIX, ou "Deletar Chaves" pra excluir no site de verdade.
: {mp.map(a => (
))}
{a.nome} aguardando login
}
setProv(v => !v)} style={{ cursor: 'pointer' }}> Spider SMS
); } /* ============================================================ MODAIS ============================================================ */ function SBModals(p) { const { modal, setModal, setPixKeys, setProxies, setMp } = p; const [tipo, setTipo] = useS('CPF'); const [txt, setTxt] = useS(''); const [addr, setAddr] = useS(''); const [nome, setNome] = useS(''); const close = () => { setModal(null); setTxt(''); setAddr(''); setNome(''); }; const linhas = txt.split('\n').map(s => s.trim()).filter(Boolean); const Head = ({ ic, children }) => (
{ic ? : null}{children}
); let body = null; if (modal === 'pix') body = ( Nova chave PIX
Tipo:
Chaves (uma por linha)