A library for downloading and organizing WHOIS databases from Regional Internet Registries (RIRs) for further processing.
When I created this library, I realized that this approach does not suit me, but perhaps it will be useful to someone.
- Downloads WHOIS databases from all major RIRs
- Handles compressed (.gz) files automatically
- Provides structured access to WHOIS data
- Supports all RIR formats (AFRINIC, ARIN, APNIC, LACNIC, RIPE)
- Easy integration into data processing pipelines
The library fetches data from the following official RIR sources:
| RIR | Database URLs |
|---|---|
| AFRINIC | https://ftp.afrinic.net/pub/dbase/afrinic.db.gz |
| ARIN | https://ftp.arin.net/pub/rr/arin.db.gz |
| LACNIC | https://ftp.lacnic.net/lacnic/dbase/lacnic.db.gzhttps://ftp.lacnic.net/lacnic/irr/lacnic.db.gz |
| RIPE | https://ftp.ripe.net/ripe/dbase/ripe.db.gz |
| APNIC | https://ftp.apnic.net/apnic/whois/apnic.db.as-block.gzhttps://ftp.apnic.net/apnic/whois/apnic.db.as-set.gzhttps://ftp.apnic.net/apnic/whois/apnic.db.aut-num.gzhttps://ftp.apnic.net/apnic/whois/apnic.db.domain.gzhttps://ftp.apnic.net/apnic/whois/apnic.db.filter-set.gzhttps://ftp.apnic.net/apnic/whois/apnic.db.inet-rtr.gzhttps://ftp.apnic.net/apnic/whois/apnic.db.inet6num.gzhttps://ftp.apnic.net/apnic/whois/apnic.db.inetnum.gzhttps://ftp.apnic.net/apnic/whois/apnic.db.irt.gzhttps://ftp.apnic.net/apnic/whois/apnic.db.key-cert.gzhttps://ftp.apnic.net/apnic/whois/apnic.db.limerick.gzhttps://ftp.apnic.net/apnic/whois/apnic.db.mntner.gzhttps://ftp.apnic.net/apnic/whois/apnic.db.organisation.gzhttps://ftp.apnic.net/apnic/whois/apnic.db.peering-set.gzhttps://ftp.apnic.net/apnic/whois/apnic.db.role.gzhttps://ftp.apnic.net/apnic/whois/apnic.db.route-set.gzhttps://ftp.apnic.net/apnic/whois/apnic.db.route.gzhttps://ftp.apnic.net/apnic/whois/apnic.db.route6.gzhttps://ftp.apnic.net/apnic/whois/apnic.db.rtr-set.gz |
go get github.com/yourusername/whois-db-downloaderfunc main() {
folder, err := fs.New("/tmp/rirs")
if err != nil {
log.Fatal(err)
}
rir, err := rirs.New(folder)
if err != nil {
log.Fatal(err)
}
err = rir.Sync()
if err != nil {
log.Fatal(err)
}
}