본문 바로가기

Programming/코딩 짤팁

IP address / Domain / URL 구분하기 with 파이썬

| IP / Domain / URL

통신로그 분석을 하다보면 IP / 도메인 / URL 을 접하게 된다. 실생활에 빗대어 표현하자면 IP는 ㅁㅁ시 OO구 XX길 99 정도로 표현되는 주소이고 도메인은 건물이름, URL은 동 / 호수 정도라고 생각하면 좋을 것 같다.

보통 7 Layer 장비에 수집된 로그를 보다보면 위 세가지 유형의 접속기록이 모두 있어 구분해야 할 필요가 가끔있다. 가장 먼저 생각나는 것은 정규식으로 구분하는 방법이 있지만 도메인이나 URL의 형식에 따라고 오탐할 가능성이 있기 때문에 파이썬에서 제공하는 라이브러리를 사용하여 자동으로 구분하는 코드를 작성했다.

| 코드작성

먼저 ipaddress 와 urllib.parse를 import 해준다.

import ipaddress
import urllib.parse import urlparse

 

판단하는 코드는 일단 파일이든 사용자 입력이든 외부에서 분류할 데이터를 입력받았다고 가정하고 작성할 것이다. 순서는 입력받은 데이터로 IP address를 생성한다(Try) 만약 여기서 오류가 난다면 except 문을 통해 URL이나 도메인 여부를 판단하는 순서로 동작하며 except 문이 동작하지 않을 경우(Try가 정상동작한 경우) else 문으로 분기하여 IP 주소임을 리턴해준다. 아래는 위 내용을 토대로 간단하게 작성한 코드이다.

def judge_value(target):
    try:
        ipaddress.ip_address(target)
    except:
        if (urlparse(target).path):
            return "urls"
        else:
            return "domains"
    else:
        return "ip_addresses"