예시
입력 (User-Agent 문자열)
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Safari/605.1.15
출력
Browser: Safari 17.0 Engine: WebKit 605.1.15 OS: macOS 10.15.7 Device: Mac (Desktop)
참고
user-agent 문자열은 거의 모든 브라우저가 `Mozilla/5.0` 으로 시작하는 역사적 농담. 90년대 호환성 trick 이 그대로 남았어요.
사용법 / 자주 묻는 질문
이런 경우 사용하세요
- 서버 로그의 User-Agent 분석
- 분석 도구(GA · Mixpanel) 의 알 수 없는 user-agent 풀이
- 봇 vs 실 사용자 구분 — Googlebot · GPTBot 등 인식
- 특정 디바이스(iPhone 16 Pro 등) 의 정확한 OS 버전 확인
- Crawler 인지 헤드리스 브라우저인지 의심스러운 트래픽 검증
자주 묻는 질문
- Q.왜 모든 브라우저가 Mozilla 로 시작하나요?
- A.1994년 Netscape(Mozilla) 시대의 frame 미지원 브라우저 차단을 우회하려고 IE 가 자기 user-agent 에 `Mozilla` 를 박은 게 시작. 이후 모든 후속 브라우저가 호환성 위해 따라했고 지금도 유지.
- Q.user-agent 를 신뢰해도 되나요?
- A.아닙니다. 클라이언트가 자유롭게 변경 가능 — 보안·인증에 절대 의존 X. 통계·UI 분기 정도의 hint 로만 사용. Chrome 은 "User-Agent Client Hints" 로 점진 대체 중.
- Q.Googlebot 인지 어떻게 확인하나요?
- A.user-agent 에 `Googlebot` 이 있어도 위장 가능. 진짜 검증은 reverse DNS lookup — Google IP 가 `*.googlebot.com` 으로 해석되는지 확인이 표준.
재미있는 사실
'Mozilla/5.0 (...) Gecko/... Firefox/...' 같은 복잡한 UA 문자열은 1993년 NCSA Mosaic 의 'Mozilla' 라는 별칭에서 시작된 30년짜리 카르고 컬트입니다. 모든 브라우저가 'Mozilla compatible' 인 척하면서 서로의 string 을 흉내냈고, 결국 IE·Chrome·Safari 모두 자기 UA 안에 'Mozilla/5.0' 을 박는 우스꽝스러운 결과로 굳었습니다.
WebAIM — UA history충분히 디테일한 UA + 화면 해상도 + 타임존 + 폰트 조합이면 사용자를 거의 unique 하게 식별 가능합니다 (browser fingerprinting). Apple Safari 가 2021년부터 UA 를 'frozen' 상태로 박은 이유 — 개별 추적 회피.
EFF — Browser fingerprintingChrome 86 (2020) 부터 UA-CH (User-Agent Client Hints) 가 도입됐습니다. 통합된 UA 문자열을 분해해 필요한 정보만 `Sec-CH-UA-Platform` 같은 별도 헤더로 받는 방식 — 오래된 카르고 컬트를 점진 대체 중입니다.
MDN — Client Hints
관련 도구
- Base64 인코딩 / 디코딩
텍스트를 Base64로 인코딩하거나 디코딩합니다. 브라우저에서 즉시 실행되며 서버로 데이터가 전송되지 않습니다.
- URL 인코딩 / 디코딩
URL에 사용할 수 있도록 텍스트를 퍼센트 인코딩하거나 인코딩된 URL을 디코딩합니다. 브라우저에서 즉시 실행됩니다.
- UUID / ULID 생성기
UUID v4(랜덤) · UUID v7(시간 순서, RFC 9562) · ULID를 브라우저에서 생성합니다.
- JWT 디코더
JWT(JSON Web Token)의 header와 payload를 디코딩하여 표시합니다. 서명 검증은 수행하지 않으며(공개키 필요), 토큰은 브라우저에서만 처리됩니다.
- JWT 생성기 (HMAC)
HS256/HS384/HS512(HMAC-SHA) 알고리즘으로 서명된 JWT를 생성합니다. payload·secret 모두 브라우저에서만 처리 — Web Crypto API 기반.
- SHA 해시
텍스트의 SHA-1·SHA-256·SHA-384·SHA-512 해시를 계산합니다. 브라우저의 Web Crypto API를 사용하며 데이터가 서버로 전송되지 않습니다.
- Hex 인코딩 / 디코딩
텍스트를 16진수로 인코딩하거나 디코딩합니다. UTF-8을 자동 처리하며 공백을 무시합니다.
- HTML 엔티티 인코딩 / 디코딩
HTML 특수 문자(&, <, >, ", ')를 엔티티로 인코딩하거나, 이름/숫자 엔티티를 텍스트로 디코딩합니다.
- 비밀번호 생성기
암호학적으로 안전한 비밀번호·토큰·랜덤 문자열·패스프레이즈를 생성하고 엔트로피를 표시합니다.
- 진수 변환기
BigInt 기반으로 큰 정수까지 2/8/10/16/36진수 변환. 0b/0o/0x 자동 감지.
- URL 파서
URL을 프로토콜·호스트·경로·쿼리·해시로 분해해 한눈에 보여줍니다 (읽기 전용).
- HMAC 생성기
Web Crypto API로 SHA-1/256/384/512 HMAC을 계산합니다. 서명·검증 키 기반.
- HMAC 검증기
주어진 HMAC 서명이 message + secret 으로 만든 값과 일치하는지 검증합니다. Web Crypto API + constant-time 비교.
- MD5 해시
텍스트의 MD5 해시를 계산합니다. 주의: MD5는 보안용으로 부적합 — 체크섬·레거시 호환에만 사용.
- Punycode (국제화 도메인)
한글·다국어 도메인을 Punycode(xn-- ASCII)로 상호 변환합니다. 브라우저 native URL 사용.
- HTTP 상태 코드
HTTP 상태 코드(1xx-5xx)를 검색·탐색합니다. 설명과 일반 사용 사례 포함.
- Bcrypt 해시
Bcrypt로 비밀번호를 해시하거나 기존 해시와 평문을 검증합니다. salt rounds 조정 가능.
- 쿠키 파서
Cookie 또는 Set-Cookie 문자열을 표로 분해합니다. percent-encoded 값 복원 + Set-Cookie 속성(Path/Domain/Max-Age/SameSite/HttpOnly/Secure) 인식.
- IP / CIDR 계산기
IPv4 주소와 CIDR로 네트워크 주소·브로드캐스트·호스트 범위·서브넷 마스크·호스트 수를 계산합니다.
- cURL 빌더
URL·method·헤더·본문으로 cURL 명령을 만듭니다. JSON content-type 자동.