본문 바로가기

daily life -field

웹 브라우저 종류 버전 체크

반응형

웹 브라우저 종류 버전 체크

보통 프론트 엔드에서 사용하는 로직으로 javascript에서 웹 브라우저 종류, 버전, OS의 버전등을 체크하여 알맞는 ActiveX 같은 파일을 다운받을 수 있게 하거나, 웹브라우저에 맞는 스크립트 개발을 이용할 때 사용한다.

여기에선 java Servlet에서 체크하는 로직으로 사용한다.
<iframe> 기반으로 url이나 api로 호출할때 사용자의 웹 브라우저를 종류, 버전을 수집하거나 확인하는 목적으로 사용한다.

먼저 테스트 케이스를 작성하였다.

          @Test
          public void browserSearchTest() {
                   List<String> list = new ArrayList<>();
                   String userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36";
//                 0. Internet Explorer 9
                   String userAgent0 ="Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0";
                   list.add(userAgent0);
//                 1. Internet Explorer 11
                   String userAgent1 ="Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko";
                   list.add(userAgent1);
//                 1-1. Internet Explorer 10
                   String userAgent2 = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)";
                   list.add(userAgent2);
//                 2. Safari
                   String userAgent3 = "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2";
                   list.add(userAgent3);
//                 3. Chrome
                   String userAgent4 = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36";
                   list.add(userAgent4);
//                 4. Opera
                   String userAgent5 = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36 OPR/17.0.1241.53";
                   list.add(userAgent5);
//                 4-1. Opera 구버전
                   String userAgent6 = "Opera/9.80 (Windows NT 6.1; WOW64; U; ko) Presto/2.10.229 Version/11.62";
                   list.add(userAgent6);
//                 5. Firefox
                   String userAgent7 = "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0";
                   list.add(userAgent7);
                   
                   for(String val : list) {
                             System.out.println(browserVersionTest(val));
                   }
                   
          }
          //웹브라우저 버전체크
          private String browserVersionTest(String agentValue) {
                             String userAgent = agentValue;
                             String browserVersion  = "";
                             if(userAgent.indexOf("Opera") > -1 ||  userAgent.indexOf("OPR") > -1) {
                                      browserVersion = "Opera";
                             }else if (userAgent.indexOf("Firefox") > -1) {
                                      browserVersion = "Firefox";
                             }else if (userAgent.indexOf("Safari") > -1) {
                                      if( userAgent.indexOf("Chrome") > -1){
                                                browserVersion = "Chrome";  
                                      }else {
                                                browserVersion = "Safari";
                                      }
                             }else if ( userAgent.indexOf("Chrome") > -1) {
                                      browserVersion = "Chrome";
                             }else if(((userAgent.indexOf("MSIE") > -1) || (userAgent.indexOf("Trident") > -1))) {
                                      String word = "";
                                      if((userAgent.indexOf("MSIE") > -1)) {
                                                word = "MSIE ";
                                      }else if((userAgent.indexOf("Trident") > -1)) {
                                                word = "Trident/.*rv:";
                                      }
                                                Pattern browserPattern = Pattern.compile(word+"([0-9]{1,}[0-9]{0,1})");
                                                Matcher version = browserPattern.matcher(userAgent);
                                                if(version.find()) {
                                                          browserVersion = "MSIE" + version.group(1);
                                      }
                             }
                             return browserVersion;
          }

결과)



참고) 실세 사용시 함수호출시 HttpServletReqeust로 넘겨서 getHeader("User-Agent") 값을 받아서 사용하면된다.

public void browserInfo(HttpServletRequest request) {
    String userAgent = request.getHeader("User-Agent");
}

반응형

'daily life -field' 카테고리의 다른 글

배치- for문 update와 update join쿼리  (0) 2018.08.14