/* eslint-disable */ /* * Blackstock Anty · página de producto premium. * * Estructura: * 1. Hero — eyebrow, título doble, sub, 2 CTAs, mock de la app a la derecha * 2. Contexto — "El navegador delata. Anty lo aísla." * 3. Stack técnico — 6 capas (TLS · Fingerprint · WebRTC · Proxy · Vault · iOS Deep) * 4. Cómo funciona — 3 pasos visuales * 5. Dentro de Anty — feature grid con mock + 4 capabilities * 6. Comparativa — Anty vs antidetects genéricos vs Chrome normal * 7. Incluido en BASIC — banner con upgrade path * 8. Compatibilidad / requisitos * 9. FAQ específico * 10. CTA final */ /* Reutilizamos el LogoMark oficial de Blackstock (definido en shared.jsx → * window.LogoMark). Con esto Anty hereda el branding exacto del resto del * ecosistema: chevrones sólidos con gradient lima oficial, sin reinterpretar. * * Para el header de Anty añadimos un wordmark "BLACKSTOCK · ANTY" para * dejar claro que es un producto dentro de la suite, no un brand aparte. */ const AntyWordmark = ({ size = 28, withGlow = false }) => ( ); /* ── Hero ─────────────────────────────────────────────────────────────── */ const AntyHero = ({ onCTA, onScrollTo }) => (
{/* Glow background */}
BLACKSTOCK · ANTY

El navegador
privado de Blackstock.

Un Chromium aislado por cuenta con TLS Safari iOS, fingerprint independiente y proxy dedicado. Sin contaminación entre sesiones. Sin fugas. Sin correlación.

● INCLUIDO EN BASIC ● macOS · Apple Silicon ● USO PRIVADO BLACKSTOCK
); /* Mock visual del dashboard de Anty (estático, decorativo). */ const AntyAppMock = () => (
{/* macOS chrome */}
{['#ff5f56', '#ffbd2e', '#27c93f'].map((c, i) => ( ))} BLACKSTOCK ANTY
{/* Sidebar */}
Blackstock Anty
Antidetect privado
Workspace
{[ { l: 'Perfiles', n: '12', active: true }, { l: 'Ajustes', n: null, active: false }, { l: 'Licencia', n: null, active: false }, ].map((it, i) => (
{it.l} {it.n && {it.n}}
))}
Licencia activa
Expira 11 may 2027
{/* Profile grid */}
Workspace
Perfiles
{[ { i: 'M', n: 'Maria · Vinted ES', s: 'Activo', sc: '#B6FF00', c: '#B6FF00' }, { i: 'L', n: 'Lucia FR Ops', s: 'Parado', sc: 'var(--fg-3)', c: '#60A5FA' }, { i: 'B', n: 'Bot warmup #03', s: 'Parado', sc: 'var(--fg-3)', c: '#F59E0B' }, { i: 'A', n: 'Anna DE', s: 'Activo', sc: '#B6FF00', c: '#A78BFA' }, ].map((p, i) => (
{p.i}
{p.n}
🇪🇸 iOS 17 · TLS
{p.s} actualizado hoy
))}
); /* ── Contexto: el navegador delata ─────────────────────────────────────── */ const AntyContexto = () => (
EL PROBLEMA

Un navegador normal te delata.
Vinted lo sabe.

Cuentas compartiendo canvas, audio, fuentes, WebGL, JA3, sec-ch-ua, batería, WebRTC y mil señales más. DataDome y Arkose Labs correlacionan en menos de una sesión. Un solo perfil sin aislar contamina los demás.

{[ { k: 'JA3 / JA4 TLS', v: 'Tu Chrome desktop bajo UA iPhone = mismatch flag inmediato.' }, { k: 'Canvas + Audio', v: 'Sin ruido determinista, dos cuentas producen el mismo hash.' }, { k: 'WebRTC', v: 'Filtra tu IP residencial real aunque uses proxy.' }, { k: 'Cookies cruzadas', v: 'localStorage / IDB / cache compartidos entre cuentas.' }, { k: 'Fingerprint fuentes', v: 'Lista de fonts del sistema = signature persistente.' }, { k: 'Batería / red', v: 'NetworkInformation y BatteryAPI delatan dispositivo desktop.' }, ].map((it, i) => (
{it.k}
{it.v}
))}
); /* ── Stack técnico ─────────────────────────────────────────────────────── */ const AntyStack = () => (
STACK TÉCNICO

Seis capas de aislamiento.

Cada perfil de Anty se ejecuta como si fuera un dispositivo distinto. La detección requeriría que Vinted te detectara en seis sitios a la vez.

{[ { k: '01', t: 'TLS Impersonation', d: 'JA3/JA4 Safari iOS real, no Chrome. Vinted ve un iPhone en el handshake. Curve order, cipher suites y extensiones idénticas al stack de Apple.', tag: 'bogdanfinn/tls-client', }, { k: '02', t: 'Fingerprint patcher', d: 'Canvas/Audio/ClientRects con ruido determinista por perfil. WebGL Apple GPU. hardwareConcurrency y deviceMemory coherentes con el modelo de iPhone elegido.', tag: 'Per-profile seed', }, { k: '03', t: 'WebRTC guard', d: 'Extensión MV3 en MAIN world: iceServers vacíos, candidates srflx/prflx filtrados, SDP saneado. Cero fugas de IP residencial.', tag: '0 leaks', }, { k: '04', t: 'Proxy fail-closed', d: 'Si la proxy ISP se cae, el perfil no abre. Sin caída silenciosa a IP real. Validación geo previa: si el proxy sale en otro país que el perfil, aborta.', tag: 'ES / FR / IT / DE', }, { k: '05', t: 'iOS Deep Profile', d: 'ApplePaySession, GestureEvent, PublicKeyCredential. Elimina APIs Chromium-only. Touch sintético desde mouse. Pantalla y DPR del iPhone elegido.', tag: 'iPhone 7..15', }, { k: '06', t: 'Vault local cifrado', d: 'AES-GCM + PBKDF2. Auto-unlock vía Keychain macOS (safeStorage). Cero secretos en disco plano. Cero servidores en la trayectoria de tus perfiles.', tag: 'macOS Keychain', }, ].map((it, i) => (
{it.k} {it.tag}

{it.t}

{it.d}

))}
); /* ── Cómo funciona ─────────────────────────────────────────────────────── */ const AntyComoFunciona = () => (
CÓMO FUNCIONA

Abres Anty, eliges perfil, lanzas.

Tres pasos. Lo demás lo hace el motor por debajo.

{[ { n: '01', t: 'Inicias sesión Blackstock', d: 'Anty valida tu licencia de Automatización contra api.blackstock.es. Sin sesión válida, no se lanza nada.', }, { n: '02', t: 'Eliges un perfil', d: 'Cada perfil tiene fingerprint, proxy y vault propios. "Cuenta nueva" → iPhone preset. "Cuenta calentada" → macOS preset.', }, { n: '03', t: 'Pulsas Lanzar', d: 'Arranca un Chromium aislado con TLS Safari iOS, extensiones cargadas y proxy validado. Cero contaminación con otros perfiles.', }, ].map((it, i) => (
{it.n}

{it.t}

{it.d}

))}
); /* ── Dentro de Anty: feature grid ──────────────────────────────────────── */ const AntyDentro = () => (
DENTRO DE ANTY

Lo que hay debajo del icono.

{[ { tag: 'PERFILES ILIMITADOS', t: 'Identidades por encargo', d: 'Cada perfil es un universo. Fingerprint propio, proxy propio, cookies propias. Tu Mac corre tantos como necesites — el límite es la RAM, no Anty.', }, { tag: 'PRESETS VINTED', t: 'iPhone y macOS prearmados', d: 'Presets vinted-iphone (cuenta nueva, registro desde cero) y vinted-mac (cuenta calentada en iPhone físico real, transición a PC). Aplican fingerprint coherente automáticamente.', }, { tag: 'CONTROL DE LICENCIA', t: 'Heartbeat cada 30 min', d: 'Anty revalida tu licencia contra el servidor cada media hora. Si caduca, el perfil se cierra. Si hay error de red, modo gracia infinito (no te corta por un timeout).', }, { tag: 'AUTO-UNLOCK', t: 'Cero password fatigue', d: 'Tras el primer login, Keychain macOS guarda la clave del vault. Próximos arranques: splash → dashboard. Sin pedir password de vault otra vez.', }, { tag: 'TEST DE PROXY', t: 'IP · país · colisiones', d: 'Comprueba conexión y geo del proxy antes de lanzar. Detecta automáticamente si la IP coincide con otro perfil (exacta o /24). Cero linkages accidentales.', }, { tag: 'COOKIES EDITABLES', t: 'Import / Export bulk', d: 'Editor completo de cookies por perfil. Importa JSON con tu sesión, exporta para backup. Útil para mover una cuenta entre dispositivos sin volver a loguear.', }, ].map((it, i) => (
{ e.currentTarget.style.borderColor = 'var(--line-acid)'; }} onMouseLeave={(e) => { e.currentTarget.style.borderColor = 'var(--line)'; }} > {it.tag}

{it.t}

{it.d}

))}
); /* ── Comparativa ───────────────────────────────────────────────────────── */ const AntyComparativa = () => { const rows = [ { label: 'TLS spoofing (JA3 Safari iOS real)', anty: true, generic: 'parcial', chrome: false }, { label: 'WebRTC guard MV3 (cero fugas STUN)', anty: true, generic: 'flag', chrome: false }, { label: 'iOS Deep Profile (ApplePaySession, Touch)', anty: true, generic: false, chrome: false }, { label: 'Proxy fail-closed con validación geo', anty: true, generic: false, chrome: false }, { label: 'Vault local cifrado AES-GCM', anty: true, generic: 'cloud', chrome: false }, { label: 'Bypass Arkose Labs / DataDome', anty: true, generic: 'no', chrome: false }, { label: 'Integrado con Blackstock (licencia única)', anty: true, generic: false, chrome: false }, { label: 'Coste mensual extra', anty: '0€', generic: '30-99€', chrome: '—' }, ]; const Cell = ({ v }) => { if (v === true) return ( ); if (v === false) return ( ); return ( {v} ); }; return (
COMPARATIVA

Frente a alternativas.

BLACKSTOCK ANTY ANTIDETECT GENÉRICO CHROME NORMAL
{rows.map((r, i) => (
{r.label}
))}
); }; /* ── Incluido en BASIC ─────────────────────────────────────────────────── */ const AntyIncluido = ({ onCTA }) => (
INCLUIDO EN EL PLAN BASIC

Anty viene con tu suscripción.

22,90€/mes. Sin extras. Sin upsell. Tu licencia de Automatización Blackstock desbloquea Anty en cualquier Mac asociada a tu cuenta — descarga, autenticación y updates servidos por la propia infra Blackstock.

QUÉ INCLUYE TU LICENCIA
    {[ 'Descargas firmadas para todos tus Macs', 'Updates automáticos por canal Blackstock', 'Heartbeat 30 min · revalidación silenciosa', 'Cero límite de perfiles por dispositivo', 'Soporte por email con el equipo Blackstock', ].map((it, i) => (
  • {it}
  • ))}
); /* ── Descargas · Premium download experience ────────────────────────────── * * Config global: el host puede setear window.BS_ANTY_DOWNLOADS antes de que * la página monte para override de URLs/tamaños/versión. Si no, usamos los * defaults relativos `/downloads/blackstock-anty/{mac,windows}` que el * backend Blackstock debe interceptar y redirigir al CDN tras validar * licencia. * * window.BS_ANTY_DOWNLOADS = { * version: "0.3.0", * mac: { url: "https://cdn.blackstock.es/anty/Blackstock-Anty-0.3.0-arm64.dmg", size: "107 MB", build: "Signed" }, * windows: { url: "https://cdn.blackstock.es/anty/Blackstock-Anty-Setup-0.3.0.exe", size: "92 MB", build: "Signed" }, * } */ const ANTY_DEFAULT_DOWNLOADS = { version: "0.3.0", mac: { url: "/downloads/blackstock-anty/Blackstock-Anty-0.3.0.dmg", size: "194 MB", arch: "Universal · Apple Silicon + Intel", requirement: "macOS 11 Big Sur o superior", format: "DMG · Ad-hoc signed", }, windows: { url: "/downloads/blackstock-anty/Blackstock-Anty-Setup-0.3.0.exe", size: "92 MB", arch: "x64", requirement: "Windows 10 / 11", format: "EXE · NSIS installer", }, }; function getAntyDownloads() { if (typeof window === 'undefined') return ANTY_DEFAULT_DOWNLOADS; const override = window.BS_ANTY_DOWNLOADS; if (!override) return ANTY_DEFAULT_DOWNLOADS; return { version: override.version || ANTY_DEFAULT_DOWNLOADS.version, mac: { ...ANTY_DEFAULT_DOWNLOADS.mac, ...(override.mac || {}) }, windows: { ...ANTY_DEFAULT_DOWNLOADS.windows, ...(override.windows || {}) }, }; } function detectPlatform() { if (typeof navigator === 'undefined') return null; const ua = navigator.userAgent || ''; if (/Mac|iPad|iPhone|iPod/i.test(ua)) return 'mac'; if (/Win/i.test(ua)) return 'windows'; return null; } const AppleGlyph = ({ size = 18 }) => ( ); const WindowsGlyph = ({ size = 18 }) => ( ); /* DownloadCard · card grande clicable. El click dispara descarga real * y feedback visual ("Iniciando descarga…" 1.2s). */ const DownloadCard = ({ os, glyph, glyphSize, title, format, arch, requirement, size, version, href, recommended, onClick, mobile }) => { const [hover, setHover] = React.useState(false); const [downloading, setDownloading] = React.useState(false); const handleClick = (e) => { setDownloading(true); window.setTimeout(() => setDownloading(false), 1800); if (onClick) onClick(e); // El anchor download dispara la descarga real. }; const accent = recommended || hover; return ( setHover(true)} onMouseLeave={() => setHover(false)} style={{ position: 'relative', display: 'flex', flexDirection: 'column', gap: 18, padding: mobile ? 22 : 28, borderRadius: 18, background: accent ? 'linear-gradient(180deg, rgba(214,255,77,0.07), rgba(255,255,255,0.02) 60%, rgba(214,255,77,0.02))' : 'linear-gradient(180deg, rgba(255,255,255,0.025), rgba(255,255,255,0.015) 70%, rgba(255,255,255,0.005))', border: `1px solid ${accent ? 'rgba(214,255,77,0.4)' : 'var(--line)'}`, boxShadow: accent ? '0 40px 100px -30px rgba(214,255,77,0.22), 0 0 0 1px rgba(214,255,77,0.08) inset' : '0 30px 80px -40px rgba(0,0,0,0.7), 0 0 0 1px rgba(255,255,255,0.02) inset', color: 'var(--fg)', textDecoration: 'none', transform: hover ? 'translateY(-4px)' : 'translateY(0)', transition: 'transform .28s cubic-bezier(0.16, 1, 0.3, 1), border-color .25s ease, box-shadow .25s ease, background .25s ease', overflow: 'hidden', }} > {/* Glow lima sutil que pulsa al hover */} ); }; const Meta = ({ label, value }) => (
{label}
{value}
); const Pill = ({ icon, tone, children }) => ( {children} ); const DownloadGlyph = () => ( ); const DownloadSpinner = () => ( ); const AntyDownload = () => { const dls = getAntyDownloads(); const isMobile = window.useIsMobile ? window.useIsMobile() : false; const platform = detectPlatform(); // 'mac' | 'windows' | null return (
{/* Glow ambient en background */}
); }; /* ── Compatibilidad / requisitos ───────────────────────────────────────── */ const AntyCompat = () => (
COMPATIBILIDAD

Pensado para macOS.

Anty es nativo de macOS por decisión técnica: Keychain, code signing, notarization y trust del Root CA están integrados en el flujo del sistema.

{[ { k: 'SISTEMA', v: 'macOS 13 Ventura o superior · Apple Silicon (M1/M2/M3) recomendado · Intel funciona' }, { k: 'CHROMIUM', v: 'Anty descarga e instala Chromium for Testing aislado · 600 MB · no toca tu Chrome' }, { k: 'RAM', v: '8 GB mínimo · 16 GB recomendado para >5 perfiles concurrentes' }, { k: 'PROXIES', v: 'HTTP / HTTPS / SOCKS5 · residenciales ISP recomendados (no datacenter)' }, { k: 'ROOT CA', v: 'Se instala automáticamente en Keychain con tu permiso (necesario para TLS spoof)' }, { k: 'TLS BINARY', v: 'bogdanfinn/tls-client v1.14+ · gestionado por Anty · sin instalación manual' }, ].map((it, i) => (
{it.k}
{it.v}
))}
); /* ── FAQ específico ────────────────────────────────────────────────────── */ const AntyFAQ = () => { const items = [ { q: '¿Por qué macOS only?', a: 'Aprovechamos Keychain, code signing y notarization de Apple para mantener el flujo seguro y sin fricción. Una versión Windows técnicamente es posible pero diluye la coherencia con el preset iPhone que es el corazón de Anty. Si lo necesitas, escríbenos.', }, { q: '¿Vinted me banea por usar Anty?', a: 'Anty está diseñado para que Vinted NO te detecte por capa técnica. Pero el ban depende también de cómo operes: cadencia humana, IP residencial limpia, identidad coherente, payout único por cuenta. Anty cubre la infraestructura — la operativa la decides tú.', }, { q: '¿Qué pasa si caduca mi licencia con perfiles abiertos?', a: 'En 30 min como máximo, Anty detecta la caducidad por heartbeat y cierra los perfiles abiertos. No vas a operar a oscuras con licencia expirada. Si tu licencia vuelve a estar activa, simplemente reabres y sigues.', }, { q: '¿Puedo usar Anty en varios Macs?', a: 'Sí. Tu licencia te identifica como persona, no como dispositivo. Cada Mac que abre Anty se autentica con tu email Blackstock y se cuenta como una instalación. Sin límite arbitrario.', }, { q: '¿Dónde se guardan mis perfiles?', a: 'Localmente en tu Mac, cifrados con AES-GCM. La clave deriva de la contraseña de tu vault con PBKDF2 y se cachea en Keychain (safeStorage). Blackstock no tiene acceso a tus perfiles — ni siquiera al contenido del vault.', }, { q: '¿Anty funciona sin internet?', a: 'Si pierdes conexión, Anty entra en modo gracia infinito: confía en la última revalidación OK de tu licencia y te deja seguir trabajando. Solo cuando el servidor responde EXPLÍCITAMENTE que tu licencia ya no vale, cierra los perfiles.', }, ]; const [open, setOpen] = React.useState(0); return (
FAQ

Preguntas frecuentes sobre Anty.

{items.map((it, i) => { const isOpen = i === open; return (
{isOpen && (
{it.a}
)}
); })}
); }; /* ── CTA final ─────────────────────────────────────────────────────────── */ const AntyCtaFinal = ({ onCTA }) => (

Tu navegador privado
para operar Vinted.

Empieza con BASIC. Anty se descarga desde tu panel cliente en cuanto activas la licencia.

● SIN PERMANENCIA · CANCELAS CUANDO QUIERAS · ACCESO BAJO LLAMADA

); /* ── Página completa ───────────────────────────────────────────────────── */ const AntyPage = ({ onNavigate, onCTA }) => { const scrollTo = (id) => { const el = document.getElementById(id); if (el) el.scrollIntoView({ behavior: 'smooth', block: 'start' }); }; return (
); }; window.AntyPage = AntyPage;