Ir para o conteúdo principal
Piloterr
Voltar ao blog
14 de outubro de 2024

Como Detectar o CMS de um Site Usando APIs: Um Guia Passo a Passo

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.

  1. Crie sua conta: Acesse o painel do Piloterr e cadastre-se para uma conta gratuita ou paga, dependendo de suas necessidades.
  2. Obtenha sua chave de API: Após o registro, você receberá uma chave de API.
  3. Configure seu ambiente: Instale as bibliotecas necessárias
Bash
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
Python
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:

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"
    ]
  }
}

Mais para ler

Guias e notícias sobre web scraping, proxies e extração de dados.

Web Scraping

Migrando do NetNut: o que fazer após a desativação da rede

O Google tomou medidas contra a rede de proxies NetNut/Popa em conjunto com o FBI e a Lumen. Como repensar sua stack de scraping sem gerenciar proxies por conta própria.

Josselin Liebe
Josselin Liebe
Ler
Web Scraping

€17,99 na França, €29,99 na Alemanha: monitoramento de preços por país

Mesma referência no ERP, preços diferentes por país: promoções, moedas e sortimento variam de uma loja para outra. Modelo de dados, exemplos de API e um script em Python para monitoramento confiável de preços.

Josselin Liebe
Josselin Liebe
Ler
Web Scraping

Melhor Scraper para Leboncoin 2026

Piloterr vs Apify vs lobstr.io para scraping no Leboncoin em 2026. Preços, endpoints e dados de produtos verificados a partir de fontes oficiais em 29 de junho de 2026 — incluindo a lacuna legal entre scraping público e autenticado.

Josselin Liebe
Josselin Liebe
Ler

Pronto para começar?

Sua API de web scraping está a um clique. Comece com +500 créditos, sem infraestrutura para configurar, sem proxies para gerenciar e sem cartão de crédito necessário.

  • +500 créditos
  • Sem cartão de crédito
  • Todos os endpoints incluídos