반응형
자바 접속자 브라우저 정보와 IP 정보 얻어오기
웹사이트를 관리하다보면, 웹로그를 기록해야 되는 경우가 많습니다. 사용자에 대한 추적을 하기 위해서죠. 자바에서 제공하는 HttpRequest.UserAgent Property 를 통하여 접속 사용자의 브라우저 정보를 얻을 수 있습니다. 저는 인터셉터에서 처리하였으며, 사용자의 브라우저 정보 및 아이피등의 웹로그를 얻기 위해 구현 하였습니다. 서블릿을 따로 만들어 필요할때마다 요청하여 사용중입니다.
getHeader 를 통하여 User-Agent 에서 얻어온 값을 출력해 보면 상당히 긴 구문을 출력해 옵니다. 브라우저에 대한 상세정보인데요.
저희는 이것을 indexof 를 이용하여, 각 브라우저의 특정 문자열을 찾아서 맞으면 그 결과값을 저장하여 브라우저 정보를 얻어올껍니다.
예를 들어 아이폰 User-Agnet 출력문
Mozilla/5.0 (iPod; U; CPU iPhone OS 3_1_3 like Mac OS X; ko-kr) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7E18 Safari/528.16
사용자 브라우저 구하기
// 사용자 브라우저 구하기
protected String getBrowserInfo(HttpServletRequest req, String browser) {
try {
String browserInfo = req.getHeader("User-Agent"); // 사용자 User-Agent 값 얻기
if (browserInfo != null) {
if (browserInfo.indexOf("Trident") > -1) {
browser = "MSIE";
} else if (browserInfo.indexOf("Chrome") > -1) {
browser = "Chrome";
} else if (browserInfo.indexOf("Opera") > -1) {
browser = "Opera";
} else if (browserInfo.indexOf("iPhone") > -1
&& browserInfo.indexOf("Mobile") > -1) {
browser = "iPhone";
} else if (browserInfo.indexOf("Android") > -1
&& browserInfo.indexOf("Mobile") > -1) {
browser = "Android";
}
}
} catch (Exception e) {
e.printStackTrace();
}
return browser;
}
이렇게 하면 각 사용자의 브라우저 화면정보를 가져올수 있습니다. 이제 사용자 IP를 구하는 서블릿을 구현해 보겠습니다. 이것도 마찬가지로 HttpServletRequest Header 에서 정보를 얻어 올수 있습니다.
사용자 IP 정보 구하기
// 사용자 IP 구하기
protected String getLocalServerIp(HttpServletRequest req, String reg_ip) {
try {
String clientIp = req.getHeader("HTTP_X_FORWARDED_FOR");
if (null == clientIp || clientIp.length() == 0
|| clientIp.toLowerCase().equals("unknown")) {
reg_ip = req.getHeader("REMOTE_ADDR");
}
if (null == clientIp || clientIp.length() == 0
|| clientIp.toLowerCase().equals("unknown")) {
reg_ip = req.getRemoteAddr();
}
} catch (Exception e) {
}
return reg_ip;
}
테스트 해보시고 이상 있으면 댓글 남겨주세요.
반응형