我如何知道我的外部IP地址是什么?

时间:2009-07-17 21:57:26

标签: windows networking

我的电脑正坐在路由器/防火墙后面。如何以编程方式找出我的外部IP地址。我可以使用http://www.whatsmyip.org/进行即席查询,但TOS不允许自动检查。

有什么想法吗?

13 个答案:

答案 0 :(得分:46)

http://ipecho.net/plain似乎是一个    可行的替代方案,因为whatismyip.com现在需要会员资格    他们的自动链接。他们非常善良    offering此服务免费,    所以请不要滥用它。

答案 1 :(得分:12)

不幸的是,没有简单的方法可以做到。

我会使用像www.whatsmyip.org这样的网站并解析输出。

checkip.dyndns.com返回一个非常简单的HTML文件,如下所示:

<html>
  <head>
    <title>Current IP Check</title>
  </head>
  <body>
    Current IP Address: 84.151.156.163
  </body>
</html>

这应该很容易解析。 此外,该网站存在了大约十年。 希望它会存在一段时间。

答案 2 :(得分:11)

如果您可以访问带有modphp的网络服务器,您可以自己动手:

<?php print $_SERVER['REMOTE_ADDR']; ?>

如果您不希望被滥用,则必须保密或添加请求限制。

我多年来一直在我的服务器上使用它。

显式:

在您网站的public_html文件夹中创建名为whatismyip.php的文件。它可以被称为任何东西,并且可以在你的webroot中的任何地方。

添加上面的行,然后查询您的服务器:

curl http://example.com/whatismyip.php

例如。

答案 3 :(得分:6)

不幸的是,截至2013年,whatismyip.com对该服务收费。

3年后,

http://www.icanhazip.com仍然强劲。只需输出IP作为文本,绝对没有别的。

http://checkip.dyndns.org仍然有效。

如果你想确保它不会失效,你也可以使用谷歌,但它仍然可以阻止你违反TOS。

https://www.google.ie/search?q=whats+is+my+ip

但即使他们阻止我,他们仍然会在错误消息中告诉我我的客户端IP地址。

答案 4 :(得分:3)

curl ifconfig.me

curl ifconfig.me/ip

如果您没有安装curl,

wget ifconfig.me/ip 2>/dev/null && cat ip

希望这有帮助。

答案 5 :(得分:2)

如果您所在的路由器说UPnP,您可以随时使用UPnP库来处理您正在开发的任何语言,以查询路由器的外部IP。

答案 6 :(得分:2)

http://myexternalip.com提供此类信息。至 检索你的IP你有很多选择:

答案 7 :(得分:2)

由于此问题曾被问过,现在有一个免费提供的网络服务,专门用于以编程方式确定您的IP地址,称为ipify

$ curl 'https://api.ipify.org?format=json'

结果

{"ip": "1.2.3.4" /* your public IP */}

答案 8 :(得分:1)

另一种方法是,如果您可以访问云电子邮件(yahoo,google,hotmail),请给自己发送电子邮件。然后查看标题,您应该在那里看到您的IP地址。

我会查找确切的区域,但标题可能会因每个项目不同而有所不同,查找收件人并按照这一点进行操作,直到找到看似发送的内容

编辑:这回答了如何找到IP地址,而不是通过PROGRAMMATIC方法

答案 9 :(得分:1)

我的WRT54G路由器通过其本地路由器访问功能(http(s)管理界面)告诉我,我想可以用许多其他设备完成类似的操作。在这种情况下,输入页面将包含此短语的四行中的IPv4地址的八位字节给出:

class = num maxLength = 3 size = 3 value =' i 'name ='wan_ipaddr_ N 'id ='wan_ipaddr_ N '

其中 i 是八位字节值, N 是八位字节数。 cygwin提供了一些顺口溜的东西为我提取并解析它:

#! /usr/bin/env perl
use strict;
use warnings 'all';

my( $account, $password ) = @ARGV;

open QUERY,
    "curl --sslv3 --user '$account:$password' https://Linksys/ --silent |"
    or die "Failed to connect to router";

my @ipaddr = ('x','x','x','x');

while( <QUERY> ) {
    $ipaddr[$2] = $1 if /value='(\d+)' name='wan_ipaddr_([0-3])/;
}
close QUERY;
print join('.', @ipaddr);

无法保证这适用于所有版本的路由器固件。

如果您的路由器设置为使用此接口的http,请删除--sslv3 curl选项,您可以使用点分十进制表示法来寻址路由器。要将https与上面的curl选项一起使用,我也这样做了:

  1. 使用浏览器获取路由器的自签名证书(保存为Linksys.crt)。

  2. 将其添加到我的CA捆绑包中:

    openssl x509 -in Linksys.crt -text >> /usr/ssl/certs/ca-bundle.crt
    
  3. 将“Linksys”添加到我的主机文件(我的Win8盒子上的C:\ Windows \ System32 \ Drivers \ etc \ HOSTS),作为路由器地址的别名。如果给出curl而不是此别名的点分十进制表示法,则它会因证书主题名称不匹配而拒绝连接。
  4. 或者,您可以使用--insecure选项绕过证书验证,这可能在这种情况下更有意义。

答案 10 :(得分:0)

whatismyip.com或ipchicken.com很容易解析。

如果你有一个虚拟主机或vps,你也可以确定它,而不用担心它随机下降而让你陷入困境。

答案 11 :(得分:0)

ifcfg.me 允许通过

查找

NSLOOKUP
远程登录
FTP
和http

甚至适用于IPv6

答案 12 :(得分:-2)

简单但不优雅的用途。我安装了一些安全摄像头和我的有线电视提供商--Broad Open West或WOWWAY每月需要10美元来设置一个静态IP - EXTORTION用于DHCP保留...所以,我用以下代码创建了一个VBS文件,将结果删除dropbox和google drive ...由于某种原因,必须删除要同步的新文件。

这在我家的电脑上运行。我的电脑设置为在停电时恢复,并且计划每天运行一次任务(请注意,如果您经常运行,该站点将阻止您的请求)。

现在我可以在旅途中获取我的IP地址并观察人们窃取我的东西:-)

get_html "http://ipecho.net/plain", "C:\Users\joe\Google Drive\IP.html"

get_html "http://ipecho.net/plain", "C:\Users\joe\Dropbox\IP.html"



sub get_html (up_http, down_http)

dim xmlhttp : set xmlhttp = createobject("msxml2.xmlhttp.3.0")

xmlhttp.open "get", up_http, false

xmlhttp.send

dim fso : set fso = createobject ("scripting.filesystemobject")

dim newfile : set newfile = fso.createtextfile(down_http, true)

newfile.write (xmlhttp.responseText)

newfile.close

set newfile = nothing
set xmlhttp = nothing

end sub