




{"id":846,"date":"2024-09-03T15:33:33","date_gmt":"2024-09-03T13:33:33","guid":{"rendered":"https:\/\/pacific-webtools.com\/web-extractor\/?p=846"},"modified":"2024-09-03T15:34:39","modified_gmt":"2024-09-03T13:34:39","slug":"analyseur-de-technologies-web-et-cms","status":"publish","type":"post","link":"https:\/\/pacific-webtools.com\/web-extractor\/analyseur-de-technologies-web-et-cms\/","title":{"rendered":"Analyseur de Technologies Web et CMS"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"846\" class=\"elementor elementor-846\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a1c52ee e-con-full e-flex e-con e-parent\" data-id=\"a1c52ee\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-47eaa7e elementor-widget elementor-widget-html\" data-id=\"47eaa7e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<html>\n<head>\n  <base href=\"https:\/\/tech-stack-analyzer.example.com\/?\">\n  <meta charset=\"UTF-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  <title>Pacific Stack & CMS Extractor - Analyseur de Technologies Web<\/title>\n  <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Roboto:wght@300;400;700&display=swap\" rel=\"stylesheet\">\n  <link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.1.1\/css\/all.min.css\">\n  <style>\n    body, html {\n      font-family: 'Roboto', sans-serif;\n      line-height: 1.6;\n      color: #333;\n      margin: 0;\n      padding: 0;\n      height: 100%;\n      background-color: #f0f4f8;\n      text-align: center;\n    }\n    .hero {\n      position: relative;\n      min-height: 100vh;\n      display: flex;\n      flex-direction: column;\n      justify-content: center;\n      align-items: center;\n      background-color: #3498db;\n      color: white;\n      text-align: center;\n      padding: 20px;\n      overflow: hidden;\n    }\n    #matrix-canvas {\n      position: absolute;\n      top: 0;\n      left: 0;\n      width: 100%;\n      height: 100%;\n      z-index: 1;\n    }\n    .hero-content {\n      position: relative;\n      z-index: 2;\n      max-width: 800px;\n      margin: 0 auto;\n    }\n    .hero h1 {\n      font-size: 2.5rem;\n      margin-bottom: 30px;\n    }\n    .hero p {\n      font-size: 1rem;\n      margin-bottom: 30px;\n      text-align: justify;\n    }\n    #url-form {\n      display: flex;\n      margin-bottom: 20px;\n      width: 100%;\n      max-width: 600px;\n      margin-left: auto;\n      margin-right: auto;\n    }\n    #url-input {\n      flex-grow: 1;\n      padding: 12px;\n      font-size: 16px;\n      border: 2px solid #fff;\n      border-radius: 4px 0 0 4px;\n    }\n    #submit-btn {\n      padding: 12px 24px;\n      font-size: 16px;\n      background-color: #fff;\n      color: #3498db;\n      border: none;\n      border-radius: 0 4px 4px 0;\n      cursor: pointer;\n      transition: background-color 0.3s, color 0.3s;\n      display: flex;\n      align-items: center;\n    }\n    #submit-btn i {\n      margin-right: 8px;\n    }\n    #submit-btn:hover {\n      background-color: #3498db;\n      color: #fff;\n    }\n    .container {\n      max-width: 1200px;\n      margin: 0 auto;\n      padding: 20px;\n    }\n    #result {\n      background-color: white;\n      padding: 20px;\n      border-radius: 8px;\n      box-shadow: 0 4px 6px rgba(0,0,0,0.1);\n      display: none;\n    }\n    .tech-category {\n      margin-bottom: 40px;\n    }\n    .tech-category h3 {\n      margin-top: 0;\n      color: #34495e;\n      text-align: center;\n      font-size: 24px;\n      margin-bottom: 20px;\n    }\n    .tech-cards {\n      display: flex;\n      flex-wrap: wrap;\n      justify-content: center;\n      gap: 20px;\n    }\n    .tech-card {\n      background-color: #fff;\n      border-radius: 10px;\n      box-shadow: 0 4px 6px rgba(0,0,0,0.1);\n      padding: 20px;\n      width: 200px;\n      text-align: center;\n      transition: transform 0.3s ease;\n    }\n    .tech-card:hover {\n      transform: translateY(-5px);\n    }\n    .tech-logo {\n      width: 80px;\n      height: 80px;\n      border-radius: 50%;\n      margin: 0 auto 15px;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      background-color: #f0f4f8;\n      overflow: hidden;\n    }\n    .tech-logo img {\n      max-width: 60%;\n      max-height: 60%;\n    }\n    .tech-name {\n      font-weight: bold;\n      margin-bottom: 5px;\n    }\n    .tech-version {\n      font-size: 14px;\n      color: #7f8c8d;\n    }\n    .loading {\n      display: none;\n      position: absolute;\n      top: 50%;\n      left: 50%;\n      transform: translate(-50%, -50%);\n      flex-direction: column;\n      align-items: center;\n      justify-content: center;\n      z-index: 10;\n    }\n    .loading-spinner {\n      width: 100px;\n      height: 100px;\n      border: 8px solid rgba(255, 255, 255, 0.3);\n      border-top: 8px solid #ffffff;\n      border-radius: 50%;\n      animation: spin 1s linear infinite, pulse 2s ease-in-out infinite;\n    }\n    .loading-text {\n      margin-top: 20px;\n      font-size: 24px;\n      font-weight: bold;\n      color: #ffffff;\n      text-transform: uppercase;\n      letter-spacing: 2px;\n      animation: pulse 2s ease-in-out infinite;\n    }\n    @keyframes spin {\n      0% { transform: rotate(0deg); }\n      100% { transform: rotate(360deg); }\n    }\n    @keyframes pulse {\n      0% { opacity: 0.6; transform: scale(1); }\n      50% { opacity: 1; transform: scale(1.05); }\n      100% { opacity: 0.6; transform: scale(1); }\n    }\n    .error {\n      color: #e74c3c;\n      font-weight: bold;\n      text-align: center;\n    }\n    .download-btn {\n      display: inline-flex;\n      align-items: center;\n      padding: 8px 16px;\n      background-color: #3498db;\n      color: white;\n      text-decoration: none;\n      border-radius: 4px;\n      font-weight: bold;\n      margin-top: 10px;\n      transition: background-color 0.3s;\n    }\n    .download-btn i {\n      margin-right: 8px;\n    }\n    .download-btn:hover {\n      background-color: #2980b9;\n    }\n    .site-info {\n      background-color: #fff;\n      border-radius: 8px;\n      box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n      padding: 20px;\n      margin-bottom: 30px;\n      text-align: left;\n      display: flex;\n      align-items: center;\n    }\n    .site-favicon {\n      width: 32px;\n      height: 32px;\n      margin-right: 15px;\n    }\n    .site-details {\n      flex-grow: 1;\n    }\n    .site-name {\n      font-size: 18px;\n      font-weight: bold;\n      margin-bottom: 5px;\n      color: #1a0dab;\n    }\n    .site-url {\n      font-size: 14px;\n      color: #006621;\n      margin-bottom: 5px;\n    }\n    .site-description {\n      font-size: 14px;\n      color: #545454;\n    }\n    @media (max-width: 768px) {\n      .tech-card {\n        width: calc(50% - 20px);\n      }\n      .hero h1 {\n        font-size: 2rem;\n      }\n      .hero p {\n        font-size: 0.9rem;\n      }\n    }\n    @media (max-width: 480px) {\n      .tech-card {\n        width: 100%;\n      }\n      .hero h1 {\n        font-size: 1.5rem;\n      }\n      .hero p {\n        font-size: 0.8rem;\n      }\n    }\n  <\/style>\n<\/head>\n<body>\n  <div class=\"hero\">\n    <canvas id=\"matrix-canvas\"><\/canvas>\n    <div class=\"hero-content\">\n      <h1>Pacific Stack & CMS Extractor<\/h1>\n      <p>D\u00e9couvrez notre outil d'analyse de stack technologique avanc\u00e9, con\u00e7u pour r\u00e9v\u00e9ler les secrets cach\u00e9s derri\u00e8re chaque site web. Que vous soyez d\u00e9veloppeur, marketeur digital ou simplement curieux, notre extracteur de CMS et de technologies vous offre un aper\u00e7u complet des frameworks, langages et outils utilis\u00e9s par n'importe quel site. Explorez les fondations techniques, identifiez les CMS populaires, et obtenez des insights pr\u00e9cieux sur les choix technologiques de vos concurrents ou de vos sites pr\u00e9f\u00e9r\u00e9s. Avec Pacific Stack & CMS Extractor, plongez au c\u0153ur de l'architecture web en un seul clic !<\/p>\n      <form id=\"url-form\">\n        <input type=\"url\" id=\"url-input\" placeholder=\"Entrez l'URL du site web\" required>\n        <button type=\"submit\" id=\"submit-btn\"><i class=\"fas fa-search\"><\/i> Analyser<\/button>\n      <\/form>\n    <\/div>\n    <div class=\"loading\">\n      <div class=\"loading-spinner\"><\/div>\n      <p class=\"loading-text\">Analyse en cours...<\/p>\n    <\/div>\n  <\/div>\n  \n  <div class=\"container\">\n    <div id=\"result\" style=\"display: none;\"><\/div>\n  <\/div>\n\n  <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/axios\/0.21.1\/axios.min.js\"><\/script>\n  <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/FileSaver.js\/2.0.5\/FileSaver.min.js\"><\/script>\n  <script>\n    const form = document.getElementById('url-form');\n    const urlInput = document.getElementById('url-input');\n    const resultDiv = document.getElementById('result');\n    const loadingDiv = document.querySelector('.loading');\n    const submitBtn = document.getElementById('submit-btn');\n\n    const techSignatures = {\n      \/\/ Frontend\n      'React': \/<(?:div|span) data-reactroot\/i,\n      'Vue.js': \/<div id=\"app\">\/i,\n      'Angular': \/<app-root\/i,\n      'jQuery': \/jquery\/i,\n      'Bootstrap': \/<link[^>]*bootstrap\/i,\n      'Tailwind CSS': \/<link[^>]*tailwind\/i,\n\n      \/\/ Backend\n      'PHP': \/<\\?php\/i,\n      'Node.js': \/node_modules\/i,\n      'Ruby on Rails': \/<meta name=\"csrf-param\" content=\"\/i,\n      'Django': \/__admin_media_prefix__\/i,\n      'ASP.NET': \/<input name=\"__VIEWSTATE\" type=\"hidden\"\/i,\n      'Laravel': \/<meta name=\"csrf-token\"\/i,\n      'Spring': \/org\\.springframework\/i,\n      'Express.js': \/x-powered-by: Express\/i,\n\n      \/\/ CMS\n      'WordPress': \/<link[^>]*wp-content\/i,\n      'Shopify': \/<link[^>]*shopify\/i,\n      'Joomla': \/<meta name=\"generator\" content=\"Joomla!\/i,\n      'Drupal': \/<meta name=\"Generator\" content=\"Drupal\/i,\n      'Magento': \/<script type=\"text\\\/x-magento-init\">\/i,\n      'TYPO3': \/<link[^>]*typo3temp\/i,\n      'Ghost': \/<link rel=\"stylesheet\" type=\"text\\\/css\" href=\"[^\"]*\\\/assets\\\/built\\\/screen\\.css\/i,\n      'Wix': \/<meta name=\"generator\" content=\"Wix.com\/i, \/\/ Wix detection\n\n      \/\/ E-commerce\n      'WooCommerce': \/<link[^>]*woocommerce\/i,\n      'PrestaShop': \/<meta name=\"generator\" content=\"PrestaShop\"\/i,\n\n      \/\/ JavaScript frameworks\n      'Next.js': \/__NEXT_DATA__\/i,\n      'Nuxt.js': \/__NUXT__\/i,\n\n      \/\/ Databases\n      'MySQL': \/mysql\/i,\n      'PostgreSQL': \/postgresql\/i,\n      'MongoDB': \/mongodb\/i,\n\n      \/\/ Web servers\n      'Apache': \/apache\/i,\n      'Nginx': \/nginx\/i,\n\n      \/\/ Security\n      'SSL\/TLS': \/https:\\\/\\\/\/i,\n      'Cloudflare': \/cloudflare\/i,\n      'reCAPTCHA': \/recaptcha\/i,\n\n      \/\/ Analytics\n      'Google Analytics': \/google-analytics.com\\\/analytics.js\/i,\n      'Matomo': \/matomo.js\/i,\n\n      \/\/ CDN Detection\n      'Cloudflare CDN': \/cdn\\.cloudflare\\.com\/i,\n      'Akamai CDN': \/akamaiedge\\.net\/i,\n      'Amazon CloudFront': \/cloudfront\\.net\/i,\n      'Google CDN': \/googleusercontent\\.com\/i,\n\n      \/\/ API Detection\n      'Google Maps API': \/maps\\.googleapis\\.com\/i,\n      'Facebook SDK': \/connect\\.facebook\\.net\/i,\n      'Twitter API': \/platform\\.twitter\\.com\/i,\n\n      \/\/ Miscellaneous\n      'Font Awesome': \/font-awesome\/i,\n      'Axios': \/axios\/i,\n      'Lodash': \/lodash\/i,\n\n      \/\/ Programming Languages\n      'Python': \/\\.py\\b|python\/i,\n      'JavaScript': \/<script[^>]*\\b(src|type)=\"[^\"]*\\.js\"\/i,\n      'Ruby': \/\\.rb\\b|ruby\/i,\n      'PHP Language': \/<\\?php\/i,\n      'Java': \/\\.jsp\\b|\\.jspx\\b|java\/i,\n      'C#': \/\\.cs\\b|\\.aspx\\b|asp\\.net\/i,\n      'Go': \/\\.go\\b|golang\/i\n    };\n\n    form.addEventListener('submit', async (e) => {\n      e.preventDefault();\n      const url = urlInput.value.trim();\n      if (!url) return;\n\n      loadingDiv.style.display = 'flex';\n      resultDiv.style.display = 'none';\n      submitBtn.innerHTML = '<i class=\"fas fa-circle-notch fa-spin\"><\/i> Analyse en cours...';\n      submitBtn.disabled = true;\n\n      try {\n        const response = await axios.get(`https:\/\/api.allorigins.win\/get?url=${encodeURIComponent(url)}`);\n        const content = response.data.contents;\n        const headers = response.data.status.headers;\n\n        const technologies = await detectTechnologies(content, url, headers);\n        const siteInfo = await getSiteInfo(url, content);\n        displayResults(technologies, url, siteInfo);\n        \n        \/\/ Change button to \"R\u00e9initialiser\"\n        submitBtn.innerHTML = '<i class=\"fas fa-redo\"><\/i> R\u00e9initialiser';\n        submitBtn.disabled = false;\n        submitBtn.onclick = resetSearch;\n      } catch (error) {\n        resultDiv.innerHTML = `<p class=\"error\">Erreur lors de l'analyse : ${error.message}<\/p>`;\n        resultDiv.style.display = 'block';\n        submitBtn.innerHTML = '<i class=\"fas fa-search\"><\/i> Analyser';\n        submitBtn.disabled = false;\n      } finally {\n        loadingDiv.style.display = 'none';\n      }\n    });\n\n    function resetSearch(e) {\n      e.preventDefault();\n      urlInput.value = '';\n      resultDiv.style.display = 'none';\n      submitBtn.innerHTML = '<i class=\"fas fa-search\"><\/i> Analyser';\n      submitBtn.onclick = null;\n    }\n\n    async function detectTechnologies(content, url, headers) {\n      const technologies = {\n        frontend: [],\n        backend: [],\n        cms: [],\n        ecommerce: [],\n        javascript: [],\n        database: [],\n        webserver: [],\n        security: [],\n        analytics: [],\n        cdn: [], \/\/ New category for CDN\n        api: [], \/\/ New category for APIs\n        programming_languages: [], \/\/ New category for programming languages\n        misc: []\n      };\n\n      for (const [tech, regex] of Object.entries(techSignatures)) {\n        if (regex.test(content) || (headers && regex.test(JSON.stringify(headers)))) {\n          const category = getTechCategory(tech);\n          technologies[category].push({ name: tech, version: 'D\u00e9tect\u00e9' });\n        }\n      }\n\n      \/\/ D\u00e9tection du CMS et de sa version\n      const cmsDetected = technologies.cms.length > 0 ? technologies.cms[0].name : null;\n      if (cmsDetected) {\n        const cmsVersion = await detectCMSVersion(cmsDetected, url, content);\n        technologies.cms[0].version = cmsVersion || 'Version non d\u00e9tect\u00e9e';\n\n        \/\/ D\u00e9tection des plugins\n        const plugins = await detectPlugins(cmsDetected, url, content);\n        if (plugins.length > 0) {\n          technologies.cms.push(...plugins);\n        }\n      }\n\n      return technologies;\n    }\n\n    function getTechCategory(tech) {\n      const categories = {\n        frontend: ['React', 'Vue.js', 'Angular', 'jQuery', 'Bootstrap', 'Tailwind CSS'],\n        backend: ['PHP', 'Node.js', 'Ruby on Rails', 'Django', 'ASP.NET', 'Laravel', 'Spring', 'Express.js'],\n        cms: ['WordPress', 'Shopify', 'Joomla', 'Drupal', 'Magento', 'TYPO3', 'Ghost', 'Wix'], \/\/ Added Wix\n        ecommerce: ['WooCommerce', 'PrestaShop'],\n        javascript: ['Next.js', 'Nuxt.js'],\n        database: ['MySQL', 'PostgreSQL', 'MongoDB'],\n        webserver: ['Apache', 'Nginx'],\n        security: ['SSL\/TLS', 'Cloudflare', 'reCAPTCHA'],\n        analytics: ['Google Analytics', 'Matomo'],\n        cdn: ['Cloudflare CDN', 'Akamai CDN', 'Amazon CloudFront', 'Google CDN'], \/\/ New category for CDN\n        api: ['Google Maps API', 'Facebook SDK', 'Twitter API'], \/\/ New category for APIs\n        programming_languages: ['Python', 'JavaScript', 'Ruby', 'PHP Language', 'Java', 'C#', 'Go'], \/\/ New category for programming languages\n        misc: ['Font Awesome', 'Axios', 'Lodash']\n      };\n\n      for (const [category, techs] of Object.entries(categories)) {\n        if (techs.includes(tech)) {\n          return category;\n        }\n      }\n\n      return 'misc';\n    }\n\n    async function detectCMSVersion(cms, url, content) {\n      switch (cms.toLowerCase()) {\n        case 'wordpress':\n          const wpVersionMatch = content.match(\/wp-includes\\\/js\\\/wp-embed\\.min\\.js\\?ver=([\\d.]+)\/);\n          if (wpVersionMatch) return wpVersionMatch[1];\n\n          const wpGeneratorMatch = content.match(\/<meta name=\"generator\" content=\"WordPress ([\\d.]+)\/i);\n          return wpGeneratorMatch ? wpGeneratorMatch[1] : null;\n\n        case 'joomla':\n          const joomlaVersionMatch = content.match(\/<meta name=\"generator\" content=\"Joomla! ([\\d.]+)\/i);\n          return joomlaVersionMatch ? joomlaVersionMatch[1] : null;\n\n        case 'drupal':\n          const drupalVersionMatch = content.match(\/<meta name=\"Generator\" content=\"Drupal ([\\d.]+)\/i);\n          return drupalVersionMatch ? drupalVersionMatch[1] : null;\n\n        case 'shopify':\n          const shopifyVersionMatch = content.match(\/<meta name=\"shopify-digital-cookies\" content=\"([\\d.]+)\/i);\n          return shopifyVersionMatch ? shopifyVersionMatch[1] : null;\n\n        case 'ghost':\n          const ghostVersionMatch = content.match(\/<meta name=\"generator\" content=\"Ghost ([\\d.]+)\/i);\n          return ghostVersionMatch ? ghostVersionMatch[1] : null;\n\n        default:\n          return null;\n      }\n    }\n\n    async function detectPlugins(cms, url, content) {\n      const plugins = [];\n\n      switch (cms.toLowerCase()) {\n        case 'wordpress':\n          const wpPluginRegex = \/\\\/wp-content\\\/plugins\\\/([^\\\/]+)\\\/\/g;\n          let match;\n          while ((match = wpPluginRegex.exec(content)) !== null) {\n            const pluginName = match[1].replace(\/-\/g, ' ');\n            if (!plugins.some(p => p.name === pluginName)) {\n              plugins.push({\n                name: pluginName,\n                version: 'Plugin d\u00e9tect\u00e9'\n              });\n            }\n          }\n          break;\n        case 'joomla':\n          const joomlaPluginRegex = \/\\\/plugins\\\/([^\\\/]+)\\\/\/g;\n          while ((match = joomlaPluginRegex.exec(content)) !== null) {\n            const pluginName = match[1].replace(\/-\/g, ' ');\n            if (!plugins.some(p => p.name === pluginName)) {\n              plugins.push({\n                name: pluginName,\n                version: 'Plugin d\u00e9tect\u00e9'\n              });\n            }\n          }\n          break;\n        case 'drupal':\n          const drupalModuleRegex = \/\\\/modules\\\/([^\\\/]+)\\\/\/g;\n          while ((match = drupalModuleRegex.exec(content)) !== null) {\n            const moduleName = match[1].replace(\/-\/g, ' ');\n            if (!plugins.some(p => p.name === moduleName)) {\n              plugins.push({\n                name: moduleName,\n                version: 'Module d\u00e9tect\u00e9'\n              });\n            }\n          }\n          break;\n        case 'wix': \/\/ Example for detecting Wix plugins (this is a placeholder and may need adjustment based on actual data)\n          const wixAppRegex = \/\\\/wix-code\\\/([^\\\/]+)\\\/\/g;\n          while ((match = wixAppRegex.exec(content)) !== null) {\n            const appName = match[1].replace(\/-\/g, ' ');\n            if (!plugins.some(p => p.name === appName)) {\n              plugins.push({\n                name: appName,\n                version: 'App d\u00e9tect\u00e9e'\n              });\n            }\n          }\n          break;\n      }\n\n      return plugins;\n    }\n\n    async function getSiteInfo(url, content) {\n      const parser = new DOMParser();\n      const doc = parser.parseFromString(content, 'text\/html');\n\n      const siteName = doc.querySelector('title') ? doc.querySelector('title').textContent : url;\n      const metaDescription = doc.querySelector('meta[name=\"description\"]') ? doc.querySelector('meta[name=\"description\"]').getAttribute('content') : 'Aucune description disponible';\n\n      return {\n        name: siteName,\n        url: url,\n        description: metaDescription,\n        favicon: `https:\/\/www.google.com\/s2\/favicons?domain=${url}`\n      };\n    }\n\n    function displayResults(technologies, url, siteInfo) {\n      let html = `\n        <div class=\"site-info\">\n          <img decoding=\"async\" src=\"${siteInfo.favicon}\" alt=\"Favicon\" class=\"site-favicon\">\n          <div class=\"site-details\">\n            <div class=\"site-name\">${siteInfo.name}<\/div>\n            <div class=\"site-url\">${siteInfo.url}<\/div>\n            <div class=\"site-description\">${siteInfo.description}<\/div>\n          <\/div>\n        <\/div>\n      `;\n\n      for (const [category, techs] of Object.entries(technologies)) {\n        if (techs.length > 0) {\n          html += `<div class=\"tech-category\">\n                     <h3>${capitalizeFirstLetter(category)}<\/h3>\n                     <div class=\"tech-cards\">`;\n\n          techs.forEach(tech => {\n            html += `<div class=\"tech-card\">\n                       <div class=\"tech-logo\">\n                         <img decoding=\"async\" src=\"https:\/\/logo.clearbit.com\/${tech.name.toLowerCase().replace(\/\\s+\/g, '')}.com\" alt=\"${tech.name} logo\" onerror=\"this.src='https:\/\/via.placeholder.com\/80';\">\n                       <\/div>\n                       <div class=\"tech-name\">${tech.name}<\/div>\n                       <div class=\"tech-version\">${tech.version}<\/div>\n                     <\/div>`;\n          });\n\n          html += `<\/div><\/div>`;\n        }\n      }\n\n      resultDiv.innerHTML = html;\n      resultDiv.style.display = 'block';\n    }\n\n    function capitalizeFirstLetter(string) {\n      return string.charAt(0).toUpperCase() + string.slice(1);\n    }\n\n    \/\/ Animation Matrix\n    const canvas = document.getElementById('matrix-canvas');\n    const ctx = canvas.getContext('2d');\n\n    canvas.width = window.innerWidth;\n    canvas.height = window.innerHeight;\n\n    const katakana = '\u30a2\u30a1\u30ab\u30b5\u30bf\u30ca\u30cf\u30de\u30e4\u30e3\u30e9\u30ef\u30ac\u30b6\u30c0\u30d0\u30d1\u30a4\u30a3\u30ad\u30b7\u30c1\u30cb\u30d2\u30df\u30ea\u30f0\u30ae\u30b8\u30c2\u30d3\u30d4\u30a6\u30a5\u30af\u30b9\u30c4\u30cc\u30d5\u30e0\u30e6\u30e5\u30eb\u30b0\u30ba\u30d6\u30c5\u30d7\u30a8\u30a7\u30b1\u30bb\u30c6\u30cd\u30d8\u30e1\u30ec\u30f1\u30b2\u30bc\u30c7\u30d9\u30da\u30aa\u30a9\u30b3\u30bd\u30c8\u30ce\u30db\u30e2\u30e8\u30e7\u30ed\u30f2\u30b4\u30be\u30c9\u30dc\u30dd\u30f4\u30c3\u30f3';\n    const latin = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';\n    const nums = '0123456789';\n\n    const alphabet = katakana + latin + nums;\n\n    const fontSize = 16;\n    const columns = canvas.width \/ fontSize;\n\n    const rainDrops = [];\n\n    for (let x = 0; x < columns; x++) {\n      rainDrops[x] = 1;\n    }\n\n    function draw() {\n      ctx.fillStyle = 'rgba(52, 152, 219, 0.05)';\n      ctx.fillRect(0, 0, canvas.width, canvas.height);\n\n      ctx.fillStyle = '#ffffff';\n      ctx.font = fontSize + 'px monospace';\n\n      for (let i = 0; i < rainDrops.length; i++) {\n        const text = alphabet.charAt(Math.floor(Math.random() * alphabet.length));\n        ctx.fillText(text, i * fontSize, rainDrops[i] * fontSize);\n\n        if (rainDrops[i] * fontSize > canvas.height && Math.random() > 0.975) {\n          rainDrops[i] = 0;\n        }\n        rainDrops[i]++;\n      }\n    }\n\n    setInterval(draw, 30);\n\n    window.addEventListener('resize', () => {\n      canvas.width = window.innerWidth;\n      canvas.height = window.innerHeight;\n    });\n  <\/script>\n<\/body>\n<\/html>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Pacific Stack &#038; CMS Extractor &#8211; Analyseur de Technologies Web Pacific Stack &#038; CMS Extractor D\u00e9couvrez notre outil d&rsquo;analyse de stack technologique avanc\u00e9, con\u00e7u pour r\u00e9v\u00e9ler les secrets cach\u00e9s derri\u00e8re chaque site web. Que vous soyez d\u00e9veloppeur, marketeur digital ou simplement curieux, notre extracteur de CMS et de technologies vous offre un aper\u00e7u complet des [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":848,"comment_status":"open","ping_status":"open","sticky":false,"template":"elementor_header_footer","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-846","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-web-ressources"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Analyseur de Technologies Web et CMS - Web Extractor<\/title>\n<meta name=\"description\" content=\"Analysez les stacks technologiques et CMS des sites web avec Pacific Stack &amp; CMS Extractor. Obtenez des insights instantan\u00e9s.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/pacific-webtools.com\/web-extractor\/analyseur-de-technologies-web-et-cms\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Analyseur de Technologies Web et CMS - Web Extractor\" \/>\n<meta property=\"og:description\" content=\"Analysez les stacks technologiques et CMS des sites web avec Pacific Stack &amp; CMS Extractor. Obtenez des insights instantan\u00e9s.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/pacific-webtools.com\/web-extractor\/analyseur-de-technologies-web-et-cms\/\" \/>\n<meta property=\"og:site_name\" content=\"Web Extractor\" \/>\n<meta property=\"article:published_time\" content=\"2024-09-03T13:33:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-03T13:34:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/pacific-webtools.com\/web-extractor\/wp-content\/uploads\/2024\/09\/pacific-cms.png\" \/>\n\t<meta property=\"og:image:width\" content=\"710\" \/>\n\t<meta property=\"og:image:height\" content=\"714\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/pacific-webtools.com\/web-extractor\/analyseur-de-technologies-web-et-cms\/\",\"url\":\"https:\/\/pacific-webtools.com\/web-extractor\/analyseur-de-technologies-web-et-cms\/\",\"name\":\"Analyseur de Technologies Web et CMS - Web Extractor\",\"isPartOf\":{\"@id\":\"https:\/\/pacific-webtools.com\/web-extractor\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/pacific-webtools.com\/web-extractor\/analyseur-de-technologies-web-et-cms\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/pacific-webtools.com\/web-extractor\/analyseur-de-technologies-web-et-cms\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/pacific-webtools.com\/web-extractor\/wp-content\/uploads\/2024\/09\/pacific-cms.webp\",\"datePublished\":\"2024-09-03T13:33:33+00:00\",\"dateModified\":\"2024-09-03T13:34:39+00:00\",\"author\":{\"@id\":\"https:\/\/pacific-webtools.com\/web-extractor\/#\/schema\/person\/0f95670ed0b3b265a488dae146fdda48\"},\"description\":\"Analysez les stacks technologiques et CMS des sites web avec Pacific Stack & CMS Extractor. Obtenez des insights instantan\u00e9s.\",\"breadcrumb\":{\"@id\":\"https:\/\/pacific-webtools.com\/web-extractor\/analyseur-de-technologies-web-et-cms\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/pacific-webtools.com\/web-extractor\/analyseur-de-technologies-web-et-cms\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/pacific-webtools.com\/web-extractor\/analyseur-de-technologies-web-et-cms\/#primaryimage\",\"url\":\"https:\/\/pacific-webtools.com\/web-extractor\/wp-content\/uploads\/2024\/09\/pacific-cms.webp\",\"contentUrl\":\"https:\/\/pacific-webtools.com\/web-extractor\/wp-content\/uploads\/2024\/09\/pacific-cms.webp\",\"width\":710,\"height\":714,\"caption\":\"Analyseur de technologies web et CMS avec Pacific Stack & CMS Extractor.\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/pacific-webtools.com\/web-extractor\/analyseur-de-technologies-web-et-cms\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/pacific-webtools.com\/web-extractor\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Analyseur de Technologies Web et CMS\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/pacific-webtools.com\/web-extractor\/#website\",\"url\":\"https:\/\/pacific-webtools.com\/web-extractor\/\",\"name\":\"Web Extractor\",\"description\":\"Extracteur de Code\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/pacific-webtools.com\/web-extractor\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/pacific-webtools.com\/web-extractor\/#\/schema\/person\/0f95670ed0b3b265a488dae146fdda48\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/pacific-webtools.com\/web-extractor\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/94a5a2d7ac834dce40e1e25743dcb576?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/94a5a2d7ac834dce40e1e25743dcb576?s=96&d=mm&r=g\",\"caption\":\"admin\"},\"sameAs\":[\"https:\/\/pacific-webtools.com\/web-extractor\"],\"url\":\"https:\/\/pacific-webtools.com\/web-extractor\/author\/admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Analyseur de Technologies Web et CMS - Web Extractor","description":"Analysez les stacks technologiques et CMS des sites web avec Pacific Stack & CMS Extractor. Obtenez des insights instantan\u00e9s.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/pacific-webtools.com\/web-extractor\/analyseur-de-technologies-web-et-cms\/","og_locale":"fr_FR","og_type":"article","og_title":"Analyseur de Technologies Web et CMS - Web Extractor","og_description":"Analysez les stacks technologiques et CMS des sites web avec Pacific Stack & CMS Extractor. Obtenez des insights instantan\u00e9s.","og_url":"https:\/\/pacific-webtools.com\/web-extractor\/analyseur-de-technologies-web-et-cms\/","og_site_name":"Web Extractor","article_published_time":"2024-09-03T13:33:33+00:00","article_modified_time":"2024-09-03T13:34:39+00:00","og_image":[{"width":710,"height":714,"url":"https:\/\/pacific-webtools.com\/web-extractor\/wp-content\/uploads\/2024\/09\/pacific-cms.png","type":"image\/png"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"admin","Dur\u00e9e de lecture estim\u00e9e":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/pacific-webtools.com\/web-extractor\/analyseur-de-technologies-web-et-cms\/","url":"https:\/\/pacific-webtools.com\/web-extractor\/analyseur-de-technologies-web-et-cms\/","name":"Analyseur de Technologies Web et CMS - Web Extractor","isPartOf":{"@id":"https:\/\/pacific-webtools.com\/web-extractor\/#website"},"primaryImageOfPage":{"@id":"https:\/\/pacific-webtools.com\/web-extractor\/analyseur-de-technologies-web-et-cms\/#primaryimage"},"image":{"@id":"https:\/\/pacific-webtools.com\/web-extractor\/analyseur-de-technologies-web-et-cms\/#primaryimage"},"thumbnailUrl":"https:\/\/pacific-webtools.com\/web-extractor\/wp-content\/uploads\/2024\/09\/pacific-cms.webp","datePublished":"2024-09-03T13:33:33+00:00","dateModified":"2024-09-03T13:34:39+00:00","author":{"@id":"https:\/\/pacific-webtools.com\/web-extractor\/#\/schema\/person\/0f95670ed0b3b265a488dae146fdda48"},"description":"Analysez les stacks technologiques et CMS des sites web avec Pacific Stack & CMS Extractor. Obtenez des insights instantan\u00e9s.","breadcrumb":{"@id":"https:\/\/pacific-webtools.com\/web-extractor\/analyseur-de-technologies-web-et-cms\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/pacific-webtools.com\/web-extractor\/analyseur-de-technologies-web-et-cms\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/pacific-webtools.com\/web-extractor\/analyseur-de-technologies-web-et-cms\/#primaryimage","url":"https:\/\/pacific-webtools.com\/web-extractor\/wp-content\/uploads\/2024\/09\/pacific-cms.webp","contentUrl":"https:\/\/pacific-webtools.com\/web-extractor\/wp-content\/uploads\/2024\/09\/pacific-cms.webp","width":710,"height":714,"caption":"Analyseur de technologies web et CMS avec Pacific Stack & CMS Extractor."},{"@type":"BreadcrumbList","@id":"https:\/\/pacific-webtools.com\/web-extractor\/analyseur-de-technologies-web-et-cms\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/pacific-webtools.com\/web-extractor\/"},{"@type":"ListItem","position":2,"name":"Analyseur de Technologies Web et CMS"}]},{"@type":"WebSite","@id":"https:\/\/pacific-webtools.com\/web-extractor\/#website","url":"https:\/\/pacific-webtools.com\/web-extractor\/","name":"Web Extractor","description":"Extracteur de Code","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/pacific-webtools.com\/web-extractor\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Person","@id":"https:\/\/pacific-webtools.com\/web-extractor\/#\/schema\/person\/0f95670ed0b3b265a488dae146fdda48","name":"admin","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/pacific-webtools.com\/web-extractor\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/94a5a2d7ac834dce40e1e25743dcb576?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/94a5a2d7ac834dce40e1e25743dcb576?s=96&d=mm&r=g","caption":"admin"},"sameAs":["https:\/\/pacific-webtools.com\/web-extractor"],"url":"https:\/\/pacific-webtools.com\/web-extractor\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/pacific-webtools.com\/web-extractor\/wp-json\/wp\/v2\/posts\/846"}],"collection":[{"href":"https:\/\/pacific-webtools.com\/web-extractor\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pacific-webtools.com\/web-extractor\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pacific-webtools.com\/web-extractor\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pacific-webtools.com\/web-extractor\/wp-json\/wp\/v2\/comments?post=846"}],"version-history":[{"count":4,"href":"https:\/\/pacific-webtools.com\/web-extractor\/wp-json\/wp\/v2\/posts\/846\/revisions"}],"predecessor-version":[{"id":851,"href":"https:\/\/pacific-webtools.com\/web-extractor\/wp-json\/wp\/v2\/posts\/846\/revisions\/851"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pacific-webtools.com\/web-extractor\/wp-json\/wp\/v2\/media\/848"}],"wp:attachment":[{"href":"https:\/\/pacific-webtools.com\/web-extractor\/wp-json\/wp\/v2\/media?parent=846"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pacific-webtools.com\/web-extractor\/wp-json\/wp\/v2\/categories?post=846"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pacific-webtools.com\/web-extractor\/wp-json\/wp\/v2\/tags?post=846"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}