`
hbxflihua
  • 浏览: 676943 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

取得请求地址对应的网站IP

阅读更多

1、添加域名解析工具类

import java.net.InetAddress;
import java.net.UnknownHostException;

/**
 * 域名解析工具类
 * @author lh
 *
 */
public class DomainNameUtil {
	
	private static final String[] URL_PREFIX = {"http://", "https://"};	
	private static final String DOMAIN_SEPARATOR = "/";
	
	public static String getUrlIp(String url){
		String domainName = null;
		for (String up : URL_PREFIX) {
			if(url.startsWith(up)){
				domainName = url.substring(up.length());
				domainName = domainName.substring(0, domainName.indexOf(DOMAIN_SEPARATOR));
				return getDomainIp(domainName);			
			}
		}
		return "";
	}
	
	public static String getDomainIp(String domainName) {
		try {
			InetAddress myServer = InetAddress.getByName(domainName);
			return myServer.getHostAddress();
		} catch (UnknownHostException e) {
		}
		return "";
	}

}

 2、添加IP解析工具类

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.servlet.http.HttpServletRequest;

public class IpUtil {
	
	
	/** 
     * 从url中分析出hostIP<br/> 
     * @param url 
     * @author lh  
     * @return 
     */  
    public static String getIpFromUrl(String url) {  
    	String host = "";  
    	// 判断是否为空  
        if (url == null || "".equals(url.trim())) {  
            return host;  
        }            
        Pattern p = Pattern.compile("(?<=//|)((\\w)+\\.)+\\w+");  
        Matcher matcher = p.matcher(url);  
        if (matcher.find()) {  
            return matcher.group();  
        }
        return DomainNameUtil.getUrlIp(url);  
    }
	
	/**
	 * 取得请求客户端的IP(用户IP)
	 * @param request
	 * @return
	 */
	public static String getRemortIP(HttpServletRequest request) {
		String ip = request.getHeader("x-forwarded-for");
		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
			ip = request.getHeader("X-Real-IP");
		}
		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();
		}
		if (ip != null && ip.length() > 0) {
			String[] ipArray = ip.split(",");
			if (ipArray != null && ipArray.length > 1) {
				return ipArray[0];
			}
			return ip;
		}

		return "";
	}

}

 

3、取得http请求对应的网站IP

String url = StringUtils.isEmpty(request.getHeader("referer"))?request.getHeader("origin"):request.getHeader("referer");
String ipAddress = IpUtil.getIpFromUrl(url);
			

 

 

分享到:
评论

相关推荐

    asp下取得客户端IP地址函数 转换IP地址函数

    例如,如果调用`&lt;%=cip("219.16.73.120")%&gt;`,将会返回这个IP地址对应的整数值。这种转换在某些特定场景下非常有用,比如在数据库中存储IP地址,或者进行IP地址的数学运算。 总结来说,ASP中的`Userip()`函数用于...

    一个可以取得客户端的ip、地理信息、浏览器、本地真实IP的php类库.zip

    类库可能内置了与这些服务的接口,通过IP地址查询到对应的国家、城市等地理信息。这需要处理网络请求和解析返回的数据。 再者,浏览器信息的获取则主要分析`HTTP_USER_AGENT`头,这个头包含了用户使用的浏览器类型...

    delphi7获取外网IP.zip

    1. **HTTP请求**: 可以向一些提供公共IP查询服务的网站(如`http://checkip.dyndns.org`)发送GET请求,然后解析返回的HTML内容,提取出IP地址。 2. **DNS反向查询**: 通过查询DNS服务器,反向查找设备的主机名,...

    新浪 IP 库限制指定地区跳转和不跳转代码

    更可靠的方法是通过 AJAX 向第三方服务(如新浪 IP 库 API)发送请求,获取客户端 IP 地址。 2. **IP 地址解析**:将获取的 IP 地址输入到新浪 IP 库 API,得到该 IP 地址对应的地理位置信息。API 返回的数据可能...

    (二)学习TCP, IP, Ethernet 协作的原理

    用ARP向网络全体成员询问**:当发送端需要发送数据给特定IP地址的目标时,会使用地址解析协议(ARP)来查询该IP地址对应的MAC地址。 - **2.6.3. 记住调查过一次的地址**:ARP缓存记录了最近查询过的IP-MAC地址映射...

    DHCP协议的功能及运行方式.pdf

    当此 MAC 地址的客户端申请 DHCP 地址时,服务器依照客户端 MAC 地址寻觅到对应的固定 IP 地址分派给客户端。 * 自动分派地址:为第一次连接到网络的某些主机分派固定 IP 地址,该地址将长期由该主机利用。 * 动态...

    取得本机DNS

    当我们在浏览器中输入一个域名时,电脑会首先查找本地DNS缓存,如果找到对应的IP地址,则直接进行连接。如果没有,就会向配置的DNS服务器发起查询请求。一般情况下,DNS查询分为两种类型:正向查询(从域名到IP)和...

    vc++获取取网卡MAC地址的三种方法.zip

    然后,使用SNMP库的函数发送GET请求,获取对应的值,这个值就是MAC地址的字符串表示。 每种方法都有其优缺点。WinPCap库提供强大的数据包捕获功能,但可能需要额外安装;Windows API简单易用,但只能在Windows环境...

    三层交换机实现VLAN间通讯及链路聚合应用1[收集].pdf

    假如 A 要向 B 发送数据,已知目的 IP,那么 A 可以通过子网掩码取得网络地址,判断目的 IP 与自己是否在同一网段。如果在同一网段,但不知道转发数据所需要的 MAC 地址,A 就发送一个 ARP 请求广播,B 返回其 MAC ...

    实验任务3_三层交换机实现VLAN间通讯及链路聚合应用[参照].pdf

    如果目的IP地址不在同一网段,那么A要实现和B的通信,在流缓存条目中没有对应MAC地址条目,就将第一个正常数据包发送向缺省网关, 由此可以看出对于不是同一子网的数据,最先在MAC表中放的是缺省网关的MAC地址;...

    ARP攻击代码实例

    那就是arp高速缓存中IP地址和MAC地址的一个映射关系,在以太网中,数据传递靠的是MAC,而并不是IP地址。其实在这背后就隐藏着arp的秘密。你一定会问,网络上这么多计算机,A是怎么找到B的?那么我们就来分析一下细节...

    arp扫描

    在计算机网络中,ARP(Address Resolution Protocol)协议用于将IP地址解析为对应的物理地址,以便数据包能在局域网内正确传输。在渗透测试中,ARP扫描被用来识别网络上的活动主机、检测ARP欺骗或者执行中间人攻击。...

    花生壳+ADSL+IIS搭建本地web服务器[汇编].pdf

    然后,在 IIS 界面中进行少许的配置,选择网站标签,因为服务器是处在公司的内部局域网中,因此 IP 地址使用本地 IP,端口设置成 80。 在选择 “主目录”标签时,因为项目的所有文件在本台服务器上,所以内容的来源...

    基于Kali Linux的DNS欺骗及防范技术的研究.pdf

    ARP欺骗成功后,嗅探到对方发出的DNS请求数据包,分析数据包取得ID和端口号后,向目标发送自己构造好的一个DNS返回包,对方收到DNS应答包后,发现ID和端口号全部正确,即把返回数据包中的域名和对应的IP地址保存进...

    AMR在ip域中的编码

    AMR编码是一种自适应多速率编码,根据传输信道的实际情况,调整编码模式、速率和纠错码位数来保证语音质量,在数据压缩和容错上面取得平衡。一般语音质量越高抗干扰能力越弱。在GSM网络,基站、基站控制器可根据网络...

    易语言判断端口开放

    易语言提供了几个关键的网络通讯函数,如“创建网络通讯_”,这个函数用于初始化网络连接,它需要指定通讯协议(如TCP或UDP)以及服务器的IP地址和端口号。"网络通讯启动_"函数用于开启网络通讯服务,确保后续的网络...

    前端面试题及答案.pdf

    1. **DNS 解析**:浏览器将 URL 提交给 DNS 服务器进行域名解析,找到对应的 IP 地址。 2. **TCP 握手**:浏览器通过 IP 地址与服务器建立 TCP 连接,完成三次握手过程。 - 客户端发送连接请求。 - 服务器回应确认...

    前端开发需要了解的Nginx知识1

    nginx可以配置多个虚拟主机,每个虚拟主机可以对应一个独立的域名或IP地址,可以实现多个网站共享同一个IP地址和端口号。 https负载均衡 nginx可以配置https负载均衡,可以将https请求分配到多个服务器上,提高...

    winsock带注册文件

    在客户端,当使用了控件的Connect方法后,远程计算机的IP地址就赋给了RemoteHostIP属性,而在服务器端,当ConnectRequest事件后,远程计算机(客户端)的IP地址就赋给了这个属性。如果使用的是UDP协议那么当Data...

    前端 45 道面试题及答案.docx

    2. 发送至DNS服务器并获得域名对应的WEB服务器IP地址 3. 与WEB服务器建立TCP连接 4. 服务器的永久重定向响应 5. 浏览器跟踪重定向地址 6. 服务器处理请求 7. 服务器返回一个HTTP响应 8. 浏览器显示HTML 9. 浏览器...

Global site tag (gtag.js) - Google Analytics