3

到目前为止,我执行以下操作:

driver.get("http://www.whatismyip.com/");
String myIP = driver.findElement(By.id("greenip")).getText();
System.out.println(myIP);

有没有更好的办法?

(PS:我试过这个解决方案但是 NetworkInterface 给了多个 IP,另一方面InetAddress.getLocalHost().getHostAddress()给了错误的 IP。)

4

1 回答 1

1

问题是没有像我的ip这样的东西。您的机器可以有多个接口,每个接口可以有多个 IP。所以我真的不认为你想进入它。您所能做的就是尝试使用 Web API 来获取您的外部 IP 地址。这是Java中的代码,实际上只是在这些站点的帮助下在互联网上寻找您的IP

    public static String getIpAddress() 
    { 
    URL myIP;
    try {
        myIP = new URL("http://api.externalip.net/ip/");

        BufferedReader in = new BufferedReader(
                new InputStreamReader(myIP.openStream())
                );
        return in.readLine();
    } catch (Exception e) 
    {
        try 
        {
            myIP = new URL("http://myip.dnsomatic.com/");

            BufferedReader in = new BufferedReader(
                    new InputStreamReader(myIP.openStream())
                    );
            return in.readLine();
        } catch (Exception e1) 
        {
            try {
                myIP = new URL("http://icanhazip.com/");

                BufferedReader in = new BufferedReader(
                        new InputStreamReader(myIP.openStream())
                        );
                return in.readLine();
            } catch (Exception e2) {
                e2.printStackTrace(); 
            }
        }
    }

return null;
}

现在有了这个,你可以从互联网上获取你的 ip,但同样是你的外部 IP

于 2013-07-26T22:25:13.613 回答