Skip to content

juca-soft/meuip

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📖 Documentação — API FastAPI de IP & Network Info

🚀 Visão Geral

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.

📂 Estrutura de Arquivos

seu-projeto/
├── api.py              # API principal em FastAPI
└── templates/
    └── index.jinja       # GUI web (renderizada com Jinja2)

⚙️ Instalação

  1. Crie e ative um ambiente virtual (opcional, mas recomendado):

    python -m venv venv
    source venv/bin/activate   # Linux/Mac
    venv\Scripts\activate      # Windows
  2. Instale as dependências:

    pip install fastapi uvicorn jinja2

▶️ Execução

Execute o servidor local com:

uvicorn api:app --reload --host 0.0.0.0 --port 8000

Agora você pode acessar:


📡 Endpoints

GET /ip

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
  }
}

GET /

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

🌐 Recursos da GUI (index.jinja)

  • 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)

🛠️ Tecnologias Usadas

  • FastAPI → Backend e endpoints REST
  • Jinja2 → Renderização da GUI
  • JavaScript → Coleta de informações adicionais do navegador
  • HTML/CSS → Interface responsiva e moderna

📌 Possíveis Extensões Futuras

  • 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