Validador de URL
Cole uma URL e veja na hora se ela é válida e como ela se divide em protocolo, host, porta, caminho e parâmetros.
Processamento local: nada do que você digita sai do seu navegador.
Como usar
Cole ou digite a URL. A análise acontece enquanto você digita, usando o mesmo interpretador de URLs (URL) que os navegadores modernos usam. Se a URL é válida, mostramos protocolo, host, porta, usuário, caminho, query, fragmento e origem, além de uma tabela com os parâmetros da query já decodificados.
Erros e avisos comuns
- Falta o protocolo:
exemplo.com.brsozinho não é uma URL absoluta; usehttps://exemplo.com.br. - Espaços devem ser codificados como
%20. - http não é criptografado; prefira https.
- Usuário e senha na URL (
https://user:senha@site) são inseguros.
Uma URL válida só tem a forma correta: a validação não acessa o endereço e não garante que a página exista.
Como implementar em código
Exemplos prontos para usar no seu projeto.
function analisarUrl(texto) {
try {
const u = new URL(texto); // lança TypeError se for inválida
return { protocolo: u.protocol, host: u.hostname, porta: u.port,
caminho: u.pathname, query: Object.fromEntries(u.searchParams) };
} catch {
return null;
}
}
console.log(analisarUrl('https://exemplo.com.br:8443/a/b?x=1&y=2#topo'));
console.log(analisarUrl('exemplo.com.br')); // null (falta o protocolo)from urllib.parse import urlparse, parse_qs
def analisar_url(texto: str):
u = urlparse(texto)
# urlparse é permissivo: exija protocolo e host para considerar válida
if u.scheme not in ("http", "https") or not u.hostname:
return None
return {"protocolo": u.scheme, "host": u.hostname, "porta": u.port,
"caminho": u.path, "query": parse_qs(u.query)}
print(analisar_url("https://exemplo.com.br:8443/a/b?x=1&y=2#topo"))
print(analisar_url("exemplo.com.br")) # Nonepackage main
import (
"fmt"
"net/url"
)
func main() {
for _, s := range []string{"https://exemplo.com.br:8443/a/b?x=1&y=2#topo", "exemplo.com.br"} {
// Parse é permissivo: exija protocolo e host para considerar válida
u, err := url.Parse(s)
if err != nil || u.Scheme == "" || u.Host == "" {
fmt.Println("inválida:", s)
continue
}
fmt.Println(u.Scheme, u.Hostname(), u.Port(), u.Path, u.Query())
}
}void main() {
for (final s in ['https://exemplo.com.br:8443/a/b?x=1&y=2#topo', 'exemplo.com.br']) {
final u = Uri.tryParse(s);
// Uri.tryParse aceita quase tudo: exija protocolo e host
if (u == null || !u.hasScheme || u.host.isEmpty) {
print('inválida: $s');
continue;
}
print('${u.scheme} ${u.host} ${u.hasPort ? u.port : "-"} ${u.path} ${u.queryParameters}');
}
}import java.net.URI;
public class UrlValidator {
public static void main(String[] args) {
for (String s : new String[]{"https://exemplo.com.br:8443/a/b?x=1&y=2#topo", "exemplo.com.br"}) {
try {
URI u = new URI(s); // lança URISyntaxException se mal formada
if (u.getScheme() == null || u.getHost() == null) {
System.out.println("inválida: " + s); // sem protocolo ou host
continue;
}
System.out.println(u.getScheme() + " " + u.getHost() + " " + u.getPort()
+ " " + u.getPath() + " " + u.getQuery());
} catch (Exception e) {
System.out.println("inválida: " + s + " (" + e.getMessage() + ")");
}
}
}
}getPort() devolve -1 quando a URL não informa a porta.
<?php
function analisarUrl(string $texto): ?array {
// FILTER_VALIDATE_URL exige protocolo e host
if (filter_var($texto, FILTER_VALIDATE_URL) === false) {
return null;
}
$p = parse_url($texto);
parse_str($p['query'] ?? '', $query);
return [
'protocolo' => $p['scheme'],
'host' => $p['host'],
'porta' => $p['port'] ?? null,
'caminho' => $p['path'] ?? '',
'query' => $query,
];
}
print_r(analisarUrl('https://exemplo.com.br:8443/a/b?x=1&y=2#topo'));
var_dump(analisarUrl('exemplo.com.br')); // NULLusing System;
class Program
{
static void Main()
{
foreach (var s in new[] { "https://exemplo.com.br:8443/a/b?x=1&y=2#topo", "exemplo.com.br" })
{
// UriKind.Absolute exige protocolo
if (Uri.TryCreate(s, UriKind.Absolute, out var u) &&
(u.Scheme == Uri.UriSchemeHttp || u.Scheme == Uri.UriSchemeHttps))
Console.WriteLine($"{u.Scheme} {u.Host} {u.Port} {u.AbsolutePath} {u.Query}");
else
Console.WriteLine($"inválida: {s}");
}
}
}Uri.Port devolve a porta padrão do protocolo quando ela não está na URL.
Perguntas frequentes
A ferramenta verifica se o site está no ar?
Não. Ela só analisa o texto da URL no seu navegador. Nenhuma requisição é feita ao endereço informado.
Por que localhost:3000 aparece com aviso?
Sem o https:// ou http:// na frente, o interpretador entende que "localhost" é o protocolo. Escreva http://localhost:3000 para a leitura correta.
A porta aparece vazia, é erro?
Não. Quando a URL não informa a porta, vale a padrão do protocolo (80 para http e 443 para https), e mostramos isso na tabela.
Veja também
Precisa de um sistema ou app sob medida?
A VcInova desenvolve software, aplicativos e integrações para empresas de todo o Brasil.
Fale com a VcInova