Skip to content
patrickbrandaoPublic

About

BadBlock - Internet API

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

BadBlock

Dados públicos sobre ASNs, blocos IP (com o RDAP do registro.br), a raiz do DNS, o DNS reverso dos IPv4 brasileiros e prestadoras de telecomunicações, servidos por uma API HTTP aberta em https://api.badblock.net.br.

Cada fonte de dados tem um par de apps: um coletor, que importa o arquivo da fonte para o PostgreSQL só quando ele muda, e uma API, dona de um caminho próprio no host da API. O rdns e o registrobr/rdapnum são as exceções: não há arquivo, e os coletores deles são sondas que perguntam o PTR de cada endereço e o RDAP de cada ASN e bloco, sem parar.

Fonte Coletor API
NIC.br / registro.br — ASNs, titulares (CNPJ) e blocos IP brasileiros collector-cgibr api-cgibr em /cgibr/
AFRINIC — delegações de ASNs e blocos (África) collector-afrinic api-afrinic em /afrinic/
APNIC — delegações de ASNs e blocos (Ásia-Pacífico) collector-apnic api-apnic em /apnic/
ARIN — delegações de ASNs e blocos (América do Norte) collector-arin api-arin em /arin/
LACNIC — delegações de ASNs e blocos (América Latina e Caribe) collector-lacnic api-lacnic em /lacnic/
RIPE NCC — delegações de ASNs e blocos (Europa, Oriente Médio, Ásia Central) collector-ripencc api-ripencc em /ripencc/
IANA — blocos por RIR, uso especial (bogons) e servidores RDAP collector-iana api-iana em /iana/
RIPE NCC asn.txt — nome e país de todos os ASNs alocados collector-ripe-asnames api-ripe-asnames em /ripe/asnames/
InterNIC named.root — nomes e endereços dos 13 servidores raiz do DNS collector-roothints api-roothints em /roothints/
InterNIC root.zone — a zona raiz do DNS: TLDs, servidores, glue e DS collector-rootzone api-rootzone em /rootzone/
IANA root-anchors.xml — âncoras de confiança DNSSEC da raiz collector-rootanchors api-rootanchors em /rootanchors/
Anatel — prestadoras de serviços de telecomunicações (CNPJ) e serviços notificados (SCM, STFC, SMP…) collector-anatel-pst api-anatel-pst em /anatel/pst/
BadBlock (sonda ativa) — DNS reverso (PTR) de todo IPv4 dos blocos do NIC.br, em /24, com resolução em tempo real collector-rdns api-rdns em /rdns/
registro.br (sonda ativa) — RDAP de cada ASN e bloco do NIC.br: titular, CNPJ, contatos, e-mails, delegações reversas collector-registrobr-rdapnum api-registrobr-rdapnum em /registrobr/rdapnum/
curl https://api.badblock.net.br/cgibr/asn/61610
curl https://api.badblock.net.br/lacnic/ip/187.87.29.10
curl https://api.badblock.net.br/arin/asn/7018
curl https://api.badblock.net.br/ripencc/prefix/193.0.0.0/21
curl https://api.badblock.net.br/iana/ip/10.0.0.1
curl https://api.badblock.net.br/ripe/asnames/asn/15169
curl https://api.badblock.net.br/roothints/server/K.ROOT-SERVERS.NET.
curl https://api.badblock.net.br/rootzone/tld/br
curl https://api.badblock.net.br/rootanchors/key/20326
curl https://api.badblock.net.br/anatel/pst/provider/02558157000162
curl https://api.badblock.net.br/rdns/ip/200.160.2.3

Toda API responde também /<fonte>/v1/... (versão fixa), /<fonte>/meta (estado dos dados), /<fonte>/status, /<fonte>/ping e o próprio manifesto OpenAPI 3.1 em /<fonte>/openapi.yaml (ex.: curl https://api.badblock.net.br/cgibr/openapi.yaml).

Documentação

As especificações em specs/ são a fonte da verdade: arquitetura, infraestrutura, o padrão dos apps e o detalhe de cada fonte — as rotas de cada API, com exemplos reais, estão em specs/fontes/<fonte>/api.md (ex.: cgibr). Para contribuir (pessoas e agentes de IA), comece por AGENTS.md.

Rodando localmente

Precisa de Docker e, para os testes, Go 1.27.

make up                                    # gera .env, cria as redes, sobe tudo
curl http://127.0.0.1:8101/cgibr/status    # portas 8101 a 8114, uma por API
make test test-int lint vet                # testes e lint de todos os apps
make specs-check                           # links, estrutura e mapa das specs

A primeira carga de cada coletor leva menos de um minuto depois que o Postgres fica pronto. O collector-rdns precisa dos resolvedores DNS do host em COLLECTOR_RDNS_DNS_SERVERS no .env (sem eles, só ele não sobe) e varre sem parar; o collector-registrobr-rdapnum precisa de um proxy que rode o IP (COLLECTOR_REGISTROBR_RDAPNUM_PROXY_URL) para passar de 8 consultas por minuto. A porta de cada API está em specs/fontes/README.md.

Estrutura

  • specs/ — especificações do projeto inteiro.
  • apps/<fonte>/ — uma pasta por fonte, com os apps dela: collector/ e api/, cada um com deploy e container próprios.
  • database/postgres/ — todo o SQL de schema: central/ (tabela jobs) e uma pasta por fonte.
  • database/valkey/ — cache das APIs, fila de tempo real do rdns e fila de atualização do registrobr/rdapnum.

Licença

MIT — veja LICENSE.

About

BadBlock - Internet API

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages