У меня был тот же вопрос, и я немного искал, чтобы вспомнить, что я могу сделать это с помощью WebBrowser!
Private Sub getExtIP() Handles activeProjectsWB.DocumentCompleted
If gotIP = False And populateProjectCollectionBLN = True Then
If activeProjectsWB.ReadyState = WebBrowserReadyState.Interactive Or activeProjectsWB.ReadyState = WebBrowserReadyState.Complete Then
Dim unformattedExtIP As String = activeProjectsWB.Document.GetElementsByTagName("title").Item(0).OuterHtml
Dim onlyIPAddress As String = String.Empty
For Each character In unformattedExtIP
Dim result As Integer = 0
If Not (Integer.TryParse(character, result) = 0) Or character = "." Then
onlyIPAddress = onlyIPAddress & character
End If
Next
extIP = onlyIPAddress
gotIP = True
End If
End If
End Sub
Эта подпрограмма запускается только при переходе на веб-страницу с использованием WebBrowser.Navigate()
.
Логическое значение gotIP
существует, потому что у меня есть другая подпрограмма, которая активируется при любом завершении документа. Я не хочу, чтобы это срабатывало более одного раза. Если вы не знакомы с WebBrowser
, убедитесь, что веб-страница достаточно загружена с ReadyState
. Если вы этого не сделаете, вы можете получить исключение (потому что контент не загружен).
Вы можете использовать любой понравившийся вам сайт. Этот сайт хорош, потому что он помещает ваш IP-адрес в заголовок. Это хорошо, потому что будет один title
тег. Если вы не можете использовать этот сайт (или сайт, содержащий уникальный тег с вашим контентом), используйте цикл For Each
.
For Each instance As HtmlElement In activeProjectsWB.Document.GetElementsByTagName("InsertTagHere")
'do something to find the tag that contains your IP address
Next