Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Maxmind GEO Lookup

License

NotificationsYou must be signed in to change notification settings

runk/node-maxmind

Repository files navigation

Javascript module for Geo IP lookup using Maxmind binary databases (aka mmdb or geoip2).Fastest Maxmind lookup library available - up to17,000% faster than other libraries. Module has 100% test coverage with comprehensive test suite. It natively works with binary Maxmind database format and doesn't require any "CSV - {specific lib format}" conversions as some other modules do. Maxmind binary databases are highly optimized for size and performance so there's no point using other formats.

GEO databases

You might want to usegeolite2 module with free geo databases. Alternatively, free databases available fordownload here. If you need better accuracy you should consider buyingcommercial subscription.

Installation

npm i maxmind

Usage

importmaxmind,{CityResponse}from'maxmind';constlookup=awaitmaxmind.open<CityResponse>('/path/to/GeoLite2-City.mmdb');console.log(lookup.get('66.6.44.4'));// inferred type maxmind.CityResponseconsole.log(lookup.getWithPrefixLength('66.6.44.4'));// tuple with inferred type [maxmind.CityResponse|null, number]

Sync API

You can useReader class directly in case if you would want to instantiate it in non-async fashion. Use cases would include receiving a buffer database over network, or just reading it synchronously from disk.

import{Reader}from'maxmind';constbuffer=fs.readFileSync('./db.mmdb');constlookup=newReader<CityResponse>(buffer);constcity=lookup.get('8.8.8.8');const[city2,prefixLength]=lookup.getWithPrefixLength('66.6.44.4');

Supported response types:

- CountryResponse- CityResponse- AnonymousIPResponse- AsnResponse- ConnectionTypeResponse- DomainResponse- IspResponse

IPv6 Support

Module is fully compatible with IPv6. There are no differences in API between IPv4 and IPv6.

constlookup=awaitmaxmind.open('/path/to/GeoLite2.mmdb');constlocation=lookup.get('2001:4860:0:1001::3004:ef68');

Options

maxmind.open(filepath, [options])

  • filepath:<string> Path to the binary mmdb database file.
  • options:<Object>
    • cache:<Object> Cache options. Under the bonnet module usestiny-lru cache.
      • max:<number> Max cache items to keep in memory.Default:10_000.
    • watchForUpdates:<boolean> Supports reloading the reader when changes occur to the database that is loaded.Default:false.
    • watchForUpdatesNonPersistent:<boolean> Controls whether the watcher should be persistent or not. If it is persistent, a node process will be blocked in watching state if the watcher is the only thing still running in the program.Default:false.
    • watchForUpdatesHook:<Function> Hook function that is fired on database update.Default:null.

Does it work in browser?

Current module is designed to work in node.js environment. Check outmmdb-lib that's used under the bonnet - it's environment agnostic and does work in browser.

IP addresses validation

Module supports validation for both IPv4 and IPv6:

maxmind.validate('66.6.44.4');// returns truemaxmind.validate('66.6.44.boom!');// returns falsemaxmind.validate('2001:4860:0:1001::3004:ef68');// returns truemaxmind.validate('2001:4860:0:1001::3004:boom!');// returns false

GeoIP Legacy binary format

In case you want to use legacy GeoIP binary databases you should usemaxmind@0.6.

References

License

MIT

About

Maxmind GEO Lookup

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Sponsor this project

    Packages

    No packages published

    Contributors27


    [8]ページ先頭

    ©2009-2025 Movatter.jp