Main Tutorials

Python Whois client example

In this article, we will show you how to create a simple Whois client both in Python 2 and Python 3.

Tested

  1. Python 2.7.10
  2. Python 3.4.3

1. Python 3 Whois example

In Python 3, the socket accepts bytes, so you need to encode() and decode() manually.

whois3.py

import sys
import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("whois.arin.net", 43))

#convert string to bytes, socket need bytes
s.send((sys.argv[1] + "\r\n").encode())

#declares a bytes
response = b""
while True:
    data = s.recv(4096)
    response += data
    if not data:
        break
s.close()

#convert bytes to string
print(response.decode())

Run it


$ python3 whois3.py 108.162.202.6

#...
NetRange:       108.162.192.0 - 108.162.255.255
CIDR:           108.162.192.0/18
NetName:        CLOUDFLARENET
NetHandle:      NET-108-162-192-0-1
Parent:         NET108 (NET-108-0-0-0-0)
NetType:        Direct Assignment
#...
Note
Refer to this complete Python 3 Whois client example.

2. Python 2 Whois example

In Python 2, the socket accepts string.

whois2.py

import sys
import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("whois.apnic.net", 43))
s.send(sys.argv[1] + "\r\n")

response = ""
while True:
    data = s.recv(4096)
    response += data
    if not data:
        break
s.close()

print response

Run it


$ python whois2.py 59.0.0.1

#...
inetnum:        59.0.0.0 - 59.31.255.255
netname:        KORNET
descr:          KOREA TELECOM
descr:          Network Management Center
country:        KR
admin-c:        IM76-AP
tech-c:         IM76-AP
#...
Note
Refer to this complete Python 2 Whois client example.

References

  1. Python 2 Whois client
  2. Python 3 Whois client
  3. Collecting all IPv4 WHOIS records in Python

About Author

author image
Founder of Mkyong.com, love Java and open source stuff. Follow him on Twitter. If you like my tutorials, consider make a donation to these charities.

Comments

Subscribe
Notify of
0 Comments
Inline Feedbacks
View all comments