我如何从互联网上看programaticaly获取我的网络的IP地址?它显然是我的路由器连接到ISP时可以访问的属性。有没有办法从使用标准协议的路由器获取此信息。我唯一的另一个选择是找到一个返回我的IP地址的WS(令人惊讶的难以做到),或者只是去找whatismyip.com之类的东西并删除所有的HTML(非常脏和易于更改)。有没有其他方法???
答案 0 :(得分:8)
请勿抓取whatismyip.com,请参阅here,了解如何调用仅返回地址的API。
如果你不使用它,你必须自己写一些类似的东西,即路由器之外的主机,它可以报告你的明显地址。
请注意,网络服务器可能看不到您的真实WAN IP地址,因为:
您的ISP可能是透明的 代理HTTP流量,服务器会看到IP的IP 代理。在那种情况下,你通常会 需要寻找和解析一个 X-Forwarded-For标题。
或者,正如Olaf所说,您和广泛开放的互联网之间可能还有另一个NAT路由器,换句话说,您的路由器的WAN地址位于专用网络上。从whatismyip.com这样的服务中获得的最好的是最外层NAT路由器的IP。
答案 1 :(得分:2)
如果您的路由器支持snmp,您可以使用它来询问它的外部IP。这里有一个小例子:
答案 2 :(得分:2)
我已经投票通过了Paul Dixons的回答,因为它看似完整,但还有一个方面:
这些方面不是典型的日常情况,但根据您的需要,您可能需要考虑这些因素。
答案 3 :(得分:1)
我没有看到语言规范,但是我在python中做到了这一点:Finding a public facing IP address in Python?基本上没有办法在不依赖外部服务器的情况下这样做,在这种情况下我使用{{ 3}}只提供IP地址。 或者你可以使用自己的PHP脚本:
<?php
echo $_SERVER['REMOTE_ADDR'];
?>