티스토리 뷰
개요
User-Agent는 HTTP 요청시 헤더에 담겨 오는 정보로 요청 클라이언트의 디바이스 및 브라우저 정보를 담고 있다. 국제적으로 표준화되어 있지 않아 엄격히 관리되고 있지 않으며 어떤 값을 넣어도 상관없기 때문에 완전히 신뢰할 수 있는 데이터는 아니지만 간단한 통계 및 디바이스 특성에 따른 분기 처리에 있어 가장 기초가 되는 데이터이기도 하다.
Java 진영의 User-Agent 파써 도구들
User-Agent 파써의 관건은 자체적으로 보유한 데이터베이스의 양이 중요하다. 현재 이순간에도 실시간으로 새로운 User-Agent 정보가 추가되고 있기 때문이다. 데이터베이스가 주기적으로 갱신되지 않으면 새로운 기기, 새로운 브라우저에 대한 감지가 되지 않을 가능성이 높다.
user-agent-utils: Java 진영 최초의 User-Agent 파써이다. 현재 개발 중단되었다.
UADetector: Java 진영에서 가장 잘 만들어진 User-Agent 파써이다. 아쉬운 점은 2014-10 부로 User-Agent 데이터베이스의 업데이트가 중단되었다. 본 글에서 사용할 라이브러리이다.
uap-java: 사용자들의 참여로 현재까지 계속 User-Agent 데이터베이스가 업데이트되고 있는 uap-core 기반의 파써이다. 데이터베이스의 주기적 갱신이라는 측면에서 가장 높은 점수를 주고 싶다.
UADetector, 의존성 추가
본 글에서 소개할 파써는 UADetector이다. 먼저 /build.gradle 파일에 아래와 같이 라이브러리 의존성을 추가한다.
dependencies {
compile group: 'net.sf.uadetector', name: 'uadetector-core', version: '0.9.22'
compile group: 'net.sf.uadetector', name: 'uadetector-resources', version: '2014.10'
}
사용 예
String userAgent = "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36";
// User-Agent 데이터베이스를 로드하여 파써를 초기화한다. 초기화는 소모적인 작업이므로 Spring 환경의 경우 Bean으로 관리하는 것을 추천한다.
UserAgentStringParser parser = UADetectorServiceFactory.getResourceModuleParser();
// ReadableDevieCategory.Category를 반환한다.
// PERSONAL_COMPUTER, SMARTPHONE, TABLET, SMART_TV, WEARABLE_COMPUTER, GAME_CONSOLE, PDA, OTHER, UNKNOWN을 반환한다.
parser.parse(userAgent).getDeviceCategory().getCategory();
// ReadableOperatingSystemFamily.OperatingSystemFamily을 반환한다.
// WINDOWS, MAC_OS, BSD, LINUX, ANDROID, IOS, BLACKBERRY_OS, UNKNOWN 등을 반환한다.
parser.parse(userAgent).getOperatingSystem().getFamily();
// UserAgentType을 반환한다.
// BROWSER, MOBILE_BROWSER, OFFLINE_BROWSER, ROBOT, LIBRARY, UNKNOWN 등을 반환한다.
parser.parse(userAgent).getType();
// UserAgentFamily를 반환한다.
// CHROME, CHROME_MOBILE, FIREFOX, MOBILE_FIREFOX, SAFARI, MOBILE_SAFARI, IE, IE_MOBILE, UNKNOWN 등을 반환한다.
parser.parse(userAgent).getFamily();
- Total
- Today
- Yesterday
- chrome
- 자전거
- Tomcat
- bootstrap
- 로드바이크
- node.js
- maven
- Spring Boot
- MySQL
- JavaScript
- kotlin
- graylog
- jstl
- Docker
- DynamoDB
- Kendo UI Web Grid
- spring
- Eclipse
- JHipster
- Kendo UI
- 알뜰폰
- 로드 바이크
- CentOS
- 태그를 입력해 주세요.
- jpa
- jsp
- 구동계
- 평속
- java
- Spring MVC 3
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |