도메인으로 국가를 알아보기 위해 아래와 같은 스크립트를 작성해 보았습니다. 우선 IP별 국가 리스트 DB 파일을 아래 링크에서 다운로드 합니다.
http://geolite.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip
다운로드 한 파일명은 "db.csv" 로 변경하여 사용하면 됩니다.
#!/usr/bin/python
import sys, socket , re
def url2ip(url):
url = socket.gethostbyname_ex(url)
url = str(url[2])
url = url.split(',')
url = re.sub('[\[\]\']', '', url[0])
return url
def decimal2hex(s):
s = int(s)
return '%02x' % s
def main():
url = sys.argv[1]
ip = url2ip(url)
print ip
splitip = ip.split('.')
ret= ''
for x in range(4):
ret += decimal2hex(splitip[x])
ip2decimal = int(ret,16)
db = open('db.csv', 'r')
list = db.readlines()
for x in list:
splitdb = x.split('","')
if int(splitdb[2]) < ip2decimal:
if int(splitdb[3]) > ip2decimal:
print '[' + splitdb[4] + ']', splitdb[5][:-2]
break
if __name__ == "__main__":
main()
사용방법은 아래와 같이 아주 간단 합니다.
[byjjoon@ByJJoon Location_Check]$ ./check.py google.com
74.125.127.106
[US] United States
[byjjoon@ByJJoon Location_Check]$ ./check.py ce.changwon.ac.kr
59.22.141.44
[KR] Korea, Republic of
[byjjoon@ByJJoon Location_Check]$ ./check.py baidu.cn
61.135.163.94
[CN] China
[byjjoon@ByJJoon Location_Check]$