Simple tool for getting geolocation information on given IP address from various geolocation databases.
ip2geotools
is a simple tool for getting geolocation information on given IP address from various geolocation databases. This package provides an API for several geolocation databases.
To install the ip2geotools
module, type:
.. code-block:: bash
$ pip install ip2geotools
.. code-block:: pycon
>>> from ip2geotools.databases.noncommercial import DbIpCity
>>> response = DbIpCity.get('147.229.2.90', api_key='free')
>>> response.ip_address
'147.229.2.90'
>>> response.city
'Brno (Brno střed)'
>>> response.region
'South Moravian'
>>> response.country
'CZ'
>>> response.latitude
49.1926824
>>> response.longitude
16.6182105
>>> response.to_json()
'{"ip_address": "147.229.2.90", "city": "Brno (Brno střed)", "region": "South Moravian", "country": "CZ", "latitude": 49.1926824, "longitude": 16.6182105}'
>>> response.to_xml()
'<?xml version="1.0" encoding="UTF-8" ?><ip_location><ip_address>147.229.2.90</ip_address><city>Brno (Brno střed)</city><region>South Moravian</region><country>CZ</country><latitude>49.1926824</latitude><longitude>16.6182105</longitude></ip_location>'
>>> response.to_csv(',')
'147.229.2.90,Brno (Brno střed),South Moravian,CZ,49.1926824,16.6182105'
When installed, you can invoke ip2geotools
from the command-line:
.. code:: bash
ip2geotools [-h] -d {dbipcity,hostip,freegeoip,ipstack,maxmindgeolite2city,ip2location,dbipweb,maxmindgeoip2city,ip2locationweb,neustarweb,geobytescitydetails,skyhookcontextacceleratorip,ipinfo,eurek,ipdata}
[--api_key API_KEY] [--db_path DB_PATH] [-u USERNAME]
[-p PASSWORD] [-f {json,xml,csv-space,csv-tab,inline}] [-v]
IP_ADDRESS
Where:
ip2geotools
: is the script when installed in your environment, in development you could use python -m ip2geotools
instead
IP_ADDRESS
: IP address to be checked
-h
, --help
: show help message and exit
-d {dbipcity,hostip,...,ipdata}
: geolocation database to be used (case insesitive)
--api_key API_KEY
: API key for given geolocation database (if needed)
--db_path DB_PATH
: path to geolocation database file (if needed)
-u USERNAME
, --username USERNAME
: username for accessing given geolocation database (if needed)
-p PASSWORD
, --password PASSWORD
: password for accessing given geolocation database (if needed)
-f {json,xml,csv-space,csv-tab,inline}
, --format {json,xml,csv-space,csv-tab,inline}
: output data format
-v
, --version
: show program's version number and exit
Examples:
.. code:: bash
$ ip2geotools 147.229.2.90 -d dbipcity -f json
{"ip_address": "147.229.2.90", "city": "Brno (Brno střed)", "region": "South Moravian", "country": "CZ", "latitude": 49.1926824, "longitude": 16.6182105}
This module contains models for the data returned by geolocation databases and these models are also used for comparison of given and provided data.
ip2geotools.models.IpLocation
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Model for storing location of given IP address.
Attributes:
ip_address
: IP addresscity
: city where IP address is locatedregion
: region where IP address is locatedcountry
: country where IP address is located (two letters country code)latitude
: latitude where IP address is locatedlongitude
: longitude where IP address is locatedMethods:
to_json
: returns model data in JSON formatto_xml
: returns model data in XML format (root element: ip_location
)to_csv
: returns model data in CSV format separated by given delimiter__str__
: internal string representation of model, every single information on new lineThis module provides special exceptions used when accessing data from third-party geolocation databases.
ip2geotools.errors.LocationError
: a generic location errorip2geotools.errors.IpAddressNotFoundError
: the IP address was not foundip2geotools.errors.PermissionRequiredError
: problem with authentication or authorization of the request; check your permission for accessing the serviceip2geotools.errors.InvalidRequestError
: invalid requestip2geotools.errors.InvalidResponseError
: invalid responseip2geotools.errors.ServiceError
: response from geolocation database is invalid (not accessible, etc.)ip2geotools.errors.LimitExceededError
: limits of geolocation database have been reachedFollowing classes access many different noncommercial and commercial geolocation databases using defined interface.
ip2geotools.databases.interfaces
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
IGeoIpDatabase
: interface for unified access to the data provided by various geolocation databasesip2geotools.databases.noncommercial
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
DbIpCity
: https://db-ip.com/api/HostIP
: http://hostip.info/Freegeoip
: http://freegeoip.net/ Database is deprecated!Ipstack
: https://ipstack.com/MaxMindGeoLite2City
: https://dev.maxmind.com/geoip/geoip2/geolite2/Ip2Location
: https://lite.ip2location.com/database/ip-country-region-city-latitude-longitudeip2geotools.databases.commercial
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
DbIpWeb
: https://db-ip.com/MaxMindGeoIp2City
: https://www.maxmind.com/Ip2LocationWeb
: https://www.ip2location.com/NeustarWeb
: https://www.neustar.biz/resources/tools/ip-geolocation-lookup-tool/GeobytesCityDetails
: http://geobytes.com/get-city-details-api/SkyhookContextAcceleratorIp
: http://www.skyhookwireless.com/IpInfo
: https://ipinfo.io/Eurek
: https://www.eurekapi.com/Ipdata
: https://ipdata.co/This code requires Python 3.3+ and several other packages listed in requirements.txt
.
Please report all issues with this code using the GitHub issue tracker <https://github.com/tomas-net/ip2geotools/issues>
_
ip2geotools
is released under the MIT License. See the bundled LICENSE
_ file for details.
ip2geotools
was written by Tomas Caha FEEC <http://www.feec.vutbr.cz/>
_ BUT <https://www.vutbr.cz/>
_.