HD

JAVA 접근장치, 운영체제, 브라우저 확인 본문

JAVA

JAVA 접근장치, 운영체제, 브라우저 확인

hunecenter 2022. 2. 12. 10:32
반응형

고객의 요청에 의해 접근장치, 운영체제, 브라우저를 확인해서 로그를 남겨 달라는 말에 따로 ClientUtil.class로 빼서 구현을 해보았다.

 

[pom.xml 기입]

<dependency>
	<groupId>com.github.ua-parser</groupId>
    <artifactId>uap-java</artifactId>
    <version>1.4.3</version>
</dependency>

[소스]

package project.client.util;

import java.io.IOException;

import javax.servlet.http.HttpServletRequest;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import ua_parser.Client;
import ua_parser.Parser;

/**
 * Client Utility Class
 * @Class Name  : ClientUtil.java
 * @Description :
 * @Modification Information
 *
 *    수정일        수정자        수정내용
 *    -----------  --------  -------------------
 *    2022.02.10.   HD        최초생성
 *
 * @author HD
 * @since 2022.02.10
 * @version 1.0
 */

public class ClientUtil {

    private static final Logger LOG = LoggerFactory.getLogger(ClientUtil.class.getName());
    
    /**
     * <pre>
     * 접근장치를 반환하는 메소드
     * </pre>
     * @param request HttpServletRequest
     * @return 접근장치 문자열
     */
    public static String getAcesEqpmt(HttpServletRequest request) {
        String headerStr = request.getHeader( "User-Agent" ).toUpperCase();
        String acesEqpmt = "PC";
        
        if ( headerStr.contains( "MOBILE" ) || headerStr.contains( "MOBI" ) ) {
            acesEqpmt = "MOBILE";
        }

        return acesEqpmt;
    }
    
    /**
     * <pre>
     * 운영체제를 반환하는 메소드
     * </pre>
     * @param request HttpServletRequest
     * @return 운영체제 문자열
     */
    public static String getOs(HttpServletRequest request) {
        String headerStr = request.getHeader( "User-Agent" );
        String os = "";
        
        try {
            Parser parser = new Parser();
            Client client = parser.parse( headerStr );
            os = client.os.family;
        } catch ( IOException e ) {
            LOG.error("ERROR : ",e.getMessage());
        }
        
        return os;
    }
    
    /**
     * <pre>
     * 브라우저 이름을 반환하는 메소드
     * </pre>
     * @param request HttpServletRequest
     * @return 브라우저 이름 문자열
     */
    public static String getBrowserNm(HttpServletRequest request) {
        String headerStr = request.getHeader( "User-Agent" ).toUpperCase();
        String browser = "";

        if ( headerStr.indexOf("TRIDENT") > -1 || headerStr.indexOf("MSIE") > -1 ) { //IE

            if ( headerStr.indexOf("TRIDENT/7") > -1 ) {
                browser = "IE 11";
            } else if ( headerStr.indexOf("TRIDENT/6") > -1 ) {
                browser = "IE 10";
            } else if ( headerStr.indexOf("TRIDENT/5") > -1 ) {
                browser = "IE 9";
            } else if ( headerStr.indexOf("TRIDENT/4") > -1 ) {
                browser = "IE 8";
            } else if ( headerStr.indexOf("EDG") > -1 || headerStr.indexOf("EDGE") > -1 ) {
                browser = "IE Edge";
            }

        } else if ( headerStr.indexOf("WHALE") > -1 ) { //네이버 WHALE
            browser = "Whale";
        } else if ( headerStr.indexOf("OPERA") > -1 || headerStr.indexOf("OPR") > -1 ) { //오페라
            browser = "Opera";
        } else if ( headerStr.indexOf("FIREFOX") > -1 ) { //파이어폭스
            browser = "Firefox";
        } else if ( headerStr.indexOf("SAFARI") > -1 && headerStr.indexOf("CHROME") == -1 ) { //사파리
            browser = "Safari";
        } else if ( headerStr.indexOf("CHROME") > -1 ) { //크롬
            browser = "Chrome";
        } else {
            browser = "Other";
        }

        //LOG.debug("userAgent 확인 ["+userAgent+"]");
        //LOG.debug("브라우저/버전 확인 ["+browser+"]");

        return browser;
    }
}

[참고]

https://github.com/ua-parser/uap-java

 

GitHub - ua-parser/uap-java: Java implementation of ua-parser

Java implementation of ua-parser. Contribute to ua-parser/uap-java development by creating an account on GitHub.

github.com

 

https://velog.io/@ggong/User-agent-%EC%A0%95%ED%99%95%ED%95%98%EA%B2%8C-%ED%95%B4%EC%84%9D%ED%95%98%EA%B8%B0

 

User-agent 정확하게 해석하기

user agent는 HTTP 요청을 보내는 디바이스와 브라우저 등 사용자 소프트웨어의 식별 정보를 담고 있는 request header의 한 종류이다. 임의로 수정될 수 없는 값이고, 보통 HTTP 요청 에러가 발생했을 때

velog.io

 

반응형

'JAVA' 카테고리의 다른 글

FCM(firebase) 연동  (0) 2022.11.07
Java @Scheduled Cron 표현식  (2) 2022.10.04
중복로그인 처리(feat.전자정부)  (0) 2022.01.25
[구글 OTP] java  (4) 2021.09.14
URL로 첨부파일 다운로드  (0) 2021.09.01
Comments