欢迎访问宙启技术站
智能推送

vbs如何实现myipneighbors域名查询结果整理

发布时间:2023-05-15 19:14:12

在vbs中,我们可以通过使用WinHttp来实现域名的查询和获取。在查询过程中,我们需要获取指定域名的IP地址,并使用ping命令确定其邻近地址。我们可以将结果整理成一个包含IP地址和邻近地址的列表。 下面是实现过程。

Step 1.查询域名的IP地址

我们可以使用WinHttp对象的SetRequestHeader方法,将域名作为参数传递给它,它将返回一个包含IP地址的JSON格式的响应。下面是相关代码:

Dim oWinHttp:Set oWinHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
oWinHttp.Open "GET", "https://api.ipify.org/?format=json", False
oWinHttp.SetRequestHeader "Content-Type", "application/json"
oWinHttp.Send
Dim sJson:sJson = oWinHttp.ResponseText

Step 2.解析JSON格式的响应

我们使用JavaScriptSerializer对象来解析JSON响应。它将JSON格式的字符串转换为JavaScript对象。下面是解析JSON的相关代码:

Dim oJsonParser:Set oJsonParser = CreateObject("ScriptControl")
oJsonParser.Language = "JScript"
Dim oJsonObj:oJsonObj = oJsonParser.Eval("(" & sJson & ")")
Dim sIP:sIP = oJsonObj.ip

Step 3.确定邻近地址

我们使用ping命令来确定域名的邻近地址。我们可以使用WScript.Shell对象执行ping命令,并捕获ping的响应结果。下面是相关代码:

Dim oShell:Set oShell = CreateObject("WScript.Shell")
Dim oExec:Set oExec = oShell.Exec("ping.exe -n 1 " & sIP)
Do While Not oExec.StdOut.AtEndOfStream
    Dim sLine:sLine = oExec.StdOut.ReadLine
    If InStr(sLine, "Reply from") > 0 Then
        Dim iStart:iStart = InStr(sLine, "Reply from") + Len("Reply from") + 1
        Dim iEnd:iEnd = InStr(iStart, sLine, ":")
        Dim sNeighbor:sNeighbor = Trim(Mid(sLine, iStart, iEnd - iStart))
        '将IP地址和邻近地址添加到列表中
    End If
Loop

Step 4.整理结果

我们将IP地址和邻近地址添加到一个列表中,并在列表中返回结果。下面是相关代码:

Dim oResult:oResult = CreateObject("System.Collections.ArrayList")
oResult.Add(sIP & " - " & sNeighbor)

完整代码:

Dim oWinHttp:Set oWinHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
oWinHttp.Open "GET", "https://api.ipify.org/?format=json", False
oWinHttp.SetRequestHeader "Content-Type", "application/json"
oWinHttp.Send
Dim sJson:sJson = oWinHttp.ResponseText

Dim oJsonParser:Set oJsonParser = CreateObject("ScriptControl")
oJsonParser.Language = "JScript"
Dim oJsonObj:oJsonObj = oJsonParser.Eval("(" & sJson & ")")
Dim sIP:sIP = oJsonObj.ip

Dim oShell:Set oShell = CreateObject("WScript.Shell")
Dim oExec:Set oExec = oShell.Exec("ping.exe -n 1 " & sIP)
Do While Not oExec.StdOut.AtEndOfStream
    Dim sLine:sLine = oExec.StdOut.ReadLine
    If InStr(sLine, "Reply from") > 0 Then
        Dim iStart:iStart = InStr(sLine, "Reply from") + Len("Reply from") + 1
        Dim iEnd:iEnd = InStr(iStart, sLine, ":")
        Dim sNeighbor:sNeighbor = Trim(Mid(sLine, iStart, iEnd - iStart))
        oResult.Add(sIP & " - " & sNeighbor)
    End If
Loop

For Each sRes In oResult
    WScript.Echo sRes
Next

上述代码将返回包含IP地址和邻近地址的列表,我们可以根据需求对其进一步处理。