한글도메인 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정보를 얻을 수 있습니다.
유용하게 사용하세요 ~
'프로그래밍 > Python' 카테고리의 다른 글
Python 멀티쓰레드 기반 실시간 채팅 프로그램(Queue, Socket , Thread) (717) | 2020.08.18 |
---|---|
Python Socket Programming (TCP/UDP Echo 서버) (955) | 2020.08.14 |
Python csv, txt 파일 병합, 내용 합치기 (738) | 2020.08.13 |
Python 국가명, 국가코드, 위도, 경도 조회(Geoip, mmdb) (952) | 2020.08.13 |
Python 실행파일 만들기 (1916) | 2020.08.12 |