Help
RSS
API
Feed
Maltego
Contact
Domain > lotofacil.info
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2019-02-26
209.85.234.128
(
ClassC
)
2019-02-26
74.125.201.128
(
ClassC
)
2019-04-27
108.177.111.128
(
ClassC
)
2026-03-03
177.70.6.179
(
ClassC
)
Port 80
HTTP/1.1 200 OKConnection: Keep-AliveKeep-Alive: timeout5, max100Content-Type: text/htmlLast-Modified: Mon, 23 Feb 2026 15:31:13 GMTAccept-Ranges: bytesContent-Length: 24187Date: Tue, 03 Mar 2026 13:15:23 GMTServer: LiteSpeed !DOCTYPE html>html langpt-br>head> meta charsetUTF-8 /> meta nameviewport contentwidthdevice-width, initial-scale1.0 /> title>Resultado Lotofácil – Conferidor e Gerador de Números/title> meta namedescription contentConfira o resultado da Lotofácil em tempo real. Site ultra-rápido com conferidor de jogos, gerador de surpresinha e estatísticas. /> !-- Favicon --> link relicon typeimage/png href./imgs/favicon.png sizes32x32> link relapple-touch-icon href./imgs/favicon.png> !-- Fonte premium --> link relpreconnect hrefhttps://fonts.googleapis.com> link relpreconnect hrefhttps://fonts.gstatic.com crossorigin> link hrefhttps://fonts.googleapis.com/css2?familyInter:wght@400;600;700;800&displayswap relstylesheet> style> :root{ /* Base clara premium */ --bg-0:#f7f6fb; --bg-1:#f1eef9; --ink:#0b1220; --muted:#5b667a; --card: rgba(255,255,255,.74); --card-2: rgba(255,255,255,.94); --stroke: rgba(17,24,39,.10); /* Paleta Lotofácil (roxo/magenta) */ --lf-1:#7a1fa2; /* roxo */ --lf-2:#a019c7; /* roxo vivo */ --lf-3:#d4148e; /* magenta */ --lf-4:#ff2ea6; /* pink */ --gold:#b7791f; --win:#138a4b; --warn:#b7791f; --danger:#b42318; --danger-bg: rgba(180,35,24,.10); --radius: 18px; --radius-sm: 14px; --shadow: 0 18px 45px rgba(15, 23, 42, .12); --shadow-soft: 0 10px 25px rgba(15, 23, 42, .10); } *{ box-sizing:border-box; -webkit-tap-highlight-color: transparent; } html, body{ height:100%; } body{ margin:0; font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif; color: var(--ink); line-height:1.55; /*background: radial-gradient(1100px 520px at 20% 10%, rgba(122,31,162,.16), transparent 55%), radial-gradient(900px 480px at 85% 18%, rgba(212,20,142,.15), transparent 60%), linear-gradient(180deg, var(--bg-0), var(--bg-1));*/ } .container{ max-width: 920px; margin: 0 auto; padding: 22px 16px 40px; } header{ text-align:center; padding: 10px 0 18px; } .status-badge{ display:inline-flex; align-items:center; gap:10px; padding: 10px 14px; border-radius: 999px; background: rgba(122,31,162,.08); border: 1px solid rgba(122,31,162,.18); color: var(--lf-1); font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: .6px; box-shadow: 0 8px 18px rgba(122,31,162,.08); } .live-dot{ width: 9px; height: 9px; background: var(--lf-3); border-radius: 50%; box-shadow: 0 0 0 6px rgba(212,20,142,.14); animation: pulse 1.6s infinite; } @keyframes pulse{ 0%{ transform: scale(1); opacity: 1; } 60%{ transform: scale(1.15); opacity: .55; } 100%{ transform: scale(1); opacity: 1; } } .brand-title{ margin: 8px 0 0; font-size: 12px; color: var(--muted); } .hero{ position: relative; padding: 26px 22px; border-radius: var(--radius); background: var(--card); border: 1px solid var(--stroke); box-shadow: var(--shadow); backdrop-filter: blur(10px); overflow:hidden; text-align:center; margin-bottom: 18px; } .hero::before{ content:; position:absolute; inset:-2px; background: radial-gradient(720px 240px at 12% 10%, rgba(122,31,162,.14), transparent 60%), radial-gradient(620px 240px at 90% 10%, rgba(212,20,142,.12), transparent 60%); pointer-events:none; } .hero-inner{ position:relative; z-index:1; } .hero-logo{ display:flex; justify-content:center; margin-bottom: 10px; } .hero-logo img{ height: 42px; width: auto; filter: drop-shadow(0 10px 20px rgba(15,23,42,.14)); } h1{ margin: 0 0 10px; font-size: clamp(18px, 2.3vw, 26px); font-weight: 900; letter-spacing: -0.35px; } .hero-sub{ margin: 0; color: var(--muted); font-size: 13px; } .hero-meta{ margin-top: 14px; display:flex; justify-content:center; } /* pill grande (ganhadores) */ .pill{ display:inline-flex; align-items:center; justify-content:center; gap: 10px; padding: 12px 18px; border-radius: 999px; background: rgba(255,255,255,.80); border: 1px solid rgba(17,24,39,.10); box-shadow: 0 12px 24px rgba(15,23,42,.10); color: var(--ink); font-weight: 900; letter-spacing: -0.2px; min-width: min(520px, 100%); } .pill-dot{ width: 10px; height: 10px; border-radius: 999px; background: rgba(91,102,122,.55); } .pill--ok .pill-dot{ background: rgba(19,138,75,.82); box-shadow: 0 0 0 6px rgba(19,138,75,.12); } .pill--warn .pill-dot{ background: rgba(212,20,142,.82); box-shadow: 0 0 0 6px rgba(212,20,142,.12); } .pill-number{ font-size: 18px; background: linear-gradient(135deg, var(--lf-2), var(--lf-4)); -webkit-background-clip: text; background-clip: text; color: transparent; } .dezenas{ display:flex; flex-wrap:wrap; justify-content:center; gap: 10px; margin: 18px 0 18px; padding: 6px 0 2px; } .ball{ width: 46px; height: 46px; border-radius: 999px; display:flex; align-items:center; justify-content:center; font-weight: 900; font-size: 16px; color: #0a1020; background: radial-gradient(14px 14px at 30% 28%, rgba(255,255,255,.88), transparent 55%), linear-gradient(135deg, rgba(122,31,162,.22), rgba(212,20,142,.20)); border: 1px solid rgba(17,24,39,.12); box-shadow: 0 12px 20px rgba(15,23,42,.10); } .info-bar{ display:grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 10px; text-align:left; } .info-item{ background: var(--card-2); border: 1px solid var(--stroke); border-radius: var(--radius-sm); padding: 12px 14px; box-shadow: var(--shadow-soft); } .info-label{ display:block; color: var(--muted); font-size: 11px; text-transform: uppercase; letter-spacing: .6px; margin-bottom: 6px; font-weight: 700; } .info-value{ font-weight: 900; letter-spacing: -0.2px; background: linear-gradient(135deg, var(--lf-2), var(--lf-4)); -webkit-background-clip: text; background-clip: text; color: transparent; } .ad-space{ margin: 18px 0; min-height: 110px; border-radius: var(--radius); background: rgba(255,255,255,.55); border: 1px dashed rgba(17,24,39,.18); display:flex; align-items:center; justify-content:center; color: var(--muted); font-size: 12px; } .tool-card{ margin-top: 14px; padding: 18px; border-radius: var(--radius); background: var(--card); border: 1px solid var(--stroke); box-shadow: var(--shadow-soft); backdrop-filter: blur(10px); } h2{ display:flex; align-items:center; gap: 10px; margin: 0 0 10px; font-size: 16px; font-weight: 900; letter-spacing: -0.2px; } .tool-note{ margin: 0 0 12px; color: var(--muted); font-size: 13px; } .input-group{ display:flex; gap: 10px; align-items:stretch; } input{ flex:1; border-radius: 12px; border: 1px solid rgba(17,24,39,.16); background: rgba(255,255,255,.88); padding: 12px 12px; font-size: 16px; color: var(--ink); outline: none; box-shadow: inset 0 1px 0 rgba(255,255,255,.85); } input::placeholder{ color: rgba(91,102,122,.75); } input:focus{ border-color: rgba(160,25,199,.40); box-shadow: 0 0 0 4px rgba(160,25,199,.12), inset 0 1px 0 rgba(255,255,255,.85); } button{ border: none; border-radius: 12px; padding: 12px 16px; font-weight: 900; cursor:pointer; transition: transform .08s ease, box-shadow .2s ease, filter .2s ease; background: linear-gradient(135deg, var(--lf-2), var(--lf-4)); color: #ffffff; box-shadow: 0 12px 22px rgba(160,25,199,.18); white-space: nowrap; } button:hover{ filter: brightness(1.02); } button:active{ transform: scale(.98); } .btn-ghost{ background: rgba(255,255,255,.60); color: var(--ink); border: 1px solid rgba(17,24,39,.14); box-shadow: none; } .btn-mini{ padding: 10px 12px; border-radius: 12px; font-size: 13px; font-weight: 900; } .res-box{ margin-top: 12px; padding: 12px; border-radius: 14px; background: rgba(255,255,255,.80); border: 1px solid rgba(17,24,39,.12); display:none; color: var(--ink); box-shadow: inset 0 1px 0 rgba(255,255,255,.8); font-size: 14px; } .res-box--danger{ background: var(--danger-bg); border-color: rgba(180,35,24,.22); color: var(--danger); } .muted-small{ color: var(--muted); font-size: 12px; display:block; margin-top: 6px; } .chips{ display:flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; } .chip{ display:inline-flex; align-items:center; justify-content:center; padding: 6px 10px; border-radius: 999px; background: rgba(255,255,255,.76); border: 1px solid rgba(17,24,39,.10); font-weight: 900; font-size: 12px; color: var(--ink); box-shadow: 0 10px 18px rgba(15,23,42,.06); } .chip--hit{ background: rgba(19,138,75,.10); border-color: rgba(19,138,75,.18); color: var(--win); } .gen-actions{ margin-top: 10px; display:flex; gap: 10px; align-items:center; justify-content: space-between; flex-wrap: wrap; } .toast{ display:none; margin-top: 10px; padding: 10px 12px; border-radius: 14px; background: rgba(255,255,255,.80); border: 1px solid rgba(17,24,39,.12); color: var(--ink); box-shadow: var(--shadow-soft); font-size: 13px; font-weight: 800; } footer{ text-align:center; margin-top: 18px; padding: 18px 8px 0; color: var(--muted); font-size: 12px; } @media (max-width: 560px){ .info-bar{ grid-template-columns: 1fr; } .input-group{ flex-direction: column; } button{ width: 100%; } .ball{ width: 44px; height: 44px; } .gen-actions{ justify-content: stretch; } .gen-actions button{ width: 100%; } .pill{ min-width: 100%; } .hero-logo img{ height: 36px; } } /style> script idschema-ld typeapplication/ld+json>{}/script>/head>body>div classcontainer> header> !--div classstatus-badge>span classlive-dot>/span> Sincronizado com a Caixa/div> p classbrand-title>O resultado oficial mais rápido do Brasil/p>--> /header> main> section classhero> div classhero-inner> !-- Logo pequena centralizada (coloque o arquivo em /imgs/lotofacil-logo.png) --> div classhero-logo> img src./imgs/logo.png altLotofácil> /div> h1 idmain-h1>Buscando resultado.../h1> p classhero-sub>Atualização automática + conferidor e gerador rápidos./p> div classhero-meta> span classpill pill--warn idpill-ganhadores> span classpill-dot>/span> span idganhadores-text>Carregando ganhadores.../span> /span> /div> div classdezenas idballs-container> div stylecolor:rgba(91,102,122,.95); font-weight:700;>Conectando ao servidor oficial.../div> /div> div classinfo-bar> div classinfo-item> span classinfo-label>Prêmio Estimado/span> span classinfo-value idval-premio>R$ --/span> /div> div classinfo-item> span classinfo-label>Próxima Data/span> span classinfo-value idval-proximo>--/--/span> /div> /div> /div> /section> !--div classad-space>ESPAÇO PARA ADSENSE/div>--> section classtool-card> h2>✅ Conferir Jogo/h2> p classtool-note>Cole entre strong>15 e 20/strong> números (01 a 25). Sem repetidos. Ex.: 01 02 05 08.../p> div classinput-group> input typetext idinput-conferir placeholderDigite de 15 a 20 números... inputmodenumeric> button typebutton onclickconferirJogo()>Verificar/button> /div> div idres-conferir classres-box>/div> /section> section classtool-card> h2>🎲 Surpresinha Gerador/h2> p classtool-note>Gere 15 números aleatórios sem repetir. Depois, é só copiar./p> button typebutton classbtn-ghost onclickgerarSurpresinha()> Gerar Números da Sorte /button> div idres-gerador classres-box styletext-align: center; font-size: 18px; letter-spacing: 2px; font-weight:900;>/div> div classgen-actions> button typebutton classbtn-mini btn-ghost onclickcopiarGerador() idbtn-copiar disabled> Copiar números /button> span classmuted-small idcopy-hint>Gere primeiro para liberar o botão./span> /div> div classtoast idtoast-copiar>✅ Números copiados!/div> /section> /main> footer> p>© Resultado Lotofácil Premium/p> /footer>/div>script> let dezenasOficiais ; let geradorUltimosNumeros ; function setGanhadoresPill(qtd) { const pill document.getElementById(pill-ganhadores); const txt document.getElementById(ganhadores-text); if (qtd null || qtd undefined) { pill.classList.remove(pill--ok); pill.classList.add(pill--warn); txt.textContent Ganhadores: --; return; } const n Number(qtd); if (!Number.isFinite(n)) { pill.classList.remove(pill--ok); pill.classList.add(pill--warn); txt.textContent Ganhadores: --; return; } if (n 0) { pill.classList.remove(pill--ok); pill.classList.add(pill--warn); txt.textContent Acumulou (0 ganhadores); return; } pill.classList.remove(pill--warn); pill.classList.add(pill--ok); txt.innerHTML `span classpill-number>${n}/span> ganhador${n 1 ? : es}`; } function mostrarErroConferidor(msg) { const resBox document.getElementById(res-conferir); resBox.classList.add(res-box--danger); resBox.style.display block; resBox.innerHTML `⚠️ strong>Atenção:/strong> ${msg}`; } function mostrarResultadoConferidor(html) { const resBox document.getElementById(res-conferir); resBox.classList.remove(res-box--danger); resBox.style.display block; resBox.innerHTML html; } function parseNumeros(raw) { const tokens raw.match(/\d+/g) || ; return tokens.map(t > Number(t)); } function safeGet(obj, keys) { for (const k of keys) { if (obj && objk ! undefined && objk ! null && String(objk).trim() ! ) return objk; } return null; } function parseBRDate(ddmmyyyy) { if (!ddmmyyyy || typeof ddmmyyyy ! string) return null; const m ddmmyyyy.match(/^(\d{2})\/(\d{2})\/(\d{4})$/); if (!m) return null; const dd Number(m1), mm Number(m2) - 1, yy Number(m3); const d new Date(yy, mm, dd, 12, 0, 0); return isNaN(d.getTime()) ? null : d; } function formatBRDate(dateObj) { const dd String(dateObj.getDate()).padStart(2, 0); const mm String(dateObj.getMonth() + 1).padStart(2, 0); const yy dateObj.getFullYear(); return `${dd}/${mm}/${yy}`; } function calcularProximoSorteio(dataResultadoStr) { const d parseBRDate(dataResultadoStr); if (!d) return --/--; d.setDate(d.getDate() + 1); if (d.getDay() 0) d.setDate(d.getDate() + 1); return formatBRDate(d); } function extrairGanhadores15(dados) { const direto safeGet(dados, ganhadores, numeroGanhadores, qtdGanhadores, quantidadeGanhadores, ganhadores15, ganhadores_15, numeroGanhadores15, qtdGanhadores15 ); if (direto ! null) return direto; const premiacoes safeGet(dados, premiacoes, listaRateioPremio, rateioPremio, premios); if (Array.isArray(premiacoes)) { for (const item of premiacoes) { const desc String(item?.descricaoFaixa ?? item?.descricao ?? item?.faixa ?? item?.categoria ?? ).toLowerCase(); const faixaNum Number(item?.faixa ?? item?.numeroFaixa ?? item?.acertos ?? item?.qtdAcertos ?? NaN); const ganh safeGet(item, numeroDeGanhadores,numeroGanhadores,qtdGanhadores,quantidadeGanhadores,ganhadores); if (faixaNum 15 || desc.includes(15)) { if (ganh ! null) return ganh; } } } const acumulou (typeof dados.acumulou boolean) ? dados.acumulou : (typeof dados.acumulado boolean) ? dados.acumulado : (typeof dados.acumulou string) ? (dados.acumulou.toLowerCase() sim || dados.acumulou.toLowerCase() true) : (typeof dados.acumulado string) ? (dados.acumulado.toLowerCase() sim || dados.acumulado.toLowerCase() true) : null; if (acumulou true) return 0; return null; } async function buscarResultadoReal() { try { const resposta await fetch(https://loteriascaixa-api.herokuapp.com/api/lotofacil/latest, { cache: no-store }); const dados await resposta.json(); dezenasOficiais (dados.dezenas || ).map(n > String(n).padStart(2,0)); const titulo `Resultado Lotofácil Concurso ${dados.concurso} – ${dados.data}`; document.getElementById(main-h1).innerText titulo; document.title titulo; const container document.getElementById(balls-container); container.innerHTML ; dezenasOficiais.forEach(num > { const ball document.createElement(div); ball.className ball; ball.innerText num; container.appendChild(ball); }); const ganhadores15 extrairGanhadores15(dados); setGanhadoresPill(ganhadores15); const premioRaw safeGet(dados, valorEstimadoProximoConcurso, valorEstimadoPróximoConcurso, valorEstimadoProximo, valorEstimado, premioEstimado, valor, valorEstimadoProximoSorteio ); // Formata se vier número “cru” tipo 1800000 const premioTxt (typeof premioRaw number || /^0-9+$/.test(String(premioRaw))) ? Number(premioRaw).toLocaleString(pt-BR, { style: currency, currency: BRL }) : (premioRaw ? String(premioRaw) : R$ --); document.getElementById(val-premio).innerText premioTxt; const dataProxRaw safeGet(dados, dataProximoConcurso, dataPróximoConcurso, dataProximoSorteio, dataPróximoSorteio ); const prox dataProxRaw ? String(dataProxRaw) : calcularProximoSorteio(dados.data); document.getElementById(val-proximo).innerText prox; const schema { @context: https://schema.org, @type: Article, headline: titulo, articleBody: `Os números sorteados foram: ${dezenasOficiais.join(, )}. Próximo sorteio: ${prox}.` }; document.getElementById(schema-ld).innerText JSON.stringify(schema); } catch (erro) { console.error(Erro ao buscar dados:, erro); document.getElementById(main-h1).innerText Erro ao carregar. Tente novamente.; setGanhadoresPill(null); document.getElementById(val-premio).innerText R$ --; document.getElementById(val-proximo).innerText --/--; } } function conferirJogo() { const inputEl document.getElementById(input-conferir); const raw inputEl.value.trim(); if (!dezenasOficiais.length) { mostrarErroConferidor(Ainda não carregamos as dezenas oficiais. Aguarde um instante e tente novamente.); return; } const nums (raw.match(/\d+/g) || ).map(t > Number(t)); if (nums.length 15 || nums.length > 20) { mostrarErroConferidor(Digite entre 15 e 20 números (ex.: 01 02 05 08...).); return; } const invalidos nums.filter(n > Number.isNaN(n) || n 1 || n > 25); if (invalidos.length) { mostrarErroConferidor(`Encontrei número inválido (fora de 01 a 25): strong>${invalidos.join(, )}/strong>.`); return; } const norm nums.map(n > String(n).padStart(2,0)); const set new Set(); const duplicados ; for (const n of norm) { if (set.has(n)) duplicados.push(n); set.add(n); } if (duplicados.length) { mostrarErroConferidor(`Não pode repetir número. Duplicados: strong>${...new Set(duplicados).join(, )}/strong>.`); return; } const acertos ...set.filter(n > dezenasOficiais.includes(n)).sort((a,b)>Number(a)-Number(b)); const html ` 🎯 Você acertou strong>${acertos.length}/strong> número(s). span classmuted-small>Você jogou strong>${set.size}/strong> número(s)./span> div classchips> ${acertos.length ? acertos.map(n>`span classchip chip--hit>${n}/span>`).join() : `span classchip>Nenhum acerto/span>`} /div> `; mostrarResultadoConferidor(html); inputEl.value ; inputEl.blur(); } function gerarSurpresinha() { let n ; while(n.length 15) { let r (Math.floor(Math.random() * 25) + 1).toString().padStart(2, 0); if(!n.includes(r)) n.push(r); } n.sort((a,b)>Number(a)-Number(b)); geradorUltimosNumeros n.join( ); const res document.getElementById(res-gerador); res.style.display block; res.innerText geradorUltimosNumeros; const btn document.getElementById(btn-copiar); const hint document.getElementById(copy-hint); btn.disabled false; hint.textContent Copie com 1 clique.; } async function copiarGerador() { if (!geradorUltimosNumeros) return; try { await navigator.clipboard.writeText(geradorUltimosNumeros); mostrarToastCopiar(); } catch (e) { try { const el document.getElementById(res-gerador); const range document.createRange(); range.selectNodeContents(el); const sel window.getSelection(); sel.removeAllRanges(); sel.addRange(range); document.execCommand(copy); sel.removeAllRanges(); mostrarToastCopiar(); } catch (err) { alert(Não consegui copiar automaticamente. Selecione os números e copie manualmente.); } } } function mostrarToastCopiar() { const toast document.getElementById(toast-copiar); toast.style.display block; toast.textContent ✅ Números copiados!; clearTimeout(window.__toastTimer); window.__toastTimer setTimeout(() > { toast.style.display none; }, 1800); } window.onload buscarResultadoReal;/script>/body>/html>
Port 443
HTTP/1.1 200 OKConnection: Keep-AliveKeep-Alive: timeout5, max100Content-Type: text/htmlLast-Modified: Mon, 23 Feb 2026 15:31:13 GMTAccept-Ranges: bytesContent-Length: 24187Date: Tue, 03 Mar 2026 13:15:24 GMTServer: LiteSpeed !DOCTYPE html>html langpt-br>head> meta charsetUTF-8 /> meta nameviewport contentwidthdevice-width, initial-scale1.0 /> title>Resultado Lotofácil – Conferidor e Gerador de Números/title> meta namedescription contentConfira o resultado da Lotofácil em tempo real. Site ultra-rápido com conferidor de jogos, gerador de surpresinha e estatísticas. /> !-- Favicon --> link relicon typeimage/png href./imgs/favicon.png sizes32x32> link relapple-touch-icon href./imgs/favicon.png> !-- Fonte premium --> link relpreconnect hrefhttps://fonts.googleapis.com> link relpreconnect hrefhttps://fonts.gstatic.com crossorigin> link hrefhttps://fonts.googleapis.com/css2?familyInter:wght@400;600;700;800&displayswap relstylesheet> style> :root{ /* Base clara premium */ --bg-0:#f7f6fb; --bg-1:#f1eef9; --ink:#0b1220; --muted:#5b667a; --card: rgba(255,255,255,.74); --card-2: rgba(255,255,255,.94); --stroke: rgba(17,24,39,.10); /* Paleta Lotofácil (roxo/magenta) */ --lf-1:#7a1fa2; /* roxo */ --lf-2:#a019c7; /* roxo vivo */ --lf-3:#d4148e; /* magenta */ --lf-4:#ff2ea6; /* pink */ --gold:#b7791f; --win:#138a4b; --warn:#b7791f; --danger:#b42318; --danger-bg: rgba(180,35,24,.10); --radius: 18px; --radius-sm: 14px; --shadow: 0 18px 45px rgba(15, 23, 42, .12); --shadow-soft: 0 10px 25px rgba(15, 23, 42, .10); } *{ box-sizing:border-box; -webkit-tap-highlight-color: transparent; } html, body{ height:100%; } body{ margin:0; font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif; color: var(--ink); line-height:1.55; /*background: radial-gradient(1100px 520px at 20% 10%, rgba(122,31,162,.16), transparent 55%), radial-gradient(900px 480px at 85% 18%, rgba(212,20,142,.15), transparent 60%), linear-gradient(180deg, var(--bg-0), var(--bg-1));*/ } .container{ max-width: 920px; margin: 0 auto; padding: 22px 16px 40px; } header{ text-align:center; padding: 10px 0 18px; } .status-badge{ display:inline-flex; align-items:center; gap:10px; padding: 10px 14px; border-radius: 999px; background: rgba(122,31,162,.08); border: 1px solid rgba(122,31,162,.18); color: var(--lf-1); font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: .6px; box-shadow: 0 8px 18px rgba(122,31,162,.08); } .live-dot{ width: 9px; height: 9px; background: var(--lf-3); border-radius: 50%; box-shadow: 0 0 0 6px rgba(212,20,142,.14); animation: pulse 1.6s infinite; } @keyframes pulse{ 0%{ transform: scale(1); opacity: 1; } 60%{ transform: scale(1.15); opacity: .55; } 100%{ transform: scale(1); opacity: 1; } } .brand-title{ margin: 8px 0 0; font-size: 12px; color: var(--muted); } .hero{ position: relative; padding: 26px 22px; border-radius: var(--radius); background: var(--card); border: 1px solid var(--stroke); box-shadow: var(--shadow); backdrop-filter: blur(10px); overflow:hidden; text-align:center; margin-bottom: 18px; } .hero::before{ content:; position:absolute; inset:-2px; background: radial-gradient(720px 240px at 12% 10%, rgba(122,31,162,.14), transparent 60%), radial-gradient(620px 240px at 90% 10%, rgba(212,20,142,.12), transparent 60%); pointer-events:none; } .hero-inner{ position:relative; z-index:1; } .hero-logo{ display:flex; justify-content:center; margin-bottom: 10px; } .hero-logo img{ height: 42px; width: auto; filter: drop-shadow(0 10px 20px rgba(15,23,42,.14)); } h1{ margin: 0 0 10px; font-size: clamp(18px, 2.3vw, 26px); font-weight: 900; letter-spacing: -0.35px; } .hero-sub{ margin: 0; color: var(--muted); font-size: 13px; } .hero-meta{ margin-top: 14px; display:flex; justify-content:center; } /* pill grande (ganhadores) */ .pill{ display:inline-flex; align-items:center; justify-content:center; gap: 10px; padding: 12px 18px; border-radius: 999px; background: rgba(255,255,255,.80); border: 1px solid rgba(17,24,39,.10); box-shadow: 0 12px 24px rgba(15,23,42,.10); color: var(--ink); font-weight: 900; letter-spacing: -0.2px; min-width: min(520px, 100%); } .pill-dot{ width: 10px; height: 10px; border-radius: 999px; background: rgba(91,102,122,.55); } .pill--ok .pill-dot{ background: rgba(19,138,75,.82); box-shadow: 0 0 0 6px rgba(19,138,75,.12); } .pill--warn .pill-dot{ background: rgba(212,20,142,.82); box-shadow: 0 0 0 6px rgba(212,20,142,.12); } .pill-number{ font-size: 18px; background: linear-gradient(135deg, var(--lf-2), var(--lf-4)); -webkit-background-clip: text; background-clip: text; color: transparent; } .dezenas{ display:flex; flex-wrap:wrap; justify-content:center; gap: 10px; margin: 18px 0 18px; padding: 6px 0 2px; } .ball{ width: 46px; height: 46px; border-radius: 999px; display:flex; align-items:center; justify-content:center; font-weight: 900; font-size: 16px; color: #0a1020; background: radial-gradient(14px 14px at 30% 28%, rgba(255,255,255,.88), transparent 55%), linear-gradient(135deg, rgba(122,31,162,.22), rgba(212,20,142,.20)); border: 1px solid rgba(17,24,39,.12); box-shadow: 0 12px 20px rgba(15,23,42,.10); } .info-bar{ display:grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 10px; text-align:left; } .info-item{ background: var(--card-2); border: 1px solid var(--stroke); border-radius: var(--radius-sm); padding: 12px 14px; box-shadow: var(--shadow-soft); } .info-label{ display:block; color: var(--muted); font-size: 11px; text-transform: uppercase; letter-spacing: .6px; margin-bottom: 6px; font-weight: 700; } .info-value{ font-weight: 900; letter-spacing: -0.2px; background: linear-gradient(135deg, var(--lf-2), var(--lf-4)); -webkit-background-clip: text; background-clip: text; color: transparent; } .ad-space{ margin: 18px 0; min-height: 110px; border-radius: var(--radius); background: rgba(255,255,255,.55); border: 1px dashed rgba(17,24,39,.18); display:flex; align-items:center; justify-content:center; color: var(--muted); font-size: 12px; } .tool-card{ margin-top: 14px; padding: 18px; border-radius: var(--radius); background: var(--card); border: 1px solid var(--stroke); box-shadow: var(--shadow-soft); backdrop-filter: blur(10px); } h2{ display:flex; align-items:center; gap: 10px; margin: 0 0 10px; font-size: 16px; font-weight: 900; letter-spacing: -0.2px; } .tool-note{ margin: 0 0 12px; color: var(--muted); font-size: 13px; } .input-group{ display:flex; gap: 10px; align-items:stretch; } input{ flex:1; border-radius: 12px; border: 1px solid rgba(17,24,39,.16); background: rgba(255,255,255,.88); padding: 12px 12px; font-size: 16px; color: var(--ink); outline: none; box-shadow: inset 0 1px 0 rgba(255,255,255,.85); } input::placeholder{ color: rgba(91,102,122,.75); } input:focus{ border-color: rgba(160,25,199,.40); box-shadow: 0 0 0 4px rgba(160,25,199,.12), inset 0 1px 0 rgba(255,255,255,.85); } button{ border: none; border-radius: 12px; padding: 12px 16px; font-weight: 900; cursor:pointer; transition: transform .08s ease, box-shadow .2s ease, filter .2s ease; background: linear-gradient(135deg, var(--lf-2), var(--lf-4)); color: #ffffff; box-shadow: 0 12px 22px rgba(160,25,199,.18); white-space: nowrap; } button:hover{ filter: brightness(1.02); } button:active{ transform: scale(.98); } .btn-ghost{ background: rgba(255,255,255,.60); color: var(--ink); border: 1px solid rgba(17,24,39,.14); box-shadow: none; } .btn-mini{ padding: 10px 12px; border-radius: 12px; font-size: 13px; font-weight: 900; } .res-box{ margin-top: 12px; padding: 12px; border-radius: 14px; background: rgba(255,255,255,.80); border: 1px solid rgba(17,24,39,.12); display:none; color: var(--ink); box-shadow: inset 0 1px 0 rgba(255,255,255,.8); font-size: 14px; } .res-box--danger{ background: var(--danger-bg); border-color: rgba(180,35,24,.22); color: var(--danger); } .muted-small{ color: var(--muted); font-size: 12px; display:block; margin-top: 6px; } .chips{ display:flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; } .chip{ display:inline-flex; align-items:center; justify-content:center; padding: 6px 10px; border-radius: 999px; background: rgba(255,255,255,.76); border: 1px solid rgba(17,24,39,.10); font-weight: 900; font-size: 12px; color: var(--ink); box-shadow: 0 10px 18px rgba(15,23,42,.06); } .chip--hit{ background: rgba(19,138,75,.10); border-color: rgba(19,138,75,.18); color: var(--win); } .gen-actions{ margin-top: 10px; display:flex; gap: 10px; align-items:center; justify-content: space-between; flex-wrap: wrap; } .toast{ display:none; margin-top: 10px; padding: 10px 12px; border-radius: 14px; background: rgba(255,255,255,.80); border: 1px solid rgba(17,24,39,.12); color: var(--ink); box-shadow: var(--shadow-soft); font-size: 13px; font-weight: 800; } footer{ text-align:center; margin-top: 18px; padding: 18px 8px 0; color: var(--muted); font-size: 12px; } @media (max-width: 560px){ .info-bar{ grid-template-columns: 1fr; } .input-group{ flex-direction: column; } button{ width: 100%; } .ball{ width: 44px; height: 44px; } .gen-actions{ justify-content: stretch; } .gen-actions button{ width: 100%; } .pill{ min-width: 100%; } .hero-logo img{ height: 36px; } } /style> script idschema-ld typeapplication/ld+json>{}/script>/head>body>div classcontainer> header> !--div classstatus-badge>span classlive-dot>/span> Sincronizado com a Caixa/div> p classbrand-title>O resultado oficial mais rápido do Brasil/p>--> /header> main> section classhero> div classhero-inner> !-- Logo pequena centralizada (coloque o arquivo em /imgs/lotofacil-logo.png) --> div classhero-logo> img src./imgs/logo.png altLotofácil> /div> h1 idmain-h1>Buscando resultado.../h1> p classhero-sub>Atualização automática + conferidor e gerador rápidos./p> div classhero-meta> span classpill pill--warn idpill-ganhadores> span classpill-dot>/span> span idganhadores-text>Carregando ganhadores.../span> /span> /div> div classdezenas idballs-container> div stylecolor:rgba(91,102,122,.95); font-weight:700;>Conectando ao servidor oficial.../div> /div> div classinfo-bar> div classinfo-item> span classinfo-label>Prêmio Estimado/span> span classinfo-value idval-premio>R$ --/span> /div> div classinfo-item> span classinfo-label>Próxima Data/span> span classinfo-value idval-proximo>--/--/span> /div> /div> /div> /section> !--div classad-space>ESPAÇO PARA ADSENSE/div>--> section classtool-card> h2>✅ Conferir Jogo/h2> p classtool-note>Cole entre strong>15 e 20/strong> números (01 a 25). Sem repetidos. Ex.: 01 02 05 08.../p> div classinput-group> input typetext idinput-conferir placeholderDigite de 15 a 20 números... inputmodenumeric> button typebutton onclickconferirJogo()>Verificar/button> /div> div idres-conferir classres-box>/div> /section> section classtool-card> h2>🎲 Surpresinha Gerador/h2> p classtool-note>Gere 15 números aleatórios sem repetir. Depois, é só copiar./p> button typebutton classbtn-ghost onclickgerarSurpresinha()> Gerar Números da Sorte /button> div idres-gerador classres-box styletext-align: center; font-size: 18px; letter-spacing: 2px; font-weight:900;>/div> div classgen-actions> button typebutton classbtn-mini btn-ghost onclickcopiarGerador() idbtn-copiar disabled> Copiar números /button> span classmuted-small idcopy-hint>Gere primeiro para liberar o botão./span> /div> div classtoast idtoast-copiar>✅ Números copiados!/div> /section> /main> footer> p>© Resultado Lotofácil Premium/p> /footer>/div>script> let dezenasOficiais ; let geradorUltimosNumeros ; function setGanhadoresPill(qtd) { const pill document.getElementById(pill-ganhadores); const txt document.getElementById(ganhadores-text); if (qtd null || qtd undefined) { pill.classList.remove(pill--ok); pill.classList.add(pill--warn); txt.textContent Ganhadores: --; return; } const n Number(qtd); if (!Number.isFinite(n)) { pill.classList.remove(pill--ok); pill.classList.add(pill--warn); txt.textContent Ganhadores: --; return; } if (n 0) { pill.classList.remove(pill--ok); pill.classList.add(pill--warn); txt.textContent Acumulou (0 ganhadores); return; } pill.classList.remove(pill--warn); pill.classList.add(pill--ok); txt.innerHTML `span classpill-number>${n}/span> ganhador${n 1 ? : es}`; } function mostrarErroConferidor(msg) { const resBox document.getElementById(res-conferir); resBox.classList.add(res-box--danger); resBox.style.display block; resBox.innerHTML `⚠️ strong>Atenção:/strong> ${msg}`; } function mostrarResultadoConferidor(html) { const resBox document.getElementById(res-conferir); resBox.classList.remove(res-box--danger); resBox.style.display block; resBox.innerHTML html; } function parseNumeros(raw) { const tokens raw.match(/\d+/g) || ; return tokens.map(t > Number(t)); } function safeGet(obj, keys) { for (const k of keys) { if (obj && objk ! undefined && objk ! null && String(objk).trim() ! ) return objk; } return null; } function parseBRDate(ddmmyyyy) { if (!ddmmyyyy || typeof ddmmyyyy ! string) return null; const m ddmmyyyy.match(/^(\d{2})\/(\d{2})\/(\d{4})$/); if (!m) return null; const dd Number(m1), mm Number(m2) - 1, yy Number(m3); const d new Date(yy, mm, dd, 12, 0, 0); return isNaN(d.getTime()) ? null : d; } function formatBRDate(dateObj) { const dd String(dateObj.getDate()).padStart(2, 0); const mm String(dateObj.getMonth() + 1).padStart(2, 0); const yy dateObj.getFullYear(); return `${dd}/${mm}/${yy}`; } function calcularProximoSorteio(dataResultadoStr) { const d parseBRDate(dataResultadoStr); if (!d) return --/--; d.setDate(d.getDate() + 1); if (d.getDay() 0) d.setDate(d.getDate() + 1); return formatBRDate(d); } function extrairGanhadores15(dados) { const direto safeGet(dados, ganhadores, numeroGanhadores, qtdGanhadores, quantidadeGanhadores, ganhadores15, ganhadores_15, numeroGanhadores15, qtdGanhadores15 ); if (direto ! null) return direto; const premiacoes safeGet(dados, premiacoes, listaRateioPremio, rateioPremio, premios); if (Array.isArray(premiacoes)) { for (const item of premiacoes) { const desc String(item?.descricaoFaixa ?? item?.descricao ?? item?.faixa ?? item?.categoria ?? ).toLowerCase(); const faixaNum Number(item?.faixa ?? item?.numeroFaixa ?? item?.acertos ?? item?.qtdAcertos ?? NaN); const ganh safeGet(item, numeroDeGanhadores,numeroGanhadores,qtdGanhadores,quantidadeGanhadores,ganhadores); if (faixaNum 15 || desc.includes(15)) { if (ganh ! null) return ganh; } } } const acumulou (typeof dados.acumulou boolean) ? dados.acumulou : (typeof dados.acumulado boolean) ? dados.acumulado : (typeof dados.acumulou string) ? (dados.acumulou.toLowerCase() sim || dados.acumulou.toLowerCase() true) : (typeof dados.acumulado string) ? (dados.acumulado.toLowerCase() sim || dados.acumulado.toLowerCase() true) : null; if (acumulou true) return 0; return null; } async function buscarResultadoReal() { try { const resposta await fetch(https://loteriascaixa-api.herokuapp.com/api/lotofacil/latest, { cache: no-store }); const dados await resposta.json(); dezenasOficiais (dados.dezenas || ).map(n > String(n).padStart(2,0)); const titulo `Resultado Lotofácil Concurso ${dados.concurso} – ${dados.data}`; document.getElementById(main-h1).innerText titulo; document.title titulo; const container document.getElementById(balls-container); container.innerHTML ; dezenasOficiais.forEach(num > { const ball document.createElement(div); ball.className ball; ball.innerText num; container.appendChild(ball); }); const ganhadores15 extrairGanhadores15(dados); setGanhadoresPill(ganhadores15); const premioRaw safeGet(dados, valorEstimadoProximoConcurso, valorEstimadoPróximoConcurso, valorEstimadoProximo, valorEstimado, premioEstimado, valor, valorEstimadoProximoSorteio ); // Formata se vier número “cru” tipo 1800000 const premioTxt (typeof premioRaw number || /^0-9+$/.test(String(premioRaw))) ? Number(premioRaw).toLocaleString(pt-BR, { style: currency, currency: BRL }) : (premioRaw ? String(premioRaw) : R$ --); document.getElementById(val-premio).innerText premioTxt; const dataProxRaw safeGet(dados, dataProximoConcurso, dataPróximoConcurso, dataProximoSorteio, dataPróximoSorteio ); const prox dataProxRaw ? String(dataProxRaw) : calcularProximoSorteio(dados.data); document.getElementById(val-proximo).innerText prox; const schema { @context: https://schema.org, @type: Article, headline: titulo, articleBody: `Os números sorteados foram: ${dezenasOficiais.join(, )}. Próximo sorteio: ${prox}.` }; document.getElementById(schema-ld).innerText JSON.stringify(schema); } catch (erro) { console.error(Erro ao buscar dados:, erro); document.getElementById(main-h1).innerText Erro ao carregar. Tente novamente.; setGanhadoresPill(null); document.getElementById(val-premio).innerText R$ --; document.getElementById(val-proximo).innerText --/--; } } function conferirJogo() { const inputEl document.getElementById(input-conferir); const raw inputEl.value.trim(); if (!dezenasOficiais.length) { mostrarErroConferidor(Ainda não carregamos as dezenas oficiais. Aguarde um instante e tente novamente.); return; } const nums (raw.match(/\d+/g) || ).map(t > Number(t)); if (nums.length 15 || nums.length > 20) { mostrarErroConferidor(Digite entre 15 e 20 números (ex.: 01 02 05 08...).); return; } const invalidos nums.filter(n > Number.isNaN(n) || n 1 || n > 25); if (invalidos.length) { mostrarErroConferidor(`Encontrei número inválido (fora de 01 a 25): strong>${invalidos.join(, )}/strong>.`); return; } const norm nums.map(n > String(n).padStart(2,0)); const set new Set(); const duplicados ; for (const n of norm) { if (set.has(n)) duplicados.push(n); set.add(n); } if (duplicados.length) { mostrarErroConferidor(`Não pode repetir número. Duplicados: strong>${...new Set(duplicados).join(, )}/strong>.`); return; } const acertos ...set.filter(n > dezenasOficiais.includes(n)).sort((a,b)>Number(a)-Number(b)); const html ` 🎯 Você acertou strong>${acertos.length}/strong> número(s). span classmuted-small>Você jogou strong>${set.size}/strong> número(s)./span> div classchips> ${acertos.length ? acertos.map(n>`span classchip chip--hit>${n}/span>`).join() : `span classchip>Nenhum acerto/span>`} /div> `; mostrarResultadoConferidor(html); inputEl.value ; inputEl.blur(); } function gerarSurpresinha() { let n ; while(n.length 15) { let r (Math.floor(Math.random() * 25) + 1).toString().padStart(2, 0); if(!n.includes(r)) n.push(r); } n.sort((a,b)>Number(a)-Number(b)); geradorUltimosNumeros n.join( ); const res document.getElementById(res-gerador); res.style.display block; res.innerText geradorUltimosNumeros; const btn document.getElementById(btn-copiar); const hint document.getElementById(copy-hint); btn.disabled false; hint.textContent Copie com 1 clique.; } async function copiarGerador() { if (!geradorUltimosNumeros) return; try { await navigator.clipboard.writeText(geradorUltimosNumeros); mostrarToastCopiar(); } catch (e) { try { const el document.getElementById(res-gerador); const range document.createRange(); range.selectNodeContents(el); const sel window.getSelection(); sel.removeAllRanges(); sel.addRange(range); document.execCommand(copy); sel.removeAllRanges(); mostrarToastCopiar(); } catch (err) { alert(Não consegui copiar automaticamente. Selecione os números e copie manualmente.); } } } function mostrarToastCopiar() { const toast document.getElementById(toast-copiar); toast.style.display block; toast.textContent ✅ Números copiados!; clearTimeout(window.__toastTimer); window.__toastTimer setTimeout(() > { toast.style.display none; }, 1800); } window.onload buscarResultadoReal;/script>/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]