한글도메인 IP추출 자동화 모듈 만들기

 

보통 도메인에 대한 IP를 추출할 때 nslookup 을 많이 사용합니다.

도메인이 영문자라면 문제없이 IP정보를 응답받을 수 있으나 한글의 경우 아래와 같이 실제 사이트('한국인터넷정보센터.한국)가 존재하지만 응답을 주지 않습니다.

 

[실제 한글 도메인 사용 중]


[cmd - nslookup - 한국인터넷정보센터.한국]

 

한글 도메인의 경우 퓨니코드로 변환을 해서 질의를 해야합니다.

 

[퓨니코드 변환]

URL : https://xn--3e0bx5euxnjje69i70af08bea817g.xn--3e0b707e/jsp/resources/domainInfo/punyCode.jsp

 

퓨니코드 : "xn--3e0bx5euxnjje69i70af08bea817g.xn--3e0b707e"

 

 

[cmd - nslookup - 퓨니코드]

위와 같은 사이트로 접속하여 퓨니코드를 알아낸 후 nslookup을 통해 질의를 하면 정상적으로 IP정보를 확인할 수 있습니다.

 

하지만 도메인이 여러개일 경우 사람이 수동으로 검색해서 조회한다는 것은 참으로 노가다성이 짙은 작업일 것입니다.

이를 또 해결하기 위해 파이썬으로 퓨니코드로 자동변환하여 IP를 조회해오는 소스코드를 작성해보았습니다.

 

[한글 -> 퓨니코드 변환 소스]

import re
import socket
domain_list = ['한국인터넷정보센터.한국', '내도메인.한국'] #한글도메인 리스트
for domain in domain_list:
    domain_kor = domain #한글도메인저장
    domlist = domain.split('.') #.을 기준으로 도메인 분리
    pat = re.compile(u"[ㄱ-ㅎ|ㅏ-ㅣ|가-힣]+")  # 한글패턴 정규표현식
    for start in domlist:
        value = start
        value = value.strip()
        if len(pat.findall(value)) > 0:
            # 한글 도메인 검색
            st = 'xn--' + value.encode('punycode').decode('euc-kr')  # pat 리스트요소를 punycode로 변환
            domain = str(domain.replace(value, st))  # 변환한 punycode를 'xn--'문자열을 추가하여 원본 한글 도메인에 치환

    result = socket.gethostbyname(domain) #도메인 IP질의
    print('한글URL : ' + str(domain_kor))
    print('퓨니코드 : ' + domain)
    print('IP : ' + result)
    print('-------------------------------------------------------')

 

[소스코드 실행]

 

소스코드의 "domain_list" 변수에 한글 도메인을 작성해주면 위와 같이 아주 간편하게 퓨니코드와 IP정보를 얻을 수 있습니다.

 

유용하게 사용하세요 ~

+ Recent posts