파이문

[Python] xn-- 과 같이 시작하는 URL 을 사람이 볼 수 있는 문자로 변경하기 본문

TIL

[Python] xn-- 과 같이 시작하는 URL 을 사람이 볼 수 있는 문자로 변경하기

민Z 2019. 5. 9. 15:56

xn-- 과 같이 시작하는 URL 을 사람이 볼 수 있는 문자로 변경하기


URL 가지고 놀다 보면 xn-- 으로 시작하는 문자를 볼 수 있다. 이를 punycode 라고 하는데 알아 보기가 힘들어서 파이썬으로 간단하게 사람이 볼 수 있는 (human readable) 문자로 변경 가능한 예제를 작성하였다.

 

아래 처럼 idna 로 decode 하면 된다. 그 전에 해당 문자열은 반드시 punycode 여야 하므로 netloc 만 따로 떼서 진행해야 한다.

from urllib.parse import urlparse


def get_human_readable_text(org):
    url = urlparse(org)
    if url.scheme != "":
        return url.netloc.encode("utf8").decode("idna")
    else:
        return url.path.encode("utf8").decode("idna")
      
      
if __name__ == '__main__':
    # 전체 원본 url 혹은 path, query 까지 보고 싶으면 함수 리턴 값을 수정하면 된다.
    print(get_human_readable_text("xn--o39ap20a1tj.xn--3e0b707e"))
    print(get_human_readable_text("http://xn--o39ap20a1tj.xn--3e0b707e"))

ref

 

퓨니코드 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 퓨니코드(Punycode)는 유니코드 문자열을 호스트 이름에서 허용된 문자만으로 인코딩하는 방법으로, RFC 3492에 기술되어 있다. 퓨니코드는 유니코드가 지원하는 모든 언어로 국제화 도메인을 쓸 수 있게 한 IDNA의 일부로, 변환은 전적으로 웹 브라우저와 같은 클라이언트에서 이루어진다. 이 과정은 ASCII 문자 집합으로 표시할 수 없는 도메인 이름의 각 부분마다 따로 일어나고, 변환된 퓨니코드 문자열에는 예약된 접

ko.wikipedia.org

Comments