m-whois is a small python whois search module capable of finding multiple available domains via a file or list type. It's a good way to search for domains that are available to buy. (http://jrosco.github.io/mwhois)
Dependencies
- Python >= 2.7.3 (Python 3 not supported yet) Download from http://www.python.org/download/
- To use the proxy feature you'll need the pysocks module installed. Download from https://pypi.python.org/pypi/PySocks/
Features
- Search for single/multiple domains with direct connection to a large list of whois servers
- Show only available domains
- 100+ searchable TLDS
- 30+ gTLDS e.g .graphics, .guru, .technology, .today etc
- Search second whois server if first one fails (limited to certain tld's)
- Connect to whois server via a proxy
Features to come
- TODO: Caching results for quicker responses and avoid exceeding query limits
- TODO: Print results to csv and pdf
How to use mwhois python module
Note: In beta, use with caution, criticism welcomed
Install
- Clone repo(requires git to be installed):
git clone https://github.com/jrosco/mwhois.git mwhoisor Download Zip File to the right (https://github.com/jrosco/mwhois/archive/master.zip) - If you downloaded zip file ("unzip mwhois-master.zip" and "cd mwhois-master/src"
- If you used git clone ("cd mwhois/")
- Now Run: python setup.py install (you'll need correct permissions to install module. For linux use the sudo command)
- See examples below on how to use this these modules (These are also shown in examples/examples.py)
Examples
Search for single domain
python examples/cmd.py github.com
Search for multiple domains using one liner wordlist
python examples/cmd.py -t com -i files/wordlist-sample
You can also run a sample GUI using the default TkInter module
python examples/GUI/mgui.py
You can find a mature application built around this module here http://sourceforge.net/projects/xwh0i5/
Usage
# """Get the whois server url by providing a domain name"""
# from mwhois.whois import WhoisInfo
#
# w = WhoisInfo()
# w.domain = "on.net"
# whoisserver = w.get_whois_server()
# print(whoisserver)
#
#
# """Get 'not found' text on whois server by providing a domain name"""
# from mwhois.whois import WhoisInfo
#
# w2 = WhoisInfo()
# w2.domain = "ping.net"
# w2.get_domain_tld()
# txt = w2.tld_not_found_text()
# print(txt)
#
# """Get 'not found' text on whois server by providing a tld .e.g .com)"""
# from mwhois.whois import WhoisInfo
#
# w3 = WhoisInfo()
# w3.tld = "jp"
# txt2 = w3.tld_not_found_text()
# print(txt2)
#
# """Single domain search"""
# from mwhois.whosearch import WhoisSearch
# import mwhois.const as CONST
#
# s = WhoisSearch(dname='iama.ninja', debug=False)
# """ Enable proxy below by setting s.connection.proxy to True """
# s.connection.proxy = False
# s.connection.proxy_host = '127.0.0.1'
# s.connection.proxy_port = 8080
# s.connection.proxy_type = CONST.PROXY_TYPE_SOCKS5
# s.whois_search()
# print(s.response())
# #
# """Print Whois attributes returned as a list"""
# print(s.creation_date())
# print(s.expiry_date())
# print(s.update_date())
# print(s.registrant())
# print(s.nameservers())
# print(s.emails())
#
# """ Search for multiple domains """
#from mwhois.whosearch import WhoisSearch
#
#domain_list = ['google','doesnotexist123','yahoo']
#
# """ deadonly will only show dead domains if set to true otherwise all domains are shown """
#m = WhoisSearch(tld='org',wordlist=domain_list, deadonly=False)
# multi = m.whois_multi_search()
#
# """Returns True(1) if found or False(0) is not found"""
# for i in multi:
# print i
#
# """ Your can also use a file as a wordlist """
# from mwhois.whosearch import WhoisSearch
#
# m = WhoisSearch(debug=False)
# m.tld='com'
# m.wordlist='./wordlist.txt'
#
# txt_file = m.whois_multi_search()
#
# """ Loop over txt_file generator and print list results containing ['status value', 'domain name']"""
# for x in txt_file:
#
# domain = x[1]
#
# if x[0] == 1:
# status = 'taken'
# else:
# status = 'not taken'
#
# print('Domain %s is %s ' % (domain, status))
#
# """ Loop over txt_file generator and print whois attributes"""
# for x in txt_file:
#
# domain = x[1]
#
# try:
# date = m.creation_date()[0]
# except:
# date = 'N/A'
#
# print('Domain %s has creation date %s' % (domain, date))