`
shuai1234
  • 浏览: 978061 次
  • 性别: Icon_minigender_1
  • 来自: 山西
社区版块
存档分类
最新评论

Java获取来源网页的地址和ip

    博客分类:
  • java
 
阅读更多

System.out.println("head.referer=" + request.getHeader("referer"));
System.out.println("RemoteHost=" + request.getRemoteHost());
System.out.println("getRemoteAddr=" + request.getRemoteAddr()+ ":" + request.getRemotePort());

第一个就是获取来源页的地址,用Http请求头中拿出来的 request.getHeader("referer"));

我们写代码时经常会想记录访问页的来源页地址和用户的访问IP,就会用到以下的内容。 js获取来源页地址方法: var url = document.referrer; document.write(url); jsp获取来源页地址方法:

    我们写代码时经常会想记录访问页的来源页地址和用户的访问IP,就会用到以下的内容。


    js获取来源页地址方法:
    var url = document.referrer;
    document.write(url);


    jsp获取来源页地址方法:
    String url = request.getHeader(”Referer”);
    System.out.println(url);

    对比两个方法:
    1.js里是”referrer”,jsp里是”referer”,前者比后者多一个”r”;
    2.前者如直接输入网址,则显示为空,后者显示null;
    那么获取网页的访问来源又有什么用途呢?
    1、是可以跟踪记录从哪些网站、网页上访问了自己的站点或者页面;
    2、是可以记住刚才访问的页面,可以跳转回去;
    3、还有一个很重要的用途,就是防盗链;


    比如:一些网站的资源如图片、视频等,可能被链到其它网站上,或者黑客频繁的访问某些资源,把网站搞瘫痪,于是一些网站用了防盗链技术。一种简单的防盗链方法就是获取访问的url,比对是否是自己的url或者经授权的url,不符合条件的就不让访问,或者显示一些提示信息。
    不过我们访问的url是很容易被伪造的,以后再谈如何伪造来源地址和访伪造的方法。本文重点还是讲如何获取。


    jsp获取访问者真实IP地址
    在jsp里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了 Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。如果使用了反向代理软件,用 request.getRemoteAddr()方法获取的IP地址是:127.0.0.1或192.168.1.110,而并不是客户端的真实ip。经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的 IP,服务器端应用也无法直接通过转发请求的地址返回给客户端。但是在转发请求的HTTP头信息中,增加了X-FORWARDED-FOR信息。用以跟踪原有的客户端IP地址和原来客户端请求的服务器地址。当我们访问index.jsp/时,其实并不是我们浏览器真正访问到了服务器上的index.jsp 文件,而是先由代理服务器去访问index.jsp ,代理服务器再将访问到的结果返回给我们的浏览器,因为是代理服务器去访问index.jsp的,所以index.jsp中通过 request.getRemoteAddr()的方法获取的IP实际上是代理服务器的地址,并不是客户端的IP地址。


    那么我们可以得出获得客户端真实IP地址的方法一:
    public String getRemortIP(HttpServletRequest request) {
    if (request.getHeader(”x-forwarded-for”) == null) {
    return request.getRemoteAddr();
    }
    return request.getHeader(”x-forwarded-for”);
    }


    获得客户端真实IP地址的方法二:
    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

分享到:
评论

相关推荐

    java中通过request获取IP以及MAC地址.java

    获取用户请求IP地址 根据IP地址获取mac地址

    java非常强的获取客户端真实IP的两种方法

    ### Java获取客户端真实IP的两种方法详解 #### 一、问题背景 在Web开发中,经常需要获取客户端的真实IP地址来进行一系列的操作,比如统计访问来源、进行地理定位、安全防护等。然而,在实际应用场景中,客户端请求...

    java 获取请求ip及请求的地址(省市)

    java调用淘宝ip库,获取登录ip,以及根据ip获取登录地址信息,省,市

    根据IP地址获取经纬度

    标题中的“根据IP地址获取经纬度”是指在Java编程环境下,通过特定的库或API来实现从IP地址解析出地理位置的经纬度坐标。这通常涉及到网络编程和地理信息系统(GIS)的技术。描述中提到的Java工程是实现这个功能的一...

    简易java查询IP归属地示例代码

    简易java查询IP归属地示例代码。 面向中国大陆地区的 手机号码、电话号码、IP地址 归属地查询库。 IP地址库来源于 [ip2region](http://git.oschina.net/lionsoul/ip2region)。 手机号码段和电话号码区号信息来源于 ...

    java获取用户真实ip

    在探讨如何通过Java获取用户的真实IP地址之前,我们先来了解一下为什么这是一项重要的任务。在Web开发中,了解客户端的IP地址对于统计访问来源、安全验证(如防止恶意攻击)、地理定位等功能至关重要。然而,由于...

    java获取ip地址

    ### Java 获取 IP 地址详解 在开发 Web 应用程序时,经常需要获取客户端的 IP 地址。这在很多场景下都是必要的,比如统计访问来源、进行地理位置定位、安全控制等。Java 提供了多种方法来实现这一功能,其中最常用...

    纯真IP数据库_java版

    标签中包含了“JAVA”、“归宿地”和“java”,进一步明确了这个工具是用Java语言实现的,并且主要功能是获取IP地址的归属地信息。标签中的“纯真 IP”也与标题相呼应,再次强调了数据库的来源。 在压缩包子文件的...

    获取客户的ip小例子

    在IT行业中,网络编程是不可或缺的一部分,而获取客户端IP地址是一项基本操作。在这个"获取客户的ip小例子"中,我们将探讨如何使用Java语言来实现这一功能。Java提供了多种方法来获取HTTP请求中的客户端IP地址,这在...

    java ip,身份证等接口查询所在地

    这段代码会加载GeoLite2数据库,并根据给定的IP地址获取对应的国家和城市信息。 接下来是身份证(ID Card)查询。在中国,身份证号码包含了持卡人的出生日期、性别以及籍贯信息。虽然我们不能直接通过身份证号码...

    纯真IP地址查询(Java版源代码)

    标签“纯真IP地址查询”和“lumaqq”进一步强调了这个项目的核心功能和其来源。用户可以通过这个标签了解项目的特性,并在相关领域寻找解决方案。 在压缩包中的文件“IPSeeker”很可能是一个Java类文件或者包含此类...

    根据请求的真实IP地址,获取请求的位置信息.txt

    根据用户的请求相应的真实IP地址,获取请求的位置信息,包括如何获取用户的真实IP地址,以及根据真实ip获取位置信息

    java ip数据库包

    Java IP 数据库包是一种在Java编程环境中用于查询和解析IP地址信息的工具。这个数据库包已经预先封装好了方法,使得开发者能够轻松地通过调用接口获取到任何IP地址的归属地信息,极大地简化了IP查询的开发过程。下面...

    解析ip,用户给一个请求,获取用户的ip,浏览器,操作系统等信息

    在IT行业中,网络编程是不可或缺的一部分,而获取和解析用户IP地址是实现许多网络服务的基础。本主题将详细探讨如何在使用JSP(JavaServer Pages)和Servlet技术时,通过用户的HTTP请求获取并解析IP地址,同时提取...

    ip地址所属地域解析

    在编程中,此类可能包含了获取和解析IP地址到地域信息的方法。可能包括了IP到经纬度的转换,或者与预定义的IP地址数据库进行匹配,以确定IP的国家、地区、城市等详细信息。 接着,"IMGFilter.java"可能是一个图像...

    Java利用Request请求如何获取IP地址对应的省份、城市详解

    在Java Web开发中,我们经常需要获取访问者的IP地址,并进一步获取该IP地址对应的地理位置信息,如省份和城市。这通常用于实现个性化内容展示、数据分析或者安全防护等目的。本篇文章将详细介绍如何在Java中利用...

    java 阿里云IP定位查询

    在Java编程领域,IP定位是一项常见的任务,尤其在大数据分析、网络安全和个性化推荐等场景下。阿里云提供了IP定位服务,使得开发者可以便捷地获取到IP地址对应的地理位置信息。本项目是一个基于Java实现的阿里云IP...

    潇湘IP来源地址统计 v1.0

    总的来说,《潇湘IP来源地址统计 v1.0》是一个集成了IP查询、访问统计和数据分析功能的实用工具,对于网站运营者来说,它提供了宝贵的洞察力,有助于提升用户体验和网站性能。同时,对于开发者而言,它是学习和实践...

    获取ip地址信息

    获取IP地址信息的方法多种多样,除了使用IPSeeker和QQwry这样的专用软件,还可以通过API接口获取。例如,许多公共的IP地理位置服务提供商提供了HTTP接口,开发者可以通过发送HTTP请求,获取JSON或XML格式的IP信息。...

    IP地址转城市 通过IP得知访客地址 全国各地IP地址数据库

    描述中提到的“32万条数据 包括IP起始段 终止段 省份 城市”,意味着这个数据库包含了大约320,000个IP地址范围,每个范围由一个起始IP和一个终止IP组成,这两个IP地址之间的所有IP都属于同一个地理位置,即特定的...

Global site tag (gtag.js) - Google Analytics