IP lookup using IPIP.net database (Node.js & Browser)
npm install ipdb> IP lookup using IPIP.net database (Node.js & Browser)
Free databases available for download here. If you need better accuracy you should consider buying commercial subscription.
``bash`
$ npm install ipdb
#### Via CDN
`html`
#### Via npm + bundler (Webpack, Vite, etc.)
`bash`
$ npm install ipdb
#### Using file path (recommended)
`js
const IPDB = require('ipdb');
const ipdb = new IPDB('./data/ipipfree.ipdb');
const result = ipdb.find('183.62.57.1');
console.log(result);
/*
{
code: 0,
data: {
country_name: '中国',
region_name: '广东',
city_name: '广州',
bitmask: 18,
ip: '183.62.57.1'
}
}
*/
`
#### Using Buffer
`js
const fs = require('fs');
const IPDB = require('ipdb');
const buffer = fs.readFileSync('./data/ipipfree.ipdb');
const ipdb = new IPDB(buffer);
const result = ipdb.find('183.62.57.1');
console.log(result.data);
`
#### Using Fetch API
`js
// Load database file from server
const response = await fetch('/data/ipipfree.ipdb');
const arrayBuffer = await response.arrayBuffer();
const ipdb = new IPDB(arrayBuffer);
const result = ipdb.find('183.62.57.1');
console.log(result.data);
`
#### Using File API (user upload)
`html`
#### CDN Usage
`html`
#### ES Module (modern browsers)
`html`
Creates an IPDB instance.
#### data
Type: string | Buffer | ArrayBuffer | Uint8Array
- Node.js: File path (string) or Buffer
- Browser: ArrayBuffer or Uint8Array (loaded via Fetch/File API)
- Note: File path string is only supported in Node.js environment
#### options
Type: object
##### patches
Type: array[]
Default:
See Patches
Lookup IP address geolocation information.
#### ip
Type: string
IPv4 or IPv6 address
#### options
Type: object
##### language
Type: stringCN
Default:
Language code (e.g., 'CN', 'EN')
##### patches
Type: array[]
Default:
Query-specific patch functions. See Patches
#### Returns
Type: object
- code: number - Status code (0 = success, -1 = error)object
- data: - Geolocation data (only when code is 0)string` - Error message (only when code is -1)
- Fields depend on the database (e.g., country_name, city_name, region_name)
- message:
- @ipdb/iso3166 - IPIP.net database patches (ISO-3166)
- @ipdb/cac - IPIP.net database patches (中国行政区划代码)
- @ipdb/range - IPIP.net database patches (range of cidr)
This library supports modern browsers with the following features:
- ES6+ (or use a transpiler)
- Typed Arrays (Uint8Array, ArrayBuffer)
- Fetch API or File API (for loading database files)
- Chrome 60+
- Firefox 55+
- Safari 11+
- Edge 79+
- UMD (minified + gzipped): ~2KB
- ESM (minified + gzipped): ~2KB
For IE11 and other older browsers, please use appropriate polyfills:
- Typed Array polyfill
- Fetch API polyfill
- Promise polyfill
- @ipdb/database - IPIP.net free database
- qqwry.ipdb - 纯真数据库 IPIP.net 格式版
MIT © metowolf