Texto

URLs

O que é o extrator de URLs?

Você tem uma thread de e-mail de 200 linhas, um export de canal do Slack, um arquivo de log, uma transcrição de atendimento ou umas notas em markdown — e quer todas as URLs que aparecem ali, na ordem, sem duplicatas, prontas para colar em outro lugar. Talvez você esteja auditando em quais links um cliente clicou. Talvez esteja varrendo um documento atrás de referências externas antes de publicar. Talvez vá jogar as URLs num crawler. Seja o que for, ninguém quer rolar e copiar e colar 40 vezes. Solta o texto no painel da esquerda e o painel da direita devolve um array JSON com todas as URLs encontradas.

A extração é baseada num regex simples que casa http:// e https:// seguidos por qualquer caractere não branco. Cada match é depois aparado da pontuação final que quase nunca faz parte de uma URL (ponto, vírgula, ponto e vírgula, parêntese ou colchete fechando — aquela tralha que vem quando uma frase termina com um link), e validado pelo construtor URL. Se o construtor aceita, é URL de verdade; se ele lança, a gente pula. Duplicatas são removidas preservando a ordem de aparição — quem aparece primeiro fica. A abordagem bate com o que o WHATWG URL Standard chama de "URL parsing" e segue o jeito como regex em JavaScript normalmente lida com detecção de URL.

A saída é um array JSON de strings, na ordem em que as URLs apareceram. Se não houver URL no texto, você recebe [] — array vazio, sem erro, sem toast. Tudo roda no seu navegador. Nada é enviado, nada é registrado. A RFC 3986 é a spec por trás do que conta como URL válida, e o construtor URL implementa isso.

Como usar o extrator

Três passos. Cada um corresponde a um botão desta página.

1

Cole o texto ou carregue o exemplo

Solte seu texto no painel da esquerda — corpo de e-mail, arquivo de log, transcrição, artigo, qualquer coisa. Clique em Exemplo para carregar um caso realista: uma nota interna do time com quatro URLs espalhadas. Entrada de exemplo:

E aí time — por favor revisem o pedido em https://api.shop.example.com/v1/orders/ORD-1001
e deem uma olhada no painel https://admin.shop.example.com/dashboard?tab=orders.
A cliente (Ava Chen) entrou em contato via http://support.shop.example.com/tickets/T-4521 — vejam também a documentação em https://docs.shop.example.com/api/orders.

O extrator só pega URLs <code>http://</code> e <code>https://</code>. Domínios soltos como <code>shop.example.com</code> sem esquema são pulados (são ambíguos — pode ser hostname, nome de arquivo ou só texto).

2

Leia o array de URLs

O painel da direita mostra um array JSON de URLs na ordem do documento, com duplicatas removidas. A pontuação final que veio da frase ao redor é tirada. Cada URL é validada pelo construtor URL — qualquer coisa malformada é pulada silenciosamente, então o array só tem URLs reais e parseáveis.

3

Copie ou baixe

Clique em Copiar para mandar o JSON para a área de transferência, ou em Baixar para salvar como arquivo .json. Minificar compacta o array em uma linha só caso você precise para uma entrada de log. Use Limpar na entrada para começar com um texto novo.

Quando você realmente vai usar isso

Auditar tickets de suporte

Um cliente cola uma thread longa de e-mails num ticket. O atendente (Marco Rivera) precisa saber todas as URLs que ele referenciou. Solta o corpo do e-mail aqui, pega o array, abre uma a uma. Poupa o cansaço visual do scroll e o risco de deixar uma passar batido.

Crawlear export de Slack ou Discord

Você exportou um canal e quer mandar todos os recursos linkados pro seu link checker ou bot de arquivamento. O export é JSON ou HTML, mas as URLs estão misturadas com texto, emoji e metadados. Cole tudo aqui e você fica com uma lista limpa de URLs pronta pra um fetch() em loop.

Auditoria de links antes de publicar posts e docs

A Priya Patel está prestes a publicar um post de 4.000 palavras e quer conferir se todo link externo ainda funciona. Cola o markdown, recebe o array de URLs, manda elas pra um checker. As recomendações do Google sobre links rastreáveis assumem que seus links funcionam — links quebrados machucam ranking.

Tirar URLs de logs estruturados

Logs de aplicação costumam embutir URLs em mensagens de erro, traces de requisição ou campos de referrer. Se você está investigando um incidente e precisa ver todas as URLs que passaram numa janela de 5 minutos, cole a fatia de log e desduplique. Muitas vezes essa lista deduplicada é o caminho mais rápido para achar a URL estranha que iniciou a cascata.

Perguntas frequentes

Pega ftp:// ou mailto: ou outros esquemas?

Não — só http:// e https://. Links web são o que as pessoas geralmente querem dizer com "extrair URLs", e o regex é propositalmente apertado para evitar falsos positivos. Se você precisa de outros esquemas, o WHATWG URL Standard suporta, mas a detecção fica mais nebulosa (endereços mailto: parecem texto, ftp: virou raro). Manda uma feature request se você tem o caso de uso real.

Como ele lida com links markdown tipo [texto](https://example.com)?

Limpinho. O regex acha https://example.com dentro dos parênteses e o trim de pontuação final tira o parêntese de fechamento. Então você consegue extrair a URL pura de markdown, BBCode, HTML <a href> e da maioria das sintaxes ao redor sem precisar de parser específico para cada formato.

Duplicatas ficam na ordem ou são removidas?

Removidas, com a ordem da primeira ocorrência preservada. Se seu texto menciona https://shop.example.com três vezes, ela aparece uma vez no resultado, na posição da primeira ocorrência. A deduplicação é um filtro Set simples — veja MDN sobre Set.

E URLs com caracteres estranhos — pipes, colchetes, parênteses?

Pipes (|) e colchetes são válidos em URLs mas raros nas reais, então o regex pega contanto que não venham depois de espaço em branco. Colchetes e parênteses fechando bem no final do match são aparados porque é muito mais provável que sejam pontuação da frase do que parte da URL. Se você tem uma URL real terminando em ), o construtor URL ainda assim aceita — mas você vai precisar pôr um espaço depois dela no texto pra manter o parêntese de fechamento colado.

Tem limite de tamanho?

Tem — 1 MB. Isso são alguns milhares de páginas de texto, mais que suficiente pra qualquer thread de e-mail, transcrição ou pedaço de log que você realmente vá colar. Se você tem um arquivo de vários megas, divida em pedaços ou rode antes grep/ripgrep na linha de comando.

Funciona offline?

Funciona. Tudo roda no seu navegador — o match do regex, a validação da URL, a deduplicação. O único tráfego de rede é o carregamento inicial da página. Depois que ela carrega você pode desconectar e a ferramenta continua trabalhando. O construtor URL vem embutido em todo navegador moderno conforme a URL API.

Outras ferramentas de URL e texto

Extrair é uma operação. Aqui vai o que combina naturalmente com ela: