Pular para o conteúdo
Todos os conceitos

Anatomia de uma URL

Quem manda num link é o domínio registrado, no fim do host. O resto é texto que o dono escreve como quiser.

Pegue este link, que chegou num SMS "do banco":

https://bancosesmaria.test.atualiza-cadastro.example/bancosesmaria.test?ag=0012

Ele tem quatro pedaços:

Pedaço No exemplo Quem escolhe
esquema https o protocolo de acesso
host bancosesmaria.test.atualiza-cadastro.example quem registrou o domínio, no fim do host
caminho /bancosesmaria.test o dono do site, com qualquer texto
consulta ?ag=0012 o dono do site, com qualquer texto

O host vai de :// até a primeira /, e se lê da direita para a esquerda. A última parte, example, é o domínio de topo (TLD). A parte logo antes, atualiza-cadastro, é o nome que alguém comprou. As duas juntas, atualiza-cadastro.example, formam o domínio registrado: quem o registrou controla o link inteiro. Tudo o que fica à esquerda (bancosesmaria.test.) são subdomínios, que esse dono cria com o nome que quiser, inclusive o de um banco.

https:// bancosesmaria.test. atualiza-cadastro.example /bancosesmaria.test ?ag=0012 esquema host caminho consulta texto livre do dono leia da direita para a esquerda bancosesmaria . test . atualiza-cadastro . example subdomínios o dono escolhe o nome nome registrado TLD domínio registrado: manda no link
O host se lê da direita para a esquerda: o TLD e o nome antes dele formam o domínio registrado, que manda no link; os subdomínios à esquerda e o caminho à direita são texto livre do dono.

Então o link acima é de quem registrou atualiza-cadastro.example, não do banco. O nome do banco aparece duas vezes, e as duas são disfarce.

Três cuidados:

  • Em sufixos de duas partes, como .com.br ou .gov.br, o domínio registrado leva três partes do fim: o nome mais o sufixo inteiro. A lista de quais sufixos existem se chama lista de sufixos públicos.
  • Um @ antes do host muda tudo: em https://[email protected]/, o que vem antes do @ é só um "nome de usuário", e o host é outro.example.
  • Um encurtador esconde o destino. Para ver para onde ele leva sem abrir a página, peça só os cabeçalhos com curl -sIL: cada resposta 301 ou 302 traz o próximo endereço no cabeçalho Location, e o -L segue a cadeia até o fim.
$ curl -sIL https://encurta.test/x1
HTTP/1.1 301 Moved Permanently
Location: https://promo.desconto-ja.example/?destino=https%3A%2F%2Fpampamarket.test

HTTP/1.1 302 Found
Location: https://pampamarket.test.cupom-gratis.example/

HTTP/1.1 200 OK

Só o Location leva o navegador adiante. O parâmetro destino= do primeiro passo é texto dentro da URL, posto ali para parecer a loja; o destino real é o último Location, cujo domínio registrado é cupom-gratis.example.

Em Python, urllib.parse.urlsplit(url).hostname devolve o host, e ".".join(host.split(".")[-2:]) pega as duas últimas partes (para .com.br, pegue três).

Aparece nestes desafios