Skip to main content

IP Whois Resolution and Parsing

Project description

ipwhois is a simple package for retrieving and parsing whois data for IPv4 and IPv6 addresses. This code was quickly thrown together to demonstrate functionality, and is by no means optimized or fully featured.

This version requires Python 3.3+ (for the ipaddress library) and dnspython3. Other Python version support is planned.

Usage Examples

Typical usage:

>>>> import ipwhois
>>>> from pprint import pprint

>>>> obj = ipwhois.IPWhois("74.125.225.229")
>>>> results = obj.lookup(False)
>>>> pprint(results)

{
'asn': '15169',
'asn_cidr': '74.125.225.0/24',
'asn_country_code': 'US',
'asn_date': '2007-03-13',
'asn_registry': 'arin',
'nets': [{'cidr': '74.125.0.0/16',
          'city': 'Mountain View',
          'country': 'US',
          'description': 'Google Inc.',
          'name': 'GOOGLE',
          'state': 'CA'}],
'query': '74.125.225.229',
'raw': None
}

REST (HTTP):

>>>> import ipwhois
>>>> from pprint import pprint

>>>> obj = ipwhois.IPWhois("74.125.225.229")
>>>> results = obj.lookup_rws(False)
>>>> pprint(results)

{
'asn': '15169',
'asn_cidr': '74.125.225.0/24',
'asn_country_code': 'US',
'asn_date': '2007-03-13',
'asn_registry': 'arin',
'nets': [{'cidr': '74.0.0.0/8',
          'city': 'Chantilly',
          'country': 'US',
          'description': 'American Registry for Internet Numbers',
          'name': 'NET74',
          'state': 'VA'},
         {'cidr': '74.125.0.0/16',
          'city': 'Mountain View',
          'country': 'US',
          'description': 'Google Inc.',
          'name': 'GOOGLE',
          'state': 'CA'}],
'query': '74.125.225.229',
'raw': None
}

Proxy (Optional before ipwhois.IPWhois.lookup_rws()):

>>>> import ipwhois
>>>> ipwhois.set_proxy("192.168.0.1", "80", "some_username", "some_password")

Countries:

>>>> import ipwhois

>>>> countries = ipwhois.get_countries()
>>>> obj = ipwhois.IPWhois("74.125.225.229")
>>>> results = obj.lookup(False)
>>>> print(countries[results['nets'][0]['country']])

United States

Installing

Latest version from PyPi:

pip install ipwhois

Latest version from GitHub:

pip install -e git+https://github.com/secynic/ipwhois@master#egg=ipwhois

Parsing

Parsing is currently limited to CIDR, country, description, name, and state fields. This is assuming that those fields are present.

Some IPs have parent networks listed. The parser attempts to recognize this, and break the networks into individual dictionaries. If a single network has multiple CIDRs, they will be separated by ‘, ‘.

Sometimes, you will see whois information with multiple consecutive same name fields, e.g., Description: some text\nDescription: more text. The parser will recognize this and the returned result will have these separated by ‘\n’.

REST (HTTP)

IPWhois.lookup_rws() should be faster than IPWhois.lookup(), but may not be as reliable. APNIC, LACNIC, and AFRINIC do not have a Whois-RWS service yet. We have to rely on the Ripe RWS service, which does not contain all of the data we need.

Changelog

0.1.5 (2013-09-13)

  • Added set_proxy() function for proxy support in Whois-RWS queries.

  • Added IPWhois.lookup_rws() function for Whois-RWS queries.

0.1.4 (2013-09-12)

  • Added validity checks for the asn_registry value due to a bug in the Team Cymru ASN lookup over night.

  • Added timeout argument to IPWhois(). This is the default timeout in seconds for socket connections.

  • Fixed decoding issue in IPWhois.get_whois().

0.1.3 (2013-09-11)

  • Added exception handling with query retry support for socket errors, timeouts, connection resets.

  • Moved ASN queries to their own functions (IPWhois.get_asn_dns() and IPWhois.get_asn_whois())

  • Moved whois query to its own function (IPWhois.get_whois())

  • Country codes are now forced as upper case in the return dictionary.

0.1.2 (2013-09-10)

  • Fixed file path for get_countries().

  • Fixed variable names that conflicted with builtins.

  • Added content to README.

  • Moved CHANGES.txt to CHANGES.rst and added to setup.py.

  • Download URL now points to GitHub master tarball.

0.1.1 (2013-09-09)

  • Fixed README issue.

0.1.0 (2013-09-06)

  • Initial release.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ipwhois-0.1.5.zip (17.1 kB view details)

Uploaded Source

File details

Details for the file ipwhois-0.1.5.zip.

File metadata

  • Download URL: ipwhois-0.1.5.zip
  • Upload date:
  • Size: 17.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for ipwhois-0.1.5.zip
Algorithm Hash digest
SHA256 bd0d1e46a3d6091d79899bf6633ac1976602829ecb1449c26530b659f569ed9c
MD5 8dd365da4d904d1e99473ee1c1301b5d
BLAKE2b-256 2b5b56856d5a6c40887ca1107d91d6e1129b42b0cfea0f670a8733c85dcf284e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page