如何获取我的计算机IP地址(Java / Selenium)?

3

截至目前,我所做的事情如下:

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

有没有更好的方法呢?

(注:我尝试了这个解决方案,但NetworkInterface会给出多个IP地址,而InetAddress.getLocalHost().getHostAddress()则会给出错误的IP地址。)


您可能想查看https://dev59.com/AWsz5IYBdhLWcg3wJUnJ或https://dev59.com/IGkx5IYBdhLWcg3wCP-Y。 - Blue Ice
1
你所说的“更好”是指什么?更快、更可靠吗?最好的方法根本不涉及Selenium。 - Nathan Merrill
谢谢您的回复。我只使用Selenium,因为我不知道其他方法。还有其他方法吗? - Бывший Мусор
我猜你对网络一无所知,也不明白你的计算机有一个非路由、私有的IP地址。 - Brian Roach
获取外部IP的最佳方法是询问他人,例如您正在使用的网站。就这样! - Arran
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地址。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接