웹 방문자 IP 획득하기;운영 체제 버전브라우저 버전
IP:
<% =Request.ServerVariables("REMOTE_ADDR") %>
둘째, 운영 체제 버전의 코드는 다음과 같습니다.
<% response.Write operationsystem & "<br>" & browser
function operationsystem() '
agent = Request.ServerVariables("HTTP_USER_AGENT")
if Instr(agent,"NT 5.2")>0 then
SystemVer="Windows Server 2003"
elseif Instr(agent,"NT 5.1")>0 then
SystemVer="Windows XP"
elseif Instr(agent,"NT 5")>0 then
SystemVer="Windows 2000"
elseif Instr(agent,"NT 4")>0 then
SystemVer="Windows NT4"
elseif Instr(agent,"4.9")>0 then
SystemVer="Windows ME"
elseif Instr(agent,"98")>0 then
SystemVer="Windows 98"
elseif Instr(agent,"95")>0 then
SystemVer="Windows 95"
else
SystemVer=" "
end if
operationsystem=" : " & SystemVer
end function %>
셋째, 브라우저 버전의 코드는 다음과 같습니다.
<% function browser() '
agent = Request.ServerVariables("HTTP_USER_AGENT")
if Instr(agent,"MSIE 6.0")>0 then
browserVer="Internet Explorer 6.0"
elseif Instr(agent,"MSIE 5.5")>0 then
browserVer="Internet Explorer 5.5"
elseif Instr(agent,"MSIE 5.01")>0 then
browserVer="Internet Explorer 5.01"
elseif Instr(agent,"MSIE 5.0")>0 then
browserVer="Internet Explorer 5.00"
elseif Instr(agent,"MSIE 4.0")>0 then
browserVer="Internet Explorer 4.0"
else
browserVer=" "
end if
browser=" : " & browserVer
if Instr(agent,"TencentTraveler")>0 then ' TT
browser=browser&" | TencentTraveler"
end if
end function %>
ps:
JSP에서 클라이언트의 IP 주소를 가져오는 요령은 Request입니다.getRemoteAddr (), 대부분의 경우 이 요령이 유효합니다.그러나 아파치, Squid 등 리버스 프록시 소프트웨어를 통과하면 클라이언트의 실제 IP 주소를 얻을 수 없습니다.만약 역방향 프록시 소프트웨어를 운용했다면, Request를 사용하십시오.getRemoteAddr () 요령이 가져온 IP 주소는 클라이언트의 실제 IP가 아닌 127.0.0.1 또는 192.168.1.110입니다.
프록시를 거친 후 클라이언트와 서비스 사이에 중간층을 추가했기 때문에 서버는 클라이언트의 IP를 직접 받을 수 없고 서버 측이 사용하거나 전송 요청의 주소를 통해 클라이언트에게 직접 되돌려줄 수 없다.그러나 전송 요청의 HTTP 헤더 정보에는 X-FORWARDED-FOR 정보가 추가되었습니다.를 사용하여 기존 클라이언트 IP 주소와 원래 클라이언트가 요청한 서버 주소를 추적합니다.index에 방문하면jsp/시, 사실 우리 리더가 서버에 있는 index에 실제로 접근한 것은 아닙니다.jsp 파일이 아니라 프록시 서버에서 index에 접근합니다.jsp, 프록시 서버는 index에 프록시 서버가 접근하기 때문에 접근한 결과를 리더에게 되돌려줍니다.jsp의, 그래서 index.jsp에서 Request를 통해getRemoteAddr () 의 요령이 가져온 IP는 사실상 프록시 서버의 주소이며 클라이언트의 IP 주소가 아닙니다.
따라서 클라이언트의 실제 IP 주소를 얻을 수 있는 요령 1을 얻을 수 있습니다.
public String getRemortIP(HttpServletRequest request) {
if (request.getHeader("x-forwarded-for") == null) {
return request.getRemoteAddr();
}
return request.getHeader("x-forwarded-for");
}
클라이언트의 실제 IP 주소를 확보하는 요령 2:
public String getIpAddr(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
if(ip == null ip.length() == 0 "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if(ip == null ip.length() == 0 "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if(ip == null ip.length() == 0 "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}
그러나 만약에 다중 역방향 에이전트를 통과했다면 X-Forwarded-For의 값은 하나가 아니라 일련의 IP 값이다. 도대체 어느 것이 실제 사용자 측의 실제 IP일까?
정답은 X-Forwarded-For에서 첫 번째 unknown이 아닌 유효한 IP 문자열을 뽑는 것이다.예:
X-Forwarded- For:192.168.1.110, 192.168.1.120, 192.168.1.130, 192.168.1.100
사용자 실제 IP: 192.168.1.110
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
제한된 크기의 디렉토리를 만드는 방법오늘 저는 장치에 공간이 없을 때 백업 중에 응용 프로그램이 어떻게 작동하는지 테스트(및 수정)하는 작업이 있습니다. 결과적으로 "남은 공간 없음"오류로 백업이 실패하면 새 파일이 없어야 합니다. 지금까지 문제를 재...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.