{"product_id":"auriculares-inteligentes","title":"Auriculares Bluetooth","description":"\u003cstyle\u003e\n  .big-point {\n    color: white !important;\n  }\n  .reviews-num {\n    color: white !important;\n  }\n\n  body {\n    color: #ebebeb !important;\n  }\n  \n  .tt-head-title {\n    color: white !important;\n  }\n  \n  .number {\n    color: white !important;\n    margin-right: 4px;\n  }\n\n  .star-classify {\n    color: white !important;\n  }\n  .reviews-text {\n    color: black !important;\n  }\n\n  .author-name {\n    color: black !important;\n  }\n\n  .verified-text{\n    color: black !important;\n  }\n\n  .reviews-date{\n    color: black !important;\n  }\n\n  .custom-saving-box {\n    display: none;\n  }\n  .mas-vendido {\n    color: #ebebeb !important;\n  }\n\n  .raiting-perso {\n    color: #ebebeb !important;\n  }\n\n  #rating {\n    color: #ebebeb !important;\n  }\n  #reviews-count {\n    color: #ebebeb !important;\n  }\n\n  #viewer-class {\n    color: #ebebeb !important;\n  }\n\n  .viewer-class {\n    color: #ebebeb !important;\n  }\n\n  .shopify-section section {\n    background-color: #121010 !important;\n  }\n\n  .trustoo-reviews-wrapper {\n    background-color: #121010 !important;\n  }\n\n  .content-for-layout {\n    background-color: #121010;\n  }\n\n  .custom-price-box {\n    background-color: #121010;\n  }\n\n  .custom-product-title {\n    background-color: #121010;\n    padding-top: 16px;\n    color: white;\n  }\n\n  .title1 {\n    display: flex;\n    justify-content: center;\n    color: #1a1a1a;\n  }\n\n  .title {\n    font-size: 3rem;\n    font-weight: 700;\n    display: flex;\n    justify-content: center;\n    padding: 0px 16px !important;\n    margin: 0px !important;\n    text-align: center;\n  }\n\n  .hook {\n    font-size: 2rem;\n    font-weight: 700;\n    display: flex;\n    justify-content: center;\n    padding: 0px 16px !important;\n    margin: 4px 0px !important;\n  }\n\n  .title,\n  .title-wrapper-with-link {\n    margin: 2rem 0px;\n  }\n\n  p {\n    text-align: justify;\n    padding: 4px 16px;\n    margin: 0px;\n  }\n\n  h3 {\n    padding: 4px 16px;\n    text-align: center;\n  }\n\n  img {\n    border-radius: 0px !important;\n    width: 100vw;\n  }\n\n  .texto-amarillo {\n    color: #ff0;\n  }\n  .texto-naranja {\n    color: #f5a623;\n  }\n\n  .horizontal-ticker {\n    display: none;\n  }\n\u003c\/style\u003e\n\n\u003cstyle\u003e\n  \/* Ocultar secciones por defecto *\/\n  .tiktok-bot-content,\n  .normal-visitor-content {\n    display: none;\n  }\n\n  \/* Mostrar contenido según el tipo de visitante *\/\n  body.is-tiktok-bot .tiktok-bot-content {\n    display: block !important;\n  }\n\n  body.is-normal-visitor .normal-visitor-content {\n    display: block !important;\n  }\n\n  \/* Ocultar image-carousel-wrapper solo para bots *\/\n  body.is-tiktok-bot .image-carousel-wrapper {\n    display: none !important;\n\n  }\n\n  \/* Asegurar que se muestre para visitantes normales *\/\n  body.is-normal-visitor .image-carousel-wrapper {\n    display: block !important;\n  }\n\n  \/* Ocultar custom-product-title solo para bots *\/\n  body.is-tiktok-bot .custom-product-title {\n    display: none !important;\n  }\n\n  \/* Asegurar que se muestre para visitantes normales *\/\n  body.is-normal-visitor .custom-product-title {\n    display: block !important;\n  }\n\u003c\/style\u003e\n\n\u003cscript\u003e\n  (function () {\n    \/**\n     * Detecta si el visitante es un bot de TikTok usando múltiples señales\n     * @returns {Object} Objeto con información detallada de la detección\n     *\/\n    function detectTikTokBot() {\n      try {\n        const userAgent = navigator.userAgent.toLowerCase();\n        const referrer = document.referrer.toLowerCase();\n        const urlParams = new URLSearchParams(window.location.search);\n\n        \/\/ Sistema de scoring para mayor precisión\n        let botScore = 0;\n        let detectionSignals = [];\n\n        \/\/ Patrones de bots de TikTok (más completos)\n        const tiktokBotPatterns = [\n          \"bytespider\",\n          \"tiktok\",\n          \"bytedance\",\n          \"musical_ly\",\n          \"ttbot\",\n          \"toutiaospider\",\n          \"bytebot\",\n          \"spider\",\n        ];\n\n        \/\/ 1. Verificar User Agent (peso: 3 puntos)\n        const isBotUserAgent = tiktokBotPatterns.some((pattern) =\u003e\n          userAgent.includes(pattern)\n        );\n        if (isBotUserAgent) {\n          botScore += 3;\n          detectionSignals.push({\n            type: \"user_agent\",\n            value: navigator.userAgent,\n            weight: 3,\n          });\n        }\n\n        \/\/ 2. Verificar Referrer de TikTok (peso: 2 puntos)\n        const isTikTokReferrer =\n          referrer.includes(\"tiktok.com\") ||\n          referrer.includes(\"bytedance.com\") ||\n          referrer.includes(\"musical.ly\");\n        if (isTikTokReferrer \u0026\u0026 !isBotUserAgent) {\n          \/\/ Solo cuenta si NO es User Agent bot (para evitar doble conteo)\n          botScore += 2;\n          detectionSignals.push({\n            type: \"referrer\",\n            value: document.referrer,\n            weight: 2,\n          });\n        }\n\n        \/\/ 3. Verificar parámetros de URL de TikTok Ads (peso: 1 punto)\n        const tiktokUrlParams = [\"ttclid\", \"tt_content\", \"tt_medium\", \"tt_source\"];\n        const hasTikTokParams = tiktokUrlParams.some((param) =\u003e\n          urlParams.has(param)\n        );\n        if (hasTikTokParams) {\n          botScore += 1;\n          const foundParams = tiktokUrlParams.filter((param) =\u003e\n            urlParams.has(param)\n          );\n          detectionSignals.push({\n            type: \"url_params\",\n            value: foundParams.join(\", \"),\n            weight: 1,\n          });\n        }\n\n        \/\/ 4. Validación de navegador real (reduce falsos positivos)\n        \/\/ Los bots suelen tener características limitadas\n        const hasRealBrowserFeatures =\n          typeof window !== \"undefined\" \u0026\u0026\n          typeof document !== \"undefined\" \u0026\u0026\n          typeof navigator !== \"undefined\" \u0026\u0026\n          typeof navigator.userAgent !== \"undefined\" \u0026\u0026\n          typeof document.createElement !== \"undefined\";\n\n        \/\/ Verificar características avanzadas del navegador\n        const hasAdvancedFeatures =\n          typeof window.localStorage !== \"undefined\" ||\n          typeof window.sessionStorage !== \"undefined\" ||\n          typeof WebSocket !== \"undefined\" ||\n          typeof CanvasRenderingContext2D !== \"undefined\";\n\n        \/\/ Si NO tiene características de navegador real y tiene señales de bot\n        if (!hasRealBrowserFeatures || (!hasAdvancedFeatures \u0026\u0026 botScore \u003e 0)) {\n          botScore += 1;\n          detectionSignals.push({\n            type: \"limited_browser_features\",\n            value: \"Navegador limitado detectado\",\n            weight: 1,\n          });\n        }\n\n        \/\/ 5. Verificar si el User Agent es sospechosamente corto o genérico\n        const userAgentLength = navigator.userAgent.length;\n        if (userAgentLength \u003c 20 \u0026\u0026 botScore \u003e 0) {\n          botScore += 1;\n          detectionSignals.push({\n            type: \"short_user_agent\",\n            value: `Longitud: ${userAgentLength} caracteres`,\n            weight: 1,\n          });\n        }\n\n        \/\/ 6. Verificar headers HTTP adicionales (si están disponibles)\n        \/\/ Algunos bots no envían ciertos headers estándar\n\n        \/\/ Umbral de decisión: 3 o más puntos = bot\n        const isBot = botScore \u003e= 3;\n        const confidence = Math.min(100, (botScore \/ 7) * 100);\n\n        return {\n          isBot: isBot,\n          botScore: botScore,\n          confidence: confidence.toFixed(1),\n          signals: detectionSignals,\n          userAgent: navigator.userAgent,\n          referrer: document.referrer,\n          urlParams: Object.fromEntries(urlParams),\n        };\n      } catch (error) {\n        console.error(\"❌ Error en detección de bot:\", error);\n        \/\/ En caso de error, asumir visitante normal por defecto\n        return {\n          isBot: false,\n          botScore: 0,\n          confidence: \"0.0\",\n          signals: [],\n          error: error.message,\n        };\n      }\n    }\n\n    \/**\n     * Aplica las clases CSS según el tipo de visitante\n     *\/\n    function applyVisitorClasses(isBot) {\n      try {\n        if (isBot) {\n          document.body.classList.add(\"is-tiktok-bot\");\n          document.body.classList.remove(\"is-normal-visitor\");\n          console.log(\"🤖 Bot de TikTok detectado - Mostrando contenido para bot\");\n        } else {\n          document.body.classList.add(\"is-normal-visitor\");\n          document.body.classList.remove(\"is-tiktok-bot\");\n          console.log(\"👤 Visitante normal detectado - Mostrando contenido normal\");\n        }\n      } catch (error) {\n        console.error(\"❌ Error al aplicar clases CSS:\", error);\n      }\n    }\n\n    \/\/ Ejecutar detección cuando el DOM esté listo\n    if (document.readyState === \"loading\") {\n      document.addEventListener(\"DOMContentLoaded\", function () {\n        runDetection();\n      });\n    } else {\n      \/\/ DOM ya está listo\n      runDetection();\n    }\n\n    function runDetection() {\n      console.log(\"🔍 Iniciando detección de bot de TikTok...\");\n\n      const detectionResult = detectTikTokBot();\n\n      \/\/ Mostrar información detallada en consola\n      console.group(\"🔍 Resultados de Detección\");\n      console.log(\"Es Bot:\", detectionResult.isBot ? \"✅ SÍ\" : \"❌ NO\");\n      console.log(\"Puntuación:\", detectionResult.botScore + \"\/7\");\n      console.log(\"Confianza:\", detectionResult.confidence + \"%\");\n      console.log(\"Señales detectadas:\", detectionResult.signals.length);\n      if (detectionResult.signals.length \u003e 0) {\n        console.table(detectionResult.signals);\n      }\n      if (detectionResult.error) {\n        console.error(\"Error:\", detectionResult.error);\n      }\n      console.groupEnd();\n\n      \/\/ Aplicar clases CSS\n      applyVisitorClasses(detectionResult.isBot);\n\n    }\n  })();\n\u003c\/script\u003e\n\n\u003cscript\u003e\n  \/\/ Función para cambiar manualmente a vista normal\n  function switchToNormalView() {\n    \/\/ Remover clase de bot\n    document.body.classList.remove('is-tiktok-bot');\n    \/\/ Agregar clase de visitante normal\n    document.body.classList.add('is-normal-visitor');\n    \/\/ Log para debugging\n    console.log('👁️ Vista cambiada manualmente a visitante normal');\n  }\n\n  \/\/ Esperar a que el DOM cargue para agregar el event listener\n  document.addEventListener('DOMContentLoaded', function() {\n    const switchBtn = document.getElementById('switch-to-normal-view');\n    if (switchBtn) {\n      switchBtn.addEventListener('click', switchToNormalView);\n      \n      \/\/ Efecto hover minimalista premium\n      switchBtn.addEventListener('mouseenter', function() {\n        this.style.background = 'linear-gradient(135deg, #2a2a2a 0%, #1d1d1d 100%)';\n        this.style.borderColor = '#d4d4d4';\n        this.style.boxShadow = '0 4px 16px rgba(184, 184, 184, 0.25)';\n        this.style.transform = 'translateY(-1px)';\n      });\n      \n      switchBtn.addEventListener('mouseleave', function() {\n        this.style.background = 'linear-gradient(135deg, #1a1a1a 0%, #0d0d0d 100%)';\n        this.style.borderColor = '#b8b8b8';\n        this.style.boxShadow = '0 2px 12px rgba(184, 184, 184, 0.15)';\n        this.style.transform = 'translateY(0)';\n      });\n    }\n  });\n\u003c\/script\u003e\n\n\u003cdiv style=\"margin: 0px -16px -16px\"\u003e\n  \u003cdiv class=\"tiktok-bot-content\"\u003e\n    \u003cdiv class=\"product-bot-section\"\u003e\n      \u003cimg alt=\"\" src=\"https:\/\/v3azpg-1h.myshopify.com\/cdn\/shop\/files\/img-bot-ok.webp\"\u003e\n      \u003c!-- Botón para cambiar a vista normal --\u003e\n      \u003cdiv style=\"display: flex; justify-content: center; align-items: center; padding: 40px 20px;\"\u003e\n        \u003cbutton id=\"switch-to-normal-view\" style=\"\n          background: linear-gradient(135deg, #1a1a1a 0%, #0d0d0d 100%);\n          color: #ffffff;\n          border: 2.5px solid #b8b8b8;\n          padding: 14px 32px;\n          border-radius: 6px;\n          font-weight: 500;\n          font-size: 15px;\n          letter-spacing: 0.3px;\n          cursor: pointer;\n          box-shadow: 0 2px 12px rgba(184, 184, 184, 0.15);\n          transition: all 0.2s ease;\n          text-align: center;\n          font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n        \"\u003e\n          Ver Contenido Completo\n        \u003c\/button\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"normal-visitor-content\"\u003e\n    \u003cdiv class=\"product-normal-section\"\u003e\n      \u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0783\/6837\/5028\/files\/pods01.webp\"\u003e\n      \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0783\/6837\/5028\/files\/pods02.webp\" alt=\"\"\u003e\n      \u003ca href=\"\/rsi-btn-hook\"\u003e\u003c\/a\u003e\n\n      \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0783\/6837\/5028\/files\/7.webp?v=1761879620\" alt=\"\"\u003e\n      \u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0783\/6837\/5028\/files\/pods04.gif\"\u003e\n      \u003cdiv\u003e\n        \u003cspan class=\"title\"\u003e SUMERGETE EN UN SONIDO PURO Y POTENTE 🔊 \u003c\/span\u003e\n        \u003cp\u003e\n          Disfruta de tu música y llamadas con una claridad increíble\n          \u003cstrong\u003egracias a la cancelación activa de ruido superior.\u003c\/strong\u003e\n        \u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0783\/6837\/5028\/files\/pods05.gif\" alt=\"\"\u003e\n      \u003cdiv\u003e\n        \u003cspan class=\"title\"\u003e Todo esta al alcance de tus dedos 📲 \u003c\/span\u003e\n        \u003cp\u003e\n          Disfruta de tu música y llamadas con una claridad increíble\n          \u003cstrong\u003egracias a la cancelación activa de ruido superior.\u003c\/strong\u003e\n        \u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0783\/6837\/5028\/files\/pods10.webp\" alt=\"\"\u003e\n      \u003cdiv\u003e\n        \u003cspan class=\"title\"\u003e OLVIDATE DE QUEDARTE SIN BATERIA 🔋 \u003c\/span\u003e\n        \u003cp\u003e\n          Disfruta de \u003cstrong\u003ehasta 30 horas de audio\u003c\/strong\u003e con el estuche de\n          carga rápida inalámbrica, tu música te acompaña en cada momento de tu\n          día\n        \u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003ca href=\"\/rsi-btn-hook\"\u003e\u003c\/a\u003e\n\n      \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0783\/6837\/5028\/files\/pods07.webp\" alt=\"\"\u003e\n      \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0783\/6837\/5028\/files\/pods08.webp\" alt=\"\"\u003e\n      \u003cspan class=\"hook\"\u003e + de 10k unidades vendidas el mes pasado \u003c\/span\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003cstrong\u003eCarga rápida e inalámbrica 🔋\u003c\/strong\u003e\u003c\/li\u003e\n        \u003cli\u003e\u003cstrong\u003eCancelación de ruido activa y pasiva 🔇\u003c\/strong\u003e\u003c\/li\u003e\n        \u003cli\u003e\n          \u003cstrong\u003e\n            Funciones táctiles para música, volumen y llamadas 📲\u003c\/strong\u003e\n        \u003c\/li\u003e\n      \u003c\/ul\u003e\n\n      \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0783\/6837\/5028\/files\/pods09.webp\" alt=\"\"\u003e\n      \u003ca href=\"\/rsi-btn-hook\"\u003e\u003c\/a\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n","brand":"MeliReco02","offers":[{"title":"Default Title","offer_id":40958655234112,"sku":null,"price":79900.0,"currency_code":"COP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0604\/4191\/9552\/files\/pods02_dc54c004-78a2-4934-a80c-5a2075a972fc.webp?v=1775344325","url":"https:\/\/terecomienda.shop\/products\/auriculares-inteligentes","provider":"Tienda Abril 01","version":"1.0","type":"link"}