User-Agent

정경훈·2024년 4월 4일
0

친구들과 토이 프로젝트 진행 중 외부 api를 활용할 일이 있었다.
당시 fast api를 활용하여 개발을 하고 있었는데 httpx 라이브러리를 활용하여 요청을 보내고자하는데 알 수 없는 에러가 자꾸 뜨더라..

어찌됐든 데이터를 못받아온다는 건데... 이걸로 한 5시간은 해맨 것 같다.
최종적으론 해결하긴 했다.
해결 방법은 바로 user-agent추가다.
관련 api를 활용하는 github 찾아보다가 헤더에 해당 user-agent를 추가하는 것을 확인했고 이를 그대로 적용해보니 바로 성공했다.
기쁘기도 하면서 허무하기도 했는데 그동안 당연하게 생각하고 넘어갔던 user-agent를 이번 기회에 학습을 해볼까 한다.

User-Agent란

user-agent란 내가 어떤 OS를 쓰고 있고, 버전은 어떤 버전인지 웹 브라우저의 정보는 어떤 것인지 등을 담고 있는 request header의 종류 중 하나이다. 보통 Mozilla 정보/버전 + 운영체제 정보 + 렌더링 엔진 정보 + 브라우저 형태로 노출되는 것 같다.

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36

이러한 User-Agent가 필요한 이유는 인터넷 브라우저가 어떻게 동작하는가에 관련이 있다. 인터넷 브라우저가 동작하는 과정을 정리하면 다음과 같다.

  1. 내 컴퓨터/디바이스에서 접속하려는 사이트의 URL을 입력한다.
  2. 그 사이트 URL이 어떤 국가의 서버로 연결되어야 하는지, IP 주소를 알아온다.
  3. 확인된 IP 주소 속, 사이트를 구성하는 조립 정보/매뉴얼을 가져와서
  4. 내 웹 브라우저에서 사이트를 조립해, 완성된 결과를 보여준다.

과거에는 이런 브라우저마다 사용할 수 있는 기능이나 지원범위가 각자 달랐기에 문제가 발생한다면, 그 브라우저가 무엇이고 어떤 이유에서 문제가 발생했는지 기록해둘 필요가 있었다.

그렇게 해서 탄생하게된 것이 user-agent였는데 해당 헤더에 사용자의 브라우저 정보를 담아 어떠한 정보를 어떻게 표시할지 구분하기 위해 쓰이는 것이다.

다만 최근에는 크롬 브라우저에 맞춰 앱이나 웹이 개발되는 경우가 크고 사파리나 웨일같은 다른 브라우저도 인기가 많은 크롬의 형태를 따라가고 있는 추세라 user-agent가 의미가 희미해졌다곤 하나...

브라우저보다 접속한 컴퓨터 OS나, 모바일 디바이스를 구분하는 역할이 더 커지게 되면서 여전히 의미있는 헤더라고 한다.

정리하자면..

User-Agent는 사용자의 웹 브라우저와, 기기의 정보를 담고 있다.
과거에는 웹 브라우저가 각자 다른 엔진을 썼고,
브라우저마다 에러, 기능 제한이 있어 최적화가 어려웠다.
최근에는 대부분의 브라우저가 크롬/블링크 엔진을 사용 중이고,
대부분의 브라우저가 비슷한 지원 범위를 갖게 되었다.

결론...

header에 들어갈 필수 요소를 체크하며 api를 다뤄보자...!

profile
뉴비 개발자...가 되고싶다..

0개의 댓글