Identificar el Sistema de Gestión de Contenidos (CMS) utilizado por un sitio web puede ofrecer información valiosa para empresas, desarrolladores y especialistas en marketing. En este artículo, exploraremos por qué es útil detectar la tecnología CMS de un sitio web y cómo recuperar esta información utilizando APIs.
Utiliza la API de Tecnología de Sitios Web o nuestras APIs de Scraping generales para la detección de tecnología.
¿Por qué identificar la tecnología CMS de un sitio web?
Comprender el CMS detrás de un sitio web es esencial por varias razones:
- Análisis de Competidores: Saber qué CMS utilizan tus competidores puede proporcionar información sobre su pila tecnológica, escalabilidad y posibles vulnerabilidades.
- Asociaciones Técnicas: Si estás buscando asociarte o integrarte con un sitio web, conocer el CMS ayuda a determinar la compatibilidad con tus herramientas o servicios.
- Conciencia de Seguridad: Algunas plataformas CMS son más vulnerables a ciertos tipos de ataques que otras. Identificar un CMS te permite evaluar posibles riesgos de seguridad.
- Potencial de Personalización: Diferentes CMS tienen distintos grados de flexibilidad. Reconocer el CMS ayuda a determinar qué tan fácil sería personalizar o mejorar ciertas características en un sitio web.
En resumen, identificar el CMS de un sitio web puede proporcionar valiosos conocimientos técnicos y estratégicos.
¿Cómo recuperar información del CMS?
Regístrate en un servicio de API
Varias plataformas ofrecen APIs que detectan tecnologías CMS, como Piloterr, BuiltWith y WhatCMS. Para este ejemplo, utilizaremos la API de Piloterr.
- Crea tu cuenta: Ve al panel de Piloterr e regístrate para una cuenta gratuita o de pago, según tus necesidades.
- Obtén tu clave API: Después del registro, recibirás una clave API.
- Configura tu entorno: Instala las librerías necesarias
pip install requests
Código básico en Python
No olvides reemplazar PILOTERR_API_KEY con tu clave API real. El script asume que las respuestas de la API de Piloterr están en un formato específico de nuestra API, por lo que puede necesitar ajustes dependiendo del proveedor que elijas.
- Copia el código
- Crea un nuevo archivo
detect_cms.py - Reemplaza el token de la API con el tuyo
- Reemplaza la variable
websitessegún tus necesidades - Ejecuta el script con
python detect_cms.py
import requests
import json
PILOTERR_API_KEY = '' #YOUR-API-KEY-HERE
# Piloterr API URL
url = "https://piloterr.com/api/v2/website/technology"
# Lista de sitios web a verificar
websites = [
"https://www.piloterr.com",
"https://www.carreblanc.com",
"https://www.bobbies.com",
"https://www.leslipfrancais.fr"
]
# Lista de CMS basada en categorías de Wappalyzer
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"
]
# Función para encontrar el 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 se encontró CMS"
# Función para obtener tecnologías y CMS de un sitio web
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 al recuperar datos"}
# Crear un diccionario para almacenar resultados
results = {}
# Obtener tecnologías y CMS para cada sitio web
for site in websites:
site_data = get_technologies_and_cms(site)
results[site] = site_data
# Convertir resultados a JSON
json_results = json.dumps(results, indent=2)
# Imprimir resultados en JSON
print(json_results)
# Opcionalmente, guardar JSON en un archivo
with open("website_technologies_and_cms.json", "w") as f:
f.write(json_results)
Resultados
Después de la ejecución, obtenemos una tabla con el nombre de la empresa, el número de inversores y la fecha de fundación como la siguiente:
{
"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"
]
}
}