什么工具,能记录 公网IP 历史log?

通过 gpedit.msc 在 windows 日志里记录的,是内网 IP

有没有一种小软件,后台运行时,它会持续监测 我当前的公网 IP,并记录成 log 呢?

是给自己用的

内网穿透?我觉得呢,使用脚本可能更容易实现。

Linux 下就容易太多了,比如这个:

条件是要有一个域名。

给个 PowerShell 查询公网IP 的命令,其他的自由发挥:

(curl "http://ip-api.com/line/?fields=query" -UseBasicParsing).Content

链接参数自己参考 ip-api 的文档

1 个赞

http://xkonglong.com/getip/

小恐龙IP监测器

但是不能记录ip历史.

这个记了能干啥?

感觉这个如果被大公司或大企业发现以后就会记录下员工上网行为,然后扣发工资奖金等等

curl ifconfig.io >> ip.log做定时任务就可以了

2 个赞

对了,补充一下, win10才有内置curl.

win10以下版本需要单独下载安装. linux自带.

1 个赞

优化一下楼上的方案:

  1. 写一个getip.bat,里面内容大概是 curl ifconfig.io >> ip.log
  2. 写一个getip.vbs,里面内容大概是 set ws=wscript.createobject("wscript.shell") ws.run "D:\ProgramData\bat\getip.bat /start",0
  3. 在windows自带的任务管理器定时调用getip.vbs

优点:真正的后台运行,不会弹出难看的黑色dos框

1 个赞

我想了一下,这个历史 log 的需求,好像不是为了从外面访问家中网络这个需求啊…

我从来没注意过自己的公网 IP 历史记录,因为能用的只有当前 IP,那么问题来了,
@c9be63e9b0cbcb171cf9 你的具体需求是什么呢?

因为当天就解决了,就没再回来看论坛……不知道大家还在继续讨论

以往解决后,都会回来贴一下解决方法,这次恰好忘记了,抱歉

后来自己写的脚本(我放到开机自启里了):

#SingleInstance FORCE
SendMode Input
#NoTrayIcon
#Persistent
oldIP :=         ;初始化

loop {
    url := "http://checkip.dyndns.com/"
    httpQuery(response, url)
    ip := RegExReplace(response, "[^\d\.]", "")   
    if (oldIP != ip && ip != "") {
        FormatTime, TimeString
        output := TimeString . ":`t" . ip . "`r`n"

        FileName := "External_IP.txt"
        file := FileOpen(FileName, "a")
        if !IsObject(file)
        {
            MsgBox Can't open "%FileName%" for writing.
            return
        }
        file.Write(output)
        file.Close()
        oldIP := ip
    }
    Sleep, 10*60*1000
}
return

httpQuery(byref Result, lpszUrl, POSTDATA="", HEADERS="") {
    WebRequest := ComObjCreate("WinHttp.WinHttpRequest.5.1")
    WebRequest.SetTimeouts(6000,6000,6000,6000)
    Try { 
        WebRequest.Open("GET", lpszUrl)
        WebRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
        ;~ WebRequest.SetProxy(2, "localhost:4411")             ;设置代理
        WebRequest.Send(POSTDATA)
        WebRequest.WaitForResponse()
        Result := WebRequest.ResponseText
        WebRequest := ""
    } catch e {
        Result := ""
    }
}

生成的日志是这样的:

13:28 2019年3月16日:	113.129.170.178
23:57 2019年3月16日:	113.129.170.178
1:47 2019年3月17日:	113.129.171.219
18:37 2019年3月17日:	113.129.171.219
19:07 2019年3月17日:	113.129.169.26
14:19 2019年3月18日:	113.129.169.26
0:52 2019年3月19日:	113.129.169.26
11:32 2019年3月19日:	113.129.201.20	
0:35 2019年3月20日:	113.129.201.20
10:50 2019年3月20日:	113.129.169.37
0:43 2019年3月21日:	113.129.169.37
9:51 2019年3月21日:	113.129.201.220
3:14 2019年3月22日:	113.129.201.220
11:08 2019年3月22日:	113.129.201.169	
10:53 2019年3月23日:	113.129.201.169
11:26 2019年3月23日:	113.129.201.169
1 个赞

请问如何让windows运行这个脚本文件,需要安装别的软件吗,能否在启动但是不登录账户的情况下运行

计划任务

这个好!
不过,如果是ipv6的话, ifconfig.io默认只会返回ipv6地址.
需要加 -4 参数.

不加参数也可以用这个

curl ip.sb 名称很好记.哈哈.

快去加一个!

从外面访问家里网络

不是吧,这个就是记录一下你的公网IP,又不是访问IP啊

基本上有点规模的公司本来早就这么干了(公司电脑公司网络的情况下)。。。