/* ============================================================ SpiderBot v2.0.1 — abas e modais do painel ============================================================ */ const I = window.SBIcon; const { useState: useS } = React; /* ---------------- primitivos ---------------- */ const Btn = ({ ic, cls = '', children, onClick, title }) => ( ); 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 ---- */}
setModo({ app: true, mobile: false })}>Modo Aplicativo setModo({ app: false, mobile: true })}>Modo Mobile 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: {modo.app ? 'Modo Aplicativo' : 'Modo Mobile'}
{/* ---- 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.
); } /* ============================================================ 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)