Aller au contenu principal
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.

Scraping web

Web scraping automobile : suivre les prix des voitures et des pièces sur AutoScout24, Mobile.de, Leboncoin et Autodoc

Comment les plateformes de pricing automobile utilisent les API de scraping pour surveiller les annonces de véhicules d'occasion sur AutoScout24, Mobile.de et Leboncoin, et les prix des pièces sur les 30+ boutiques nationales d'Autodoc. Pipeline, exemples API et script Python.

Josselin Liebe
Josselin Liebe
Lire
Scraping web

Web scraping et brand protection : traquer la contrefaçon sur AliExpress, Alibaba et Amazon

Comment les plateformes de brand protection utilisent les API de scraping pour détecter les contrefaçons, documenter les vendeurs et surveiller les remises en ligne sur AliExpress, Alibaba, Amazon et d'autres marketplaces. Pipeline, exemples API et script Python.

Josselin Liebe
Josselin Liebe
Lire
Scraping web

Migrer depuis NetNut : que faire après la neutralisation du réseau

Google a pris des mesures contre le réseau de proxies NetNut/Popa, avec le FBI et Lumen. Comment repenser votre stack scraping sans gérer de proxies vous-même.

Josselin Liebe
Josselin Liebe
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.

  • +500 crédits
  • Aucune carte bancaire requise
  • Tous les endpoints inclus