gip
v3.0.4
Published
Dependency-free, TypeScript-friendly module and CLI tool that uses the Fetch API to retrieve your real public IPv4 address.
Maintainers
Readme
🐷 GIP (Get IP)
Dependency-free, TypeScript-friendly module and
CLI tool that uses the
Fetch API to retrieve your real public
IPv4 address from "IP echo" services. It fetches data concurrently from multiple services to provide
accurate results as quickly as possible. By default, GIP verifies the IP address by waiting for three matching responses from different
services, and you can customize this number using the ensure option.
GIP uses more than 20 different "echo IP" websites, and you can add your own with the services option. Because these services are
external, their availability and reliability may vary. You can reduce risk by choosing a sensible ensure count.
Requirements
NodeJS version 20.0.0 or higher.
Module installation
npm i gippnpm add gipdeno add npm:gipbun add gipModule usage
import gip from "gip";
try {
const ip = await gip();
console.log(ip);
} catch (error) {
console.log(`Can't get your IP. Reason: ${error}`);
}Usage with options
import gip from "gip";
const options = {
services: ["ipv4.icanhazip.com", "ifconfig.me/ip"],
ensure: 10,
verbose: true,
};
try {
const ip = await gip(options);
console.log(ip);
} catch (error) {
console.log(`Can't get your IP. Reason: ${error}`);
}CLI installation
npm i -g gippnpm add -g gipdeno i -g npm:gipbun i -g gipCLI usage
gip
# 133.74.20.69Setting ensure option
gip --ensure 10
# 133.74.20.69Passing custom services
gip --services "https://ipv4.icanhazip.com/" "https://ifconfig.me/ip"
# 133.74.20.69CLI usage without installation
npx gippnpm dlx gipdeno run --allow-net npm:gipbunx gipAdditional info
- Passing your own services will not prioritize them. You will get answer from the fastest services anyway.
- If you pass service without specified protocol, HTTPS will be used.
- List of built-in services is located in file services.mjs. If you know any reliable services, feel free to contribute.
