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.3Toda 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).
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.
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 specsA 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.
specs/— especificações do projeto inteiro.apps/<fonte>/— uma pasta por fonte, com os apps dela:collector/eapi/, cada um com deploy e container próprios.database/postgres/— todo o SQL de schema:central/(tabelajobs) e uma pasta por fonte.database/valkey/— cache das APIs, fila de tempo real dordnse fila de atualização doregistrobr/rdapnum.
MIT — veja LICENSE.