Giter VIP home page Giter VIP logo

countryipspoofer's Introduction

Npm Version Build Status Test Coverage Maintainability Known Vulnerabilities dependencies Status devDependencies Status

country-ip-spoofer

A fully typed Node.js module that generates a random IP address that is associated with a desired country.

This module is especially useful if you use an API that requires an IP address to be passed to it in order to realize the country of a user, and you want to spoof the user country.

Important notes

This module leverages the IP2Location™ data set, which is licensed under Creative Commons Attribution-ShareAlike 4.0.
As such, the module does not package the actual data, and you are responsible to load it to the module while not infringing with said licence.

  • For better results, refresh your data set once in a while.

Installation

npm install country-ip-spoofer

Or

yarn add country-ip-spoofer

Setup

Before you begin, you need to prepare the data set to be used by the module (only perform once).

Please download the IPV4 CSV file from IP2Location™ and run the following temp script (install the csv package if it is missing - you can delete it later):

import {createDataTable} from 'country-ip-spoofer/dataTableCreator';

const csfFile = 'path to the downloaded csv file';
const outputFile = 'path to output the data set';

createDataTable(csfFile, outputFile)
    .then(() => {
        console.log('done');
    });

Then save the output file to your project.

Usage

import * as request from 'request'; // We only use this to test the resulting ips
import { getIpOfCountry, setDataTable, DataTable } from 'country-ip-spoofer';
import * as dataSet from 'path to your json data set form previous step';

// Load the data set before yuo begin
setDataTable(dataSet as DataTable);

const countryCode = 'AU';

const ip = getIpOfCountry(countryCode);
console.log(ip); // prints '103.246.130.28' for example

// Test out the ip location
const requestParams = {
    url: `http://ip-api.com/json/${ip}`,
    json: true,
};
request(requestParams, (err, result) => {
    const realCountryCode = result.toJSON().body.countryCode;
    console.log(realCountryCode); // Should print 'AU'
    console.log(realCountryCode === countryCode ? 'Success' : 'Fail'); // Should print 'Success'
});

countryipspoofer's People

Contributors

regevbr avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.