精华内容
下载资源
问答
  • 2022-02-16 15:25:58

    百度找java获取本机的外网IP地址都是以前的垃圾代码,别人页面都改了,怎么拿得到。

    之前学过python的爬虫,拿外网ip简单就是通过 https://ip.chinaz.com/这个网站去得到。

    百度习惯了,md !还百度了半天。

    //代码拿去,有一说一效率有点低
    /**
     * 得到本机的外网的外网IP地址 作为该局域网的区分标志
     * @return
     */
    public static String getIp() {
        Document document = null;
        try {
            document = Jsoup.connect("https://ip.chinaz.com/").get();
        } catch (IOException e) {
            e.printStackTrace();
        }
        Elements select = document.select("#leftinfo > div.IcpMain02.bor-t1s02 > div.WhoIpWrap.jspu > div.WhwtdWrap.bor-b1s.col-gray03 > span:nth-child(1)");
        String s = select.toString();
        String ip = s.substring(s.indexOf(">") + 1, s.lastIndexOf("<"));
        return ip;
    }
    //另一种方法,找到的有效:
    
     public static String getIP()  {
            String ip = "http://pv.sohu.com/cityjson?ie=utf-8";
            String inputLine = "";
            String read = "";
            String toIp="";
            try {
                URL url = new URL(ip);
                HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
                BufferedReader in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
                while ((read = in.readLine()) != null) {
                    inputLine += read;
                }
                String ObjJson=inputLine.substring(inputLine.indexOf("=")+1,inputLine.length()-1);
    //            System.out.println(ObjJson);
                JSONObject jsonObj= JSON.parseObject(ObjJson);
                toIp=jsonObj.getString("cip");
    //            throw new Exception();
            } catch (Exception e) {
                toIp="";
            }
            return toIp;
        }
    
    
     /**
         * 根据域名获取ip地址
         */
        public static String getIfIP() {
            String toIp="";
            try{
                String pathName="baidu.com";//这里没有进行支持https协议的,可以自行进行切割字符串
                InetAddress address =InetAddress.getAllByName(pathName)[0];
                toIp=address.getHostAddress();
            }catch (Exception e){
                toIp="";
            }
            return toIp;
        }

    更多相关内容
  • java代码得到外网ip地址,java调net webservice远程联调用得着
  • 通过 HTTP 访问第三方获取 IP 的服务接口获取本机的外网 IP,例如: http://checkip.amazonaws.com/ https://ipv4.icanhazip.com/ http://bot.whatismyipaddress.com/ 等等… 考虑到这些第三方接口不一定 100% ...

    原理

    通过 HTTP 访问第三方获取 IP 的服务接口获取本机的外网 IP,例如:

    考虑到这些第三方接口不一定 100% 稳定,例如可能出现下线、错误、访问超时或太慢的情况,所以不能仅依赖其中之一。

    下面提供一种方案,并发访问这些服务接口,并返回第一个成功的结果,也就是其中最快的一个返回结果。

    实现

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.URL;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.concurrent.*;
    import java.util.regex.Pattern;
    
    public class ExternalIPUtil {
    
        /**
         * IP 地址校验的正则表达式
         */
        private static final Pattern IPV4_PATTERN = Pattern.compile("^(([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.){3}([01]?\\d\\d?|2[0-4]\\d|25[0-5])$");
    
        /**
         * 获取 IP 地址的服务列表
         */
        private static final String[] IPV4_SERVICES = {
                "http://checkip.amazonaws.com/",
                "https://ipv4.icanhazip.com/",
                "http://bot.whatismyipaddress.com/"
                // and so on ...
        };
    
        public static String get() throws ExecutionException, InterruptedException {
            List<Callable<String>> callables = new ArrayList<>();
            for (String ipService : IPV4_SERVICES) {
                callables.add(() -> get(ipService));
            }
    
            ExecutorService executorService = Executors.newCachedThreadPool();
            try {
                // 返回第一个成功获取的 IP
                return executorService.invokeAny(callables);
            } finally {
                executorService.shutdown();
            }
        }
    
        private static String get(String url) throws IOException {
            try (BufferedReader in = new BufferedReader(new InputStreamReader(new URL(url).openStream()))) {
                String ip = in.readLine();
                if (IPV4_PATTERN.matcher(ip).matches()) {
                    return ip;
                } else {
                    throw new IOException("invalid IPv4 address: " + ip);
                }
            }
        }
    }
    

    线程池的 ExecutorService.invokeAny(callables) 方法用于并发执行多个线程,并拿到最快的执行成功的线程的返回值,只要有一个执行成功,其他失败的任务都会忽略。但是如果全部失败,例如本机根本就没有连外网,那么就会抛出 ExecutionException 异常。

    Gist

    https://gist.github.com/wucao/811e0bbe08f2dfab527a065d052d12a5

    关注我

    在这里插入图片描述

    展开全文
  • java获取本机的外网IP地址(亲测有效)

    千次阅读 多人点赞 2020-04-13 01:46:17
    获取本机的外网地址 如果下面正确,请留下您宝贵的赞 package untils; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.*; import java.util...

    获取本机的外网地址 

    如果下面正确,请留下您宝贵的赞

    package untils;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.*;
    import java.util.Enumeration;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    /**
     * @author CBeann
     * @create 2020-04-13 1:31
     */
    public class IPUntils {
    
        public static void main(String[] args) throws Exception {
            System.out.println(IPUntils.getInterIP1());
            System.out.println(IPUntils.getInterIP2());
            System.out.println(IPUntils.getOutIPV4());
        }
    
        public static String getInterIP1() throws Exception {
            return InetAddress.getLocalHost().getHostAddress();
        }
    
        public static String getInterIP2() throws SocketException {
            String localip = null;// 本地IP,如果没有配置外网IP则返回它
            String netip = null;// 外网IP
            Enumeration<NetworkInterface> netInterfaces;
            netInterfaces = NetworkInterface.getNetworkInterfaces();
            InetAddress ip = null;
            boolean finded = false;// 是否找到外网IP
            while (netInterfaces.hasMoreElements() && !finded) {
                NetworkInterface ni = netInterfaces.nextElement();
                Enumeration<InetAddress> address = ni.getInetAddresses();
                while (address.hasMoreElements()) {
                    ip = address.nextElement();
                    if (!ip.isSiteLocalAddress() && !ip.isLoopbackAddress() && ip.getHostAddress().indexOf(":") == -1) {// 外网IP
                        netip = ip.getHostAddress();
                        finded = true;
                        break;
                    } else if (ip.isSiteLocalAddress() && !ip.isLoopbackAddress() && ip.getHostAddress().indexOf(":") == -1) {// 内网IP
                        localip = ip.getHostAddress();
                    }
                }
            }
            if (netip != null && !"".equals(netip)) {
                return netip;
            } else {
                return localip;
            }
        }
    
        public static String getOutIPV4() {
            String ip = "";
            String chinaz = "http://ip.chinaz.com";
    
            StringBuilder inputLine = new StringBuilder();
            String read = "";
            URL url = null;
            HttpURLConnection urlConnection = null;
            BufferedReader in = null;
            try {
                url = new URL(chinaz);
                urlConnection = (HttpURLConnection) url.openConnection();
                in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(), "UTF-8"));
                while ((read = in.readLine()) != null) {
                    inputLine.append(read + "\r\n");
                }
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (in != null) {
                    try {
                        in.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
            Pattern p = Pattern.compile("\\<dd class\\=\"fz24\">(.*?)\\<\\/dd>");
            Matcher m = p.matcher(inputLine.toString());
            if (m.find()) {
                String ipstr = m.group(1);
                ip = ipstr;
            }
            return ip;
        }
    }
    

    展开全文
  • 你遇到过本地IP192.168.0.1但你想取到自己的外网IP或自己的省市区吗?这些统统都不是事,是事也就烦一会,下载下来执行main方法便可获取到位置和IP。带解析JAR包,最权威最给力的最最最最权威的方法。市面上绝对没有...
  • Java获取本机外网ip地址的方法

    万次阅读 热门讨论 2016-10-16 17:25:42
    Java获取外网IP地址的方法 获取本地IP地址的方法 public static String getLocalAddress(){ String ip = ""; try { ip = InetAddress.getLocalHost().getHostAddress(); } catch (UnknownHostException e) ...

    Java获取外网IP地址的方法

    获取本地IP地址的方法

    public static String getLocalAddress(){
    	String ip = "";
    	try {
    		ip = InetAddress.getLocalHost().getHostAddress();
    	} catch (UnknownHostException e) {
    		// TODO Auto-generated catch block
    		e.printStackTrace();
    	}
    	return ip;
    }

    获取外网本机的IP地址的方法

    一种可行的获取方法,是通过http请求从网站中取出ip字段。例如:http://ip.chinaz.com/

    通过这个网址,加上简单的正则表达式,即可得到。

    public static String getV4IP(){
    	String ip = "";
    	String chinaz = "http://ip.chinaz.com";
    	
    	StringBuilder inputLine = new StringBuilder();
    	String read = "";
    	URL url = null;
    	HttpURLConnection urlConnection = null;
    	BufferedReader in = null;
    	try {
    		url = new URL(chinaz);
    		urlConnection = (HttpURLConnection) url.openConnection();
    	    in = new BufferedReader( new InputStreamReader(urlConnection.getInputStream(),"UTF-8"));
    		while((read=in.readLine())!=null){
    			inputLine.append(read+"\r\n");
    		}
    		//System.out.println(inputLine.toString());
    	} catch (MalformedURLException e) {
    		e.printStackTrace();
    	} catch (IOException e) {
    		e.printStackTrace();
    	}finally{
    		if(in!=null){
    			try {
    				in.close();
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
    	}
    	
    	
    	Pattern p = Pattern.compile("\\<dd class\\=\"fz24\">(.*?)\\<\\/dd>");
    	Matcher m = p.matcher(inputLine.toString());
    	if(m.find()){
    		String ipstr = m.group(1);
    		ip = ipstr;
    		//System.out.println(ipstr);
    	}
    	return ip;
    

    }

    参考博客: http://blog.csdn.net/dugucanjian/article/details/47378063

    展开全文
  • //客户端ip HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); String ip = request.getHeader("x-forwarded-for"); if (ip == null || ip...
  • 这几天搞了用java获取ip地址,由于测试方法不对,一直没有成功,昨天终于想通了并不是方法不对,而是我的测试方法不对,下面这个方法,完全可以得到客户端的公网ip地址 但是在测试的时候注意:我用的是weblogic...
  • java获取请求者真实的公网ip地址

    千次阅读 2020-05-07 01:28:38
    java程序中获取浏览者真实的公网ip地址,程序健壮性极好,代码如下: publicvoiddownLoad(HttpServletRequestrequest){ Stringip=null; //处理代理情况 ip=request.getHeader("x-forwarded-for"); if...
  • package org.jeecg.common.util; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; ... import java.io.BufferedReader;...import java.io.Inpu
  • 获取发送请求的电脑的IP地址,并返回 可在拦截其中使用 package com.lc.z.common.utils; import javax.servlet.http.HttpServletRequest; public class IpUtil { /** * 获取请求ip */ public static ...
  • 分析总结 服务器端获取访问者外网iP的核心代码就是下面这一行代码,需要特别注意的是下面这行代码只能在服务器端...客户端获取外网IP地址的方式核心代码如下(完整代码到下面获取),通过模拟HTTP请求访问http://www.i
  • java获取本地ip、外网ip请求客户端ip
  • * 获取Ip地址 * @param request * @return */ private static String getIpAddress(HttpServletRequest request) { String Xip = request.getHeader("X-Real-IP"); String XFor = request.g
  • // 本地IP,如果没有配置外网IP则返回它 String netip = null;// 外网IP Enumeration<NetworkInterface> netInterfaces = NetworkInterface.getNetworkInterfaces(); InetAddress ip = null; boolean ...
  • package SocketTest; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.InetAddress; import java.net.URL; ...
  • Java获取外网ip地址

    万次阅读 2015-08-09 17:48:22
    最近在做一个app,其中有一个功能点是获取本机的外网ip,网上流传的绝大部分都是获取局域网ip的方法,有些似乎能够获取外网ip方法但也已经失效。 大部分提到的都是 ip = InetAddress.getLocalHost()....
  • java web获取客户端外网ip和所在区域

    千次阅读 2018-11-12 11:48:00
    根据外网ip获取所在区域 System.out.println(ipCity); req.setAttribute( "ipCity" , ipCity); } catch (Exception e) { e.printStackTrace(); } return "home" ; } } View Code IpUtil ...
  • 知道如何通过java获取客户端ip地址?若不会,我手把手教你,超级详细,相信我能把你教会。
  • java获取登录内网ip地址 最近好多小伙伴在和我说怎么java怎么获取登录的ip地址,今天就分享一下我的方法了。 1、直接获取ip地址 //获取request请求 HttpServletRequest request = ((ServletRequestAttributes) ...
  • 本机ip public static String getIpAddr(HttpServletRequest request) { if (request == null) { return null; } String ip = null; // X-Forwarded-For:Squid 服务代理 String ipAddresses = request....
  • 用来实现如何获得本机的内网ip,外网ip和根据ip获得相应的地址。 花了几个小时才弄清,然后整理了一下,希望有用。 首先要明白以下三种ip地址的区别: (1)127.0.0.1也就是localhost,这是本地ip地址,是只能...
  • 直接代码中调用HttpServletRequest的getRemoteAddr()方法获取客户端请求的真实ip @GetMapping("/getIp") public String getIp(HttpServletRequest request){ return request.getRemoteAddr(); } 2、配置nginx...
  • 首先写这个只是做个笔记,下次直接需要使用,真是不想吐槽有些文章标题党,搜的就是如何查看公网IP 外网IP ,你们标题挂着也是获取公网IP、 外网IP ,写的是获取本地的IP ,好像有大病。 做这个是因为项目可能要...
  • NULL 博文链接:https://kavy.iteye.com/blog/2241797
  • Java获取IP和端口(Linux)

    2021-07-20 15:31:38
    获得客户机信息: getRequestURL() 返回客户端发出请求时的完整URL。 getRequestURI() 返回请求行中的参数部分。 getQueryString () 方法返回请求行中的参数部分(参数名+值) getRemoteHost() 返回发出请求的客户机...
  • 访问sohu接口获取外网ip 这个方案有个弊端,就是返回的是最外层的路由器的请求ip,不是发起请求的地方的内网ip <script src="http://pv.sohu.com/cityjson?ie=utf-8"></script> <script language=...
  • 之前写了一个获取ip地址的方法,但是放网上一查显示此Ip地址是局域网ip地址,要是想获取请求端的真实公网ip地址怎么样了,看了一些别人的博客后发现,想要获取客户端的公网ip必须借助第三方。 package ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 59,486
精华内容 23,794
关键字:

java获取请求外网ip

java 订阅