Skip to main content
Piloterr
Retour au blog
14 octobre 2024

Comment détecter le CMS d'un site web via des API : guide pas à pas

Identifier le système de gestion de contenu (CMS) utilisé par un site web peut offrir des informations précieuses aux entreprises, développeurs et marketeurs. Dans cet article, nous explorons pourquoi il est utile de détecter la technologie CMS d'un site, et comment récupérer ces informations via des API.

Utilisez l'API Website Technology ou nos Scraper APIs générales pour la détection technologique.

Pourquoi identifier la technologie CMS d'un site web ?

Comprendre le CMS derrière un site web est essentiel pour plusieurs raisons :

  • Analyse concurrentielle : connaître le CMS de vos concurrents peut fournir des indications sur leur infrastructure technologique, leur scalabilité et leurs vulnérabilités potentielles.
  • Partenariats techniques : si vous souhaitez vous associer ou intégrer un site web, connaître le CMS aide à déterminer la compatibilité avec vos outils ou services.
  • Sensibilisation à la sécurité : certaines plateformes CMS sont plus vulnérables à certains types d'attaques que d'autres. Identifier un CMS permet d'évaluer les risques de sécurité potentiels.
  • Potentiel de personnalisation : les CMS offrent des degrés de flexibilité variables. Reconnaître le CMS aide à déterminer la facilité de personnalisation ou d'amélioration de certaines fonctionnalités sur un site web.

En bref, identifier le CMS d'un site web peut fournir des informations techniques et stratégiques précieuses.

Comment récupérer les informations CMS ?

Inscrivez-vous à un service API

Plusieurs plateformes proposent des API de détection de technologies CMS, telles que Piloterr, BuiltWith et WhatCMS. Pour cet exemple, nous utiliserons l'API Piloterr.

  1. Créez votre compte : rendez-vous sur le tableau de bord Piloterr et inscrivez-vous pour un compte gratuit ou payant, selon vos besoins.
  2. Obtenez votre clé API : après l'inscription, vous recevrez une clé API.
  3. Configurez votre environnement : installez les bibliothèques nécessaires
Bash
pip install requests

Code Python de base

N'oubliez pas de remplacer PILOTERR_API_KEY par votre vraie clé API. Le script suppose que les réponses de l'API Piloterr sont au format spécifique à notre API ; il pourra donc devoir être ajusté selon le fournisseur que vous choisissez.

  • Copiez le code
  • Créez un nouveau fichier detect_cms.py
  • Remplacez le token API par le vôtre
  • Remplacez la variable websites selon vos besoins
  • Exécutez le script avec python detect_cms.py
Python
import requests
import json

PILOTERR_API_KEY = '' #YOUR-API-KEY-HERE

# Piloterr API URL
url = "https://piloterr.com/api/v2/website/technology"

# List of websites to check
websites = [
    "https://www.piloterr.com",
    "https://www.carreblanc.com",
    "https://www.bobbies.com",
    "https://www.leslipfrancais.fr"
]

# List of CMS based on Wappalyzer categories
cms_list = [
    "1c-bitrix", "3dcartstores", "abicart", "ametys", "amiro.cms",
    "apostrophecms", "arc publishing",
    "asciidoc", "atg", "bigcommerce", "blogger", "bludit",
    "borderfree", "bridgeline idev",
    "broadvision", "ckan", "cms made simple", "cmSimple",
    "concrete5", "contao", "contenido",
    "contensis", "contentful", "craft cms", "cryoblock",
    "danneo cms", "datocms", "day.js",
    "dede", "diazo", "dnn", "dokuwiki", "dotcms", "drupal",
    "dynamicweb", "e107", "easydb",
    "easyengine", "ez publish", "expressionengine",
    "fandom", "flash", "flatpress", "flexcmp",
    "fluxbb", "forestry", "fork cms", "foswiki", "frog cms",
    "gatsby", "getsimple cms", "ghost",
    "gitbook", "grav", "gridsome", "groovy", "halo", "hippo", "hubspot", 
    "hugo", "hybris", "ibm websphere commerce",
    "ikiwiki", "imperia cms", "indexhibit", "instapage",
    "intercom articles", "joomla", "kentico cms",
    "koken", "komodo cms", "liferay", "lightspeed ecommerce",
    "lima", "locomotive cms", "magento",
    "mambo", "markdownguide", "matomo", "mediawiki", "miva",
    "modx", "moodle", "movable type",
    "mybb", "neos", "netcat", "netlifycms", "nopcommerce",
    "odoo", "opencart", "orchard cms",
    "oscommerce", "percussion", "phpbb", "phpmyadmin", "pimcore",
    "plone", "posterous", "prestashop",
    "pyrocms", "rbs change", "rcms", "roadiz cms",
    "rs-site", "saleor", "salesforce commerce cloud",
    "serendipity", "shopify", "shopware", "silverstripe", "sitecore",
    "sitefinity", "sitemap generator",
    "siteor", "smelting", "solodev", "squarespace", "statamic",
    "storyblok", "strikingly", "subrion",
    "textpattern", "tilda", "trac", "typo3 cms", "typo3 neos",
    "umbraco", "umiсms", "vbulletin",
    "viennacms", "virto commerce", "visual composer", "voog",
    "wap review", "webflow", "webgui",
    "weebly", "wix", "woocommerce", "wordpress", "xenforo",
    "xt:commerce", "yii", "zencart", "zendesk",
    "zephir", "zeta producer"
]

# Function to find CMS
def find_cms(technologies):
    for tech in technologies:
        tech_name = tech.lower()
        for cms in cms_list:
            if cms in tech_name:
                return tech
    return "No CMS found"

# Function to get technologies and CMS for a website
def get_technologies_and_cms(site):
    params = {"query": site}
    headers = {"x-api-key": YOUR_API_KEY}
    response = requests.get(url, params=params, headers=headers)
    
    if response.status_code == 200:
        data = response.json()
        technologies = [tech["name"] for tech in data.get("technologies", [])]
        cms = find_cms(technologies)
        return {"cms": cms, "technologies": technologies}
    else:
        return {"technologies": [], "cms": "Error retrieving data"}

# Create a dictionary to store results
results = {}

# Get technologies and CMS for each website
for site in websites:
    site_data = get_technologies_and_cms(site)
    results[site] = site_data

# Convert results to JSON
json_results = json.dumps(results, indent=2)

# Print JSON results
print(json_results)

# Optionally, save JSON to a file
with open("website_technologies_and_cms.json", "w") as f:
    f.write(json_results)

Résultats

Après exécution, nous obtenons un tableau avec le nom de l'entreprise, le nombre d'investisseurs et la date de fondation, par exemple :

JSON
{
  "https://www.piloterr.com": {
    "cms": "Webflow",
    "technologies": [
      "Webflow",
      "jsDelivr",
      "Google Tag Manager",
      "Google Hosted Libraries",
      "Customer.io",
      "reCAPTCHA",
      "jQuery",
      "HubSpot Chat",
      "HubSpot",
      "Google Analytics",
      "core-js",
      "Google Font API",
      "HSTS",
      "Cloudflare",
      "Open Graph",
      "HTTP/3"
    ]
  },
  "https://www.carreblanc.com": {
    "cms": "Magento",
    "technologies": [
      "Magento",
      "Cart Functionality",
      "Sentry",
      "Algolia",
      "MySQL",
      "PHP",
      "Leaflet",
      "Hyva Themes",
      "Tailwind CSS",
      "Vue.js",
      "Alpine.js",
      "Zendesk",
      "reCAPTCHA",
      "Google Tag Manager",
      "Glider.js",
      "Didomi",
      "Splide",
      "Livefyre",
      "core-js",
      "WhatsApp Business Chat",
      "Preact",
      "Google Font API",
      "Font Awesome",
      "Avis Verifies",
      "Cloudflare",
      "Webpack",
      "Open Graph",
      "Module Federation",
      "HTTP/3"
    ]
  },
  "https://www.bobbies.com": {
    "cms": "PrestaShop",
    "technologies": [
      "PrestaShop",
      "Prismic",
      "Doofinder",
      "MySQL",
      "PHP",
      "PayPal",
      "Google Tag Manager",
      "Cloudflare Bot Management",
      "TikTok Pixel",
      "LazySizes",
      "jQuery Migrate",
      "jQuery",
      "Hotjar",
      "Google Analytics",
      "Facebook Pixel",
      "core-js",
      "reCAPTCHA",
      "MailChimp",
      "HSTS",
      "Cloudflare",
      "Open Graph",
      "HTTP/3"
    ]
  },
  "https://www.leslipfrancais.fr": {
    "cms": "Storyblok",
    "technologies": [
      "Storyblok",
      "Cart Functionality",
      "Shopify",
      "Doofinder",
      "Global-e",
      "Secomapp",
      "PayPal",
      "Apple Pay",
      "OneTrust",
      "Google Tag Manager",
      "Glider.js",
      "AB Tasty",
      "New Relic",
      "LazySizes",
      "Klaviyo",
      "core-js",
      "Boomerang",
      "Swiper",
      "Priority Hints",
      "Google Font API",
      "Avis Verifies",
      "Linkedin Insight Tag",
      "HSTS",
      "Cloudflare",
      "Webpack",
      "Open Graph",
      "Module Federation",
      "HTTP/3"
    ]
  }
}

À lire aussi

Guides et actualités sur le scraping web, les proxies et l'extraction de données.

Comment scraper les données salariales d'une entreprise avec Python

Apprenez à scraper les données salariales Comparably avec Python et Piloterr. Tutoriel complet avec code, gestion Angular et extraction JSON structurée.

Josselin Liebe
Josselin Liebe
Lire

Puppeteer : bibliothèque Node.js de web scraping pour JavaScript

Apprenez le web scraping avec Puppeteer Node.js: guide complet avec exemples pratiques pour scraper des sites e-commerce, réseaux sociaux, SPA React/Vue. Techniques avancées d'automatisation navigateur, gestion JavaScript, contournement anti-bot. Tutoriel développeur 2025.

Josselin Liebe
Josselin Liebe
Lire

Comment construire un jeu de données des employés d'une entreprise

Dans ce tutoriel, nous apprendrons à exploiter la précision des Google Dorks et la puissance d'automatisation des API Piloterr pour collecter des données publiques de profils LinkedIn. Le résultat final est un jeu de données .json structuré, prêt pour l'analyse.

Harivony Ratefiarison
Harivony Ratefiarison
Lire

Prêt à commencer ?

Votre API de scraping web est à un clic. Commencez avec +500 crédits, sans infrastructure à gérer, sans proxies à configurer, et sans carte bancaire.

Commencer gratuitement (+500 crédits)