Esta API em FastAPI fornece informações sobre o IP e a rede do usuário. Ela conta com dois endpoints principais:
GET /ip→ Retorna informações detalhadas em JSON sobre o cliente.GET /→ Renderiza uma GUI web (HTML + JS) mostrando o IP, cabeçalhos, dados do navegador e conexões de rede.
seu-projeto/
├── api.py # API principal em FastAPI
└── templates/
└── index.jinja # GUI web (renderizada com Jinja2)
-
Crie e ative um ambiente virtual (opcional, mas recomendado):
python -m venv venv source venv/bin/activate # Linux/Mac venv\Scripts\activate # Windows
-
Instale as dependências:
pip install fastapi uvicorn jinja2
Execute o servidor local com:
uvicorn api:app --reload --host 0.0.0.0 --port 8000Agora você pode acessar:
- JSON API: http://localhost:8000/ip
- Interface Web: http://localhost:8000/
Retorna um objeto JSON com:
| Campo | Descrição |
|---|---|
ip |
IP público detectado do cliente |
ip_meta |
Metadados (IPv4/IPv6, se é privado, global, reservado, etc.) |
reverse_dns |
Resolução PTR (quando disponível) |
ip_chain |
Lista de IPs detectados (X-Forwarded-For, Real-IP, cliente) |
scheme |
Protocolo (http/https) |
host |
Host enviado na requisição |
headers |
Subconjunto de cabeçalhos relevantes (User-Agent, Accept-Language, etc.) |
📌 Exemplo de resposta:
{
"ip": "203.0.113.25",
"ip_meta": {
"version": 4,
"is_private": false,
"is_global": true,
"is_loopback": false,
"is_reserved": false,
"is_multicast": false,
"is_link_local": false
},
"reverse_dns": "example.com",
"ip_chain": ["203.0.113.25"],
"scheme": "https",
"host": "localhost:8000",
"headers": {
"user_agent": "Mozilla/5.0",
"accept_language": "pt-BR,pt;q=0.9",
"x_forwarded_for": null,
"x_real_ip": null,
"cf_ipcountry": null,
"proxy_hint": null
}
}Renderiza uma interface gráfica (GUI) mostrando:
- IP público e reverse DNS
- Versão e escopo do IP (privado, global, etc.)
- Navegador e sistema do usuário
- Idiomas, resolução de tela, timezone
- Conexão (Network Info API: downlink, rtt, tipo de conexão)
- Tabela de cabeçalhos recebidos pelo servidor
- Cadeia de IPs através de proxies
- JSON interativo com botões para copiar e baixar
-
Layout moderno com CSS minimalista
-
Botões:
- 🔄 Recarregar JSON em tempo real
- 📋 Copiar para a área de transferência
- ⬇️ Baixar JSON
-
Dados adicionais via JavaScript (JS APIs do navegador):
- Resolução da tela
- Idiomas configurados
- Estado online/offline
- Memória aproximada do dispositivo
- Conexão de rede (quando disponível)
- FastAPI → Backend e endpoints REST
- Jinja2 → Renderização da GUI
- JavaScript → Coleta de informações adicionais do navegador
- HTML/CSS → Interface responsiva e moderna
- Integração com API externa de geolocalização (ex.: ipinfo.io, ipapi.com)
- Dashboard com histórico de acessos
- Testes de conectividade (ping/latência)
- Dark/Light mode na interface