본문 바로가기

개발/Python

Python(파이썬)으로 Whois(후이즈)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import sys
import re
from ipwhois import IPWhois
from pprint import pprint
 
 
file = open("domains.txt", "r")
 
ips = []
cnt = 0
for text in file.readlines():
     
    text = text.rstrip()
    regex = re.findall(r'(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})$', text)
    if regex is not None and regex not in ips:
        cnt += 1
        ips.append(regex)
 
file.close()
 
print 'ip count : ' + str(cnt)
 
file_w = open("results.txt", "a")
 
for ip in ips:
    try :
        addy = "".join(ip)
        obj = IPWhois(addy)
        results = obj.lookup(get_referral=True)
         
        query = results['query']
        nets = None
        if results['nir'] == None :
            nets = results['nets'][0]
        else :
            nets = results['nir']['nets'][0]
         
        name =  nets['name'].replace('\n','').replace(",","")
        country = nets['country'].replace('\n','').replace(",","")
        address = nets['address'].replace('\n','').replace(",","")
        #ip2 = results['query'] + "," + results['nets'][0]['name'] + "," + results['nets'][0]['country'].rstrip('\n') + "," + results['asn']
        result =  query + ',' + name+  ',' + country + ',' + address
        print result
        file_w.write(result + '\n')
    except :
        pass
     
file_w.close()