본문 바로가기

Python

[Python] 파이썬에서 Header에 IP와 Browser 정보 가져오기

백엔드 로깅을 생성하는 도중에 유저의 ip와 browser 정보가 필요했다.

개발 프레임워크는 Fast API 환경에서 개발하였다.

 

def ip_browser(request):
    # print("client's user agent is ", request.headers.get('user-agent'))

    x = 'x-forwarded-for'.encode('utf-8')
    origin_ip, forward_ip = None, None

    for header in request.headers.raw:
        if header[0] == x:
            # print("Find out the forwarded-for ip address")
            origin_ip, forward_ip = re.split(', ', header[1].decode('utf-8'))
            # print(f"origin_ip:\t{origin_ip}")
            # print(f"forward_ip:\t{forward_ip}")
            data = {
                "User Agent": request.headers.get('user-agent'),
                "Origin IP": origin_ip,
                "Forward IP": forward_ip,
            }

    if not origin_ip:
        # print("client's user IP is ", request.client.host)
        data = {
            "User Agent": request.headers.get('user-agent'),
            "Client IP": request.client.host
        }
    return data

결과는 아래와 같이 딕셔너리 구조로 출력된다.

 

{'User Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36', 'Client IP': '127.0.0.1'}

'Python' 카테고리의 다른 글

[Python Error] IndexError: list assignment index out of range  (0) 2022.10.10