Board logo

標題: [發問] 為何VBA查詢的IP與實際網頁上查詢的IP不同? [打印本頁]

作者: PKKO    時間: 2016-2-28 15:05     標題: 為何VBA查詢的IP與實際網頁上查詢的IP不同?

不好意思麻煩各位大大,
小弟已經找到大約十個可以查詢到IP的VBA程式碼(當然有許多重複的)
但查詢結果都是192.168.xx.xx

可是小弟要的是下方網站
http://dir.twseo.org/ip-check.php
所查詢出來的IP=42.72.5.xxx

為何所有VBA程式碼查詢出來的都跟網頁查詢的IP不同?例如下方程式碼
  1. Function GetIPAddress()
  2.     Const strComputer As String = "."   ' Computer name. Dot means local computer
  3.     Dim objWMIService, IPConfigSet, IPConfig, IPAddress, i
  4.     Dim strIPAddress As String

  5.     ' Connect to the WMI service
  6.     Set objWMIService = GetObject("winmgmts:" _
  7.         & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

  8.     ' Get all TCP/IP-enabled network adapters
  9.     Set IPConfigSet = objWMIService.ExecQuery _
  10.         ("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE")

  11.     ' Get all IP addresses associated with these adapters
  12.     For Each IPConfig In IPConfigSet
  13.         IPAddress = IPConfig.IPAddress
  14.         If Not IsNull(IPAddress) Then
  15.             strIPAddress = strIPAddress & Join(IPAddress, ", ")
  16.         End If
  17.     Next

  18.     MsgBox strIPAddress
  19. End Function
複製代碼
各位大大可自行測試看看這兩種方式
會查詢出兩種不同的IP

要如何才能夠查詢到網頁的那種IP位置呢?
作者: jackyq    時間: 2016-2-28 23:24

Function GetIPAddress()
        Const strComputer As String = "."   ' Computer name. Dot means local computer
        Dim objWMIService, IPConfigSet, IPConfig, IPAddress, i
        Dim strIPAddress As String

        ' Connect to the WMI service
        Set objWMIService = GetObject("winmgmts:" _
            & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

        ' Get all TCP/IP-enabled network adapters
        Set IPConfigSet = objWMIService.ExecQuery _
            ("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE")

        ' Get all IP addresses associated with these adapters
        For Each IPConfig In IPConfigSet
            IPAddress = IPConfig.IPAddress
            If Not IsNull(IPAddress) Then
                If InStr(1, IPConfig.Description, "WAN (", vbTextCompare) Then
                   MsgBox "網頁 IP = " + IPAddress(0)
                End If
                strIPAddress = strIPAddress & Join(IPAddress, "/") + vbCrLf
            End If
        Next

        MsgBox strIPAddress
    End Function
作者: jackyq    時間: 2016-2-28 23:28

以我的為例
IPConfig.Description

WAN (PPP/SLIP) Interface  '寬頻
Realtek RTL8168/8111 PCI-E Gigabit Ethernet NIC - Packet Scheduler Miniport  ' 主機板上的內建網卡
VMware Virtual Ethernet Adapter for VMnet1  '虛擬機上的虛擬卡
VMware Virtual Ethernet Adapter for VMnet8  '虛擬機上的虛擬卡
作者: PKKO    時間: 2016-2-29 01:36

回復 3# jackyq


    感謝大大的回覆
不過您的程式碼執行之後
MsgBox "網頁 IP = " + IPAddress(0)=>這段程式碼都無法執行到

跑完的結果,跟我PO的程式碼一樣耶
我現在上網查IP=42.XX開頭
但是VBA查出來的卻是192.168開頭

有辦法查到42.XX開頭的IP嗎?
還是說,是因為我的電腦接的是WIFI(4g信號)所導致的原因?
作者: jackyq    時間: 2016-2-29 12:36

本帖最後由 jackyq 於 2016-2-29 12:40 編輯







打入  ipconfig  看看有無出現你要的ip值
作者: PKKO    時間: 2016-2-29 18:46

回復 5# jackyq


沒有出現我要的IP耶
所以因該是因為4G所導致的囉?
都是出現192.168.x.x

我上網查詢的都是42.XX開頭
作者: jackyq    時間: 2016-2-29 21:04

本帖最後由 jackyq 於 2016-2-29 21:11 編輯

可以考慮用作弊方法
抓網頁內容  http://dir.twseo.org/ip-check.php
作者: PKKO    時間: 2016-3-1 09:36

回復 7# jackyq


    哈哈,這招高明,感謝大大!




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)