백엔드 로깅을 생성하는 도중에 유저의 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 |
---|