v0.2.0 — VPN provider expansion
OpenASN for Ruby — offline IP origin intelligence: classify any IP as residential, mobile, hosting, VPN, Tor exit, iCloud Private Relay, enterprise gateway, business, education, government, CGNAT, or unknown — in microseconds, with zero API calls and zero runtime dependencies. Data is the CC0 OpenASN dataset, refreshed nightly; every verdict is auditable to its source.
Highlights
- VPN provider coverage, massively expanded. 34 new provider-published Tier B sources join ProtonVPN, organized into config groups you opt into deliberately:
vpn_providers(on by default — exact-IP endpoints published by the providers themselves): Mullvad, IVPN, Private Internet Access, AirVPN, Windscribe, PrivadoVPN, RiseupVPN, WLVPN, WorldVPN, OVPN, Anoninevpn_heavy(opt-in): NordVPN (~35 MB API response)vpn_dns(opt-in — provider-published hostnames resolved via your own DNS): Surfshark, IPVanish, PrivateVPN, PureVPN, TorGuard, FastestVPN, VPNSecure, TunnelBear, StrongVPN, VyprVPN, Giganews, SlickVPN, AzireVPN, VPN.ac, Trust.Zonepublic_relays(opt-in — volunteer-run, high-churn): VPN Gate, VPNBook, FreeVPN.us
- New source machinery, still 100% stdlib: bounded ZIP reader for
.ovpnarchives (64 MB inflate cap), HTML status-page parsers, threaded DNS resolution with an injectableConfiguration.dns_resolverhook, and form-POST support with method/header-preserving redirects. - Faster lookups: overlay resolution now uses a per-family index precomputed once per snapshot — measurably faster with many overlays enabled.
- Reliability fix: the default dataset URL is now the tag-addressed
releases/download/latest/…form, immune to GitHub's "Latest" badge drifting to a dated snapshot (data repoDECISIONS.mdD-REL-1). Pinned by a regression test.
Install
# Gemfile
gem "openasn"result = OpenASN.lookup("203.0.113.7")
result.verdict # => :residential_isp
result.infrastructure? # => falseFull details in CHANGELOG.md.
Full Changelog: v0.1.0...v0.2.0