A declaração: somos a Geonode e comercializamos proxies, que constituem um dos elementos do método de rastreamento descrito no final. A verdade é que o rastreamento deve ser a última coisa a tentar, e não a primeira. Cinco das oito fontes abaixo são gratuitas, não requerem infraestrutura e, frequentemente, produzem uma lista mais completa do que um rastreamento — porque incluem páginas que já não têm links a partir de nenhum outro sítio. Se começar por programar um rastreador, terá mais trabalho e obterá uma cobertura menor. Compre largura de banda quando tiver constatado que as fontes gratuitas apresentam lacunas que precisa de preencher, o que acontece mais tarde do que a maioria das pessoas supõe.
Por que razão «Todas as Páginas» não tem uma resposta completa
Quatro razões, todas de natureza estrutural.
Existem páginas órfãs. Uma página sem ligações de entrada é inacessível ao rastreamento e invisível para os motores de busca, mas existe e pode estar ativa. Páginas de destino antigas, URLs de campanhas e secções obsoletas enquadram-se todas nesta categoria.
O conteúdo por trás de formulários e autenticação não é enumerável. Resultados de pesquisa, visualizações filtradas e tudo o que exija um início de sessão não são acessíveis através da descoberta.
Os URLs dinâmicos podem ser infinitos. Um calendário com links para o mês seguinte gera URLs ilimitados. A navegação facetada num site de comércio eletrónico produz explosões combinatórias. «Todas as páginas» não é um conjunto finito em alguns sites.
Os sites mentem por omissão. Um mapa do site contém o que o proprietário optou por listar, o que, frequentemente, são as páginas que querem que sejam indexadas, em vez das páginas que existem.
Portanto, o objetivo realista não é a exaustividade, mas sim uma cobertura suficiente para o seu propósito, o que significa que as fontes que escolher dependem do motivo pelo qual está a fazer a pesquisa.
Comece pelo mapa do site
O primeiro passo mais produtivo de todos, e aquele que as pessoas costumam ignorar.
O protocolo de mapas do site define um formato XML que lista os URLs de um site. Um mapa do site «deve começar com uma tag de abertura <urlset> e terminar com uma tag de fecho </urlset>», sendo que cada entrada requer um elemento <loc>. Podem acompanhá-lo os elementos opcionais <lastmod>, <changefreq> e <priority>, embora o protocolo indique que o seu tratamento «pode variar entre os motores de busca».
Os limites são importantes para o que se encontra: um único ficheiro de mapa do site está limitado a «50 000 URLs e não pode ter mais de 50 MB (52 428 800 bytes)». Os sites de maior dimensão utilizam um índice de mapa do site — um ficheiro <sitemapindex> que lista outros mapas do site — que está sujeito aos mesmos limites, pelo que um site pode ter dezenas de ficheiros de mapa do site.
Onde procurar:
https://example.com/sitemap.xml
https://example.com/sitemap_index.xml
https://example.com/sitemap.xml.gz
A compressão Gzip é permitida, «mas o ficheiro descomprimido deve continuar a cumprir as restrições de tamanho».
E verifique primeiro robots.txt, porque o protocolo prevê o anúncio de mapas do site nesse endereço através da diretiva Sitemap::
curl -s https://example.com/robots.txt | grep -i sitemap
Estes são os trinta segundos mais valiosos que existem. Muitos sites listam vários mapas do site cujos nomes nunca teria adivinhado — mapas separados para produtos, categorias, publicações de blogue e imagens.
Siga o índice de forma recursiva. Um índice de mapa do site aponta para mapas do site que, por sua vez, podem apontar para outros mapas do site. Recupere cada um deles, extraia os valores de «<loc>» e tenha em conta que as entradas num índice são ficheiros de mapa do site, enquanto as entradas num «urlset» são páginas.
O campo «<lastmod>» é a outra razão para começar por aqui: indica-lhe o que mudou, o que transforma um novo rastreio numa recuperação das poucas páginas que foram movidas.
Leia o ficheiro robots.txt para saber o que ele revela
Para além da diretiva do mapa do site, o ficheiro robots.txt é um inventário dos percursos que o proprietário considerou que valia a pena mencionar.
Disallow: /admin/
Disallow: /internal/reports/
Disallow: /checkout/
Disallow: /search?
Cada linha «Disallow» indica um caminho que existe. Isto não é uma forma de aceder ao site — é uma indicação do que não deve ser rastreado, e respeitá-la é não só correto como também a diferença entre um rastreador identificado e um incómodo. Mas revela-lhe a estrutura do site e, frequentemente, indica secções que desconhecia.
Leia-o como um mapa, em vez de uma lista de alvos. Um caminho que está proibido deve permanecer fora da sua lista de rastreamento; saber que ele existe contribui, ainda assim, para a sua compreensão do site.
Operadores de motores de busca
Rápido, gratuito e parcial.
site:example.com
site:example.com inurl:/products/
site:example.com -inurl:/blog/
site:example.com filetype:pdf
O que isto lhe oferece: páginas que o motor de busca indexou, o que constitui um subconjunto das páginas existentes. Os resultados são também limitados e estimados, em vez de exaustivos.
Para que serve realmente: descobrir subdomínios e secções que desconhecia e encontrar ficheiros de documentos que não estão ligados a partir da navegação. Uma pesquisa com o comando «filetype:pdf» num site corporativo revela frequentemente material que ninguém esperava que fosse público.
A limitação é que extrair resultados de pesquisa viola diretamente os termos de utilização da maioria dos motores de busca, e a versão manual é lenta. Se precisar de fazer isto programaticamente, utilize uma API de pesquisa oficial, caso exista, em vez de automatizar a interface web.
Arquivos da Web
A fonte que a maioria das pessoas esquece e a única que encontra páginas que já não existem.
A API do Servidor CDX do Internet Archive consulta diretamente o índice de captura do arquivo. A documentação refere que «a consulta mais simples e o único parâmetro obrigatório para o servidor CDX é o parâmetro url».
curl -s "http://web.archive.org/cdx/search/cdx?url=example.com/*&output=json&fl=original&collapse=urlkey&limit=10000"
Os parâmetros que vale a pena conhecer:
**matchType
** controla o âmbito — exact
corresponde a um único URL, prefix
devolve tudo o que se encontra num determinado caminho, host
abrange um único nome de anfitrião e domain
abrange um domínio e todos os seus subdomínios. Um caractere curinga na URL define isto implicitamente, pelo que example.com/*
corresponde a uma correspondência de prefixo.
**collapse=urlkey
** remove duplicados adjacentes, o que é essencial, uma vez que o arquivo contém muitas capturas da mesma URL.
**output=json
** é mais prático do que o formato de texto CDX predefinido, e gzip=false
desativa a codificação gzip predefinida se o seu cliente não a suportar.
Limites: a API «impõe um limite máximo predefinido de 150 000 resultados por consulta», ajustável através de limit=N
, e para consultas mais extensas a documentação recomenda a API de paginação utilizando page
e pageSize
.
Por que razão isto é especialmente valioso: revela URLs históricos. Páginas que foram removidas, secções que foram reestruturadas, páginas de destino de campanhas que foram desligadas. Para compreender como um site era anteriormente, ou para encontrar conteúdo órfão que ainda está ativo, nada se compara a isto — e não coloca qualquer carga no alvo.
Common Crawl
Um vasto corpus público de rastreamento com um índice que pode ser consultado e um recurso verdadeiramente subutilizado.
O Common Crawl publica rastreamentos periódicos de uma parte substancial da Web, juntamente com um índice de URLs. Ao consultá-lo, obtém-se as URLs que o rastreamento encontrou para um domínio, em massa, sem aceder ao site.
As vantagens e desvantagens são claras. A cobertura é ampla, mas não completa — trata-se de um rastreio, sujeito aos mesmos pontos cegos que qualquer outro rastreio. A atualidade depende do rastreio que consultar. E consultar o índice em grande escala é um exercício de processamento de dados, em vez de um simples pedido.
Onde se destaca: investigação em grande escala, comparação de muitos domínios e qualquer situação em que se pretenda obter uma visão de um site sem gerar tráfego para o mesmo.
Rastreamento: o último recurso, feito da forma correta
Quando as fontes gratuitas deixam lacunas, recorra ao rastreamento. Faça-o de forma a não criar problemas.
O ciclo básico: obter uma página, extrair links, filtrar para o domínio de destino, colocar os novos na fila, repetir até a fila ficar vazia. Simples em princípio, mas repleto de detalhes.
Detalhes importantes:
Respeite o ficheiro «robots.txt». Atualmente, é um padrão — a RFC 9309 define a correspondência por especificidade em vez de por ordem, exige a atualização do ficheiro pelo menos diariamente e trata um erro do servidor como uma proibição total. Utilize uma biblioteca atualizada em vez de escrever o analisador por conta própria.
Normalize os URLs de forma agressiva. Barras finais, ordem dos parâmetros de consulta, maiúsculas e minúsculas nos nomes de host, identificadores de sessão e parâmetros de rastreamento — todos estes fatores produzem duplicados. Um rastreador sem normalização visitará a mesma página centenas de vezes.
Limite o rastreio. Limites de profundidade, limites de contagem de páginas e exclusões de padrões para calendários e navegação facetada. Sem eles, alguns sites são infinitos.
Limite a sua própria taxa de pedidos. Um pedido a cada segundo ou dois é educado e adequado para a maioria das tarefas. Crawl-delay em robots.txt é um pedido que vale a pena respeitar.
Identifique-se. Um agente de utilizador com um nome e um URL de contacto é bloqueado com muito menos facilidade do que a automação anónima.
Armazene em cache e utilize pedidos condicionais. If-Modified-Since e If-None-Match transformam um novo rastreio numa série de 304s económicos.
Quando é que os proxies entram em ação: em grande escala, quando um único endereço é sujeito a limitação de taxa ou quando o conteúdo difere consoante a região. Não antes disso. A largura de banda de centro de dados é a opção padrão sensata para isto — a nossa começa nos 0,14 $/GB, verificado em setembro de 2026 — e só vale a pena recorrer à largura de banda residencial quando a de centro de dados falhar comprovadamente.
Outras fontes que vale a pena conhecer
Quatro fontes mais pequenas que preenchem lacunas específicas.
Registos de transparência de certificados. Todos os certificados TLS emitidos são registados publicamente, e os certificados indicam os nomes dos seus anfitriões. A consulta de um agregador de registos CT para um domínio revela subdomínios — incluindo aqueles que parecem internos e que nunca foram destinados a serem encontrados por outros meios. Este é o melhor método de descoberta de subdomínios e não envolve qualquer contacto com o alvo.
Feeds RSS e Atom. Continuam a ser amplamente publicados e apresentam o conteúdo de forma estruturada, com datas. Consulte /feed, /rss, /atom.xml e as tags <link rel="alternate"> no cabeçalho da página.
A própria pesquisa e navegação do site. Um índice de A a Z, uma lista de etiquetas, uma página de categorias ou uma página de mapa do site em HTML — muitos sites publicam uma versão para visitantes humanos, e esta é frequentemente mais completa do que o mapa do site em XML.
A API por trás do front-end. Se o site for uma aplicação de página única, está a chamar uma API para obter o seu conteúdo, e essa API expõe frequentemente pontos finais de listagem que devolvem tudo de forma estruturada. Consulte o separador «Rede» do seu navegador. Esta é consistentemente a via mais rápida em sites modernos e, consistentemente, a que as pessoas encontram em último lugar.
Combinação de fontes
O método prático para uma enumeração rigorosa e a razão pela qual a ordem é importante.
Recolha de forma independente e junte os dados. URLs de mapas do site, URLs de arquivo, URLs de feeds e resultados de rastreamento num único conjunto. Normalize antes de juntar, ou acabará por contar a mesma página várias vezes.
Verifique se as páginas estão ativas. Uma URL de arquivo pode apresentar um erro 404 hoje. Uma solicitação HEAD
por URL é barata:
while read -r url; do
code=$(curl -sIL -o /dev/null --max-time 10 -w '%{response_code}' "$url")
echo "$code $url"
done < urls.txt
Compare as fontes entre si. As URLs presentes no arquivo, mas não no mapa do site, são páginas removidas ou órfãs. As URLs presentes no mapa do site, mas que devolvem um erro 404, são entradas desatualizadas. Os URLs encontrados durante o rastreio, mas ausentes do mapa do site, são páginas que o proprietário não queria que fossem indexadas. Cada diferença é uma informação.
Acompanhe ao longo do tempo. Executar periodicamente a comparação permite saber o que foi adicionado e removido, o que é frequentemente a verdadeira questão por trás de «encontrar todas as páginas».
Um guia prático
Reunir as fontes num único domínio, na ordem que exija menos trabalho.
Primeiro — localizar os mapas do site declarados:
DOMAIN="example.com"
curl -s "https://$DOMAIN/robots.txt" | grep -i '^sitemap:' | awk '{print $2}' > sitemaps.txt
# fall back to the conventional locations if nothing is declared
[ -s sitemaps.txt ] || printf 'https://%s/sitemap.xml\nhttps://%s/sitemap_index.xml\n' "$DOMAIN" "$DOMAIN" > sitemaps.txt
Segundo — expandir os índices e recolher os URLs. Um índice de mapa do site contém valores <loc>
que apontam para outros mapas do site, e um conjunto de URLs contém valores <loc>
que apontam para páginas; por isso, a mesma extração funciona em ambos os níveis e basta repeti-la:
extract() { curl -s --compressed "$1" | grep -o '<loc>[^<]*</loc>' | sed 's/<[^>]*>//g'; }
: > all_urls.txt
while read -r sm; do
extract "$sm" | while read -r u; do
case "$u" in
*.xml|*.xml.gz) extract "$u" >> all_urls.txt ;;
*) echo "$u" >> all_urls.txt ;;
esac
done
done < sitemaps.txt
sort -u all_urls.txt -o all_urls.txt
wc -l all_urls.txt
Terceiro — adicionar a visualização do arquivo:
curl -s "http://web.archive.org/cdx/search/cdx?url=${DOMAIN}/*&output=text&fl=original&collapse=urlkey&limit=50000" \
| sort -u > archive_urls.txt
wc -l archive_urls.txt
Quarto — comparar em vez de simplesmente combinar. É aqui que se encontra o resultado interessante:
comm -13 all_urls.txt archive_urls.txt > only_in_archive.txt # orphaned or removed
comm -23 all_urls.txt archive_urls.txt > only_in_sitemap.txt # new or never archived
only_in_archive.txt
é a lista que vale a pena consultar em primeiro lugar. Essas são URLs que o site já disponibilizou, mas que já não anuncia — algumas darão erro 404, e as que não dão são páginas ativas para as quais ninguém tem links.
Cinco — verifique se a página está ativa antes de confiar em qualquer coisa. Ambas as listas contêm entradas desatualizadas, e um pedido HEAD
por URL consome apenas algumas centenas de bytes, em vez de uma página completa:
while read -r u; do
printf '%s %s\n' "$(curl -sIL -o /dev/null --max-time 10 -w '%{response_code}' "$u")" "$u"
done < only_in_archive.txt | tee liveness.txt
grep '^200 ' liveness.txt | wc -l
Repare na ordem deliberada: quatro fontes consultadas, milhares de URLs recolhidas e nem um único rastreio escrito. Na maioria dos sites, isto produz uma imagem mais completa do que um rastreador produziria, numa fração do tempo, e o alvo mal repara que lá estiveste.
Perguntas frequentes
Como posso encontrar todas as páginas de um site?
Comece por robots.txt para encontrar declarações de mapas do site; em seguida, obtenha os mapas do site e siga quaisquer ficheiros de índice. Complemente esta pesquisa com a API CDX do Internet Archive para obter URLs históricos, feeds RSS e uma pesquisa no site:. Faça o rastreio apenas do que esses recursos não abrangem — esta é a opção mais lenta e mais intrusiva.
Onde se encontra o mapa do site de um site?
Normalmente em /sitemap.xml ou /sitemap_index.xml, e a forma mais fiável de o encontrar é através da diretiva Sitemap: em robots.txt. Os sites de grande dimensão utilizam um índice de mapa do site que aponta para vários ficheiros, uma vez que cada um está limitado a 50 000 URLs e 50 MB.
Posso encontrar páginas que não estejam ligadas a nenhum outro local?
Por vezes. Por definição, o rastreamento não consegue encontrá-las, mas os arquivos da Web muitas vezes conseguem — a API CDX do Internet Archive devolve URLs históricos, incluindo aqueles que já não têm ligações. Os registos de transparência de certificados também revelam subdomínios que não têm ligações a partir de lado nenhum.
Como posso encontrar todos os subdomínios de um site?
Os registos de transparência de certificados são a melhor fonte, uma vez que todos os certificados TLS emitidos são registados publicamente com os respetivos nomes de anfitrião. Os operadores de motores de busca e as ferramentas de enumeração de DNS complementam esta informação. Nenhuma destas opções requer contactar o alvo.
É legal rastrear um site para listar as suas páginas?
Depende da jurisdição, dos termos do site e do que fizer com o resultado. Respeitar a política de «robots.txt», identificar o seu rastreador e manter uma taxa de rastreamento moderada mantém-no dentro das práticas normais. Os termos de serviço podem proibir o acesso automatizado independentemente disso, e essa é uma questão contratual que vale a pena verificar.
Quantos URLs pode um mapa do site conter?
50 000 por ficheiro, com um limite de 50 MB sem compressão. Para além disso, os sites utilizam um índice de mapas do site que lista vários ficheiros de mapas do site — e o próprio índice está sujeito aos mesmos limites de 50 000 e 50 MB.
O que é a API Wayback CDX?
Uma interface para o índice de captura do Internet Archive que devolve os URLs que arquivou para um domínio. matchType controla o âmbito, desde um único URL até um domínio e todos os subdomínios; collapse=urlkey remove capturas duplicadas; e o limite padrão de resultados é de 150 000, com uma API de paginação para consultas de maior dimensão.
Preciso de proxies para enumerar as páginas de um site?
Não para as abordagens de mapa do site, arquivo, feed ou pesquisa — nenhuma delas gera uma carga significativa. Precisa deles para rastreamentos de grande dimensão, em que um único endereço fica sujeito a limites de taxa ou em que o conteúdo varia consoante a região. Verifique se as fontes gratuitas apresentam lacunas antes de adquirir qualquer coisa.
Conclusão
Não existe uma lista completa das páginas de um site, apenas um conjunto de visualizações parciais — e o que é útil é recolher as visualizações mais simples antes de criar a mais complexa.
Trinta segundos no site robots.txt permitem encontrar as declarações do mapa do site. Alguns minutos a seguir ao índice do mapa do site dão-lhe o que o proprietário considera ser o seu site. A API CDX do Internet Archive acrescenta as páginas que existiram no passado e aquelas para as quais já ninguém cria ligações. Os feeds, os registos de transparência de certificados e o próprio índice HTML do site preenchem, cada um, uma lacuna diferente. Tudo isto é gratuito e nada sobrecarrega o alvo.
Faça o rastreio do que resta, respeitando o robots.txt, com os URLs normalizados, o rastreio delimitado e a sua taxa mantida a um nível modesto — e verifique primeiro se o site é uma aplicação de página única que chama uma API, porque essa via é normalmente mais rápida do que o rastreio e quase sempre é ignorada.
Em seguida, compare as fontes em vez de se limitar a fundi-las. As páginas que constam do arquivo mas não do mapa do site, e as entradas do mapa do site que agora devolvem um erro 404, são frequentemente o resultado mais interessante de todo este exercício.
