Identificar o Sistema de Gerenciamento de Conteúdo (CMS) usado por um site pode oferecer insights valiosos para empresas, desenvolvedores e profissionais de marketing. Neste artigo, exploraremos por que é útil detectar a tecnologia CMS de um site e como recuperar essas informações usando APIs.
Use a Website Technology API ou nossas Scraper APIs gerais para detecção de tecnologia.
Por que identificar a tecnologia CMS de um site?
Entender o CMS por trás de um site é essencial por várias razões:
- Análise da Concorrência: Saber qual CMS seus concorrentes estão usando pode fornecer insights sobre sua pilha tecnológica, escalabilidade e possíveis vulnerabilidades.
- Parcerias Técnicas: Se você está buscando fazer parcerias ou integrar com um site, conhecer o CMS ajuda a determinar a compatibilidade com suas ferramentas ou serviços.
- Conscientização de Segurança: Algumas plataformas de CMS são mais vulneráveis a certos tipos de ataques do que outras. Identificar um CMS permite avaliar potenciais riscos de segurança.
- Potencial de Personalização: Diferentes CMSs têm graus variados de flexibilidade. Reconhecer o CMS ajuda a determinar quão fácil seria personalizar ou aprimorar certos recursos em um site.
Em resumo, identificar o CMS de um site pode fornecer insights técnicos e estratégicos valiosos.
Como recuperar informações do CMS?
Cadastre-se em um serviço de API
Várias plataformas oferecem APIs que detectam tecnologias de CMS, como Piloterr, BuiltWith e WhatCMS. Para este exemplo, usaremos a API do Piloterr.
- Crie sua conta: Acesse o painel do Piloterr e cadastre-se para uma conta gratuita ou paga, dependendo de suas necessidades.
- Obtenha sua chave de API: Após o registro, você receberá uma chave de API.
- Configure seu ambiente: Instale as bibliotecas necessárias
pip install requests
Código básico em Python
Não se esqueça de substituir PILOTERR_API_KEY pela sua chave de API real. O script assume que as respostas da API do Piloterr estão em um formato específico da nossa API, portanto, pode ser necessário ajustá-lo dependendo do provedor que você escolher.
- Copie o código
- Crie um novo arquivo
detect_cms.py - Substitua o token da API pelo seu próprio
- Substitua a variável websites conforme sua necessidade
- Execute o script com
python detect_cms.py
import requests
import json
PILOTERR_API_KEY = '' #SUA-CHAVE-API-AQUI
# URL da API do Piloterr
url = "https://piloterr.com/api/v2/website/technology"
# Lista de sites para verificar
websites = [
"https://www.piloterr.com",
"https://www.carreblanc.com",
"https://www.bobbies.com",
"https://www.leslipfrancais.fr"
]
# Lista de CMS baseada nas categorias do 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"
]
# Função para encontrar 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 "Nenhum CMS encontrado"
# Função para obter tecnologias e CMS de um site
def get_technologies_and_cms(site):
params = {"query": site}
headers = {"x-api-key": PILOTERR_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": "Erro ao recuperar dados"}
# Criar um dicionário para armazenar resultados
results = {}
# Obter tecnologias e CMS para cada site
for site in websites:
site_data = get_technologies_and_cms(site)
results[site] = site_data
# Converter resultados para JSON
json_results = json.dumps(results, indent=2)
# Imprimir resultados JSON
print(json_results)
# Opcionalmente, salvar JSON em um arquivo
with open("website_technologies_and_cms.json", "w") as f:
f.write(json_results)
Resultados
Após a execução, obtemos uma tabela com o nome da empresa, o número de investidores e a data de fundação, como:
{
"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"
]
}
}