Homepage ID auslesen und in String packen

  • VB.NET

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von xChRoNiKx.

    Homepage ID auslesen und in String packen

    Hallo zusammen,

    habe das Problem, dass ich nicht den Wert aus einer Homepage in ein String packen kann.
    Habe dazu einiges jetzt gesucht per Google, konnte aber nix hilfreiches finden.

    Habe das hier mal versucht und es geht wie gesagt leider nicht so wie ich mir das vorgestellt habe:

    VB.NET-Quellcode

    1. Public Function Wertlesen(ByVal Gesstring As String, ByVal URL As String) As Integer
    2. Dim hReq As HttpWebRequest
    3. Dim HRes As HttpWebResponse
    4. hReq = DirectCast(HttpWebRequest.Create("https://www.wieistmeineip.de/"), HttpWebRequest)
    5. HRes = DirectCast(hReq.GetResponse(), HttpWebResponse)
    6. Dim s As Stream = HRes.GetResponseStream()
    7. Dim sR As New StreamReader(s)
    8. Dim webpage As String = sR.ReadToEnd
    9. sR.Close()
    10. s.Close()
    11. sR = Nothing
    12. s = Nothing
    13. hReq = Nothing
    14. HRes = Nothing
    15. Dim Startpos As Integer = webpage.IndexOf("ipv4-value")
    16. Dim Zwischenstring As String = webpage.Substring(Startpos, 40)
    17. Dim i As Integer = 0
    18. Wertlesen = 0
    19. Do Until i = 39
    20. If IsNumeric(Zwischenstring(i)) = True Then
    21. If IsNumeric(Zwischenstring(i + 2)) = True Then
    22. Wertlesen = Convert.ToString(Zwischenstring(i) & Zwischenstring(i + 1) & Zwischenstring(i + 2))
    23. Exit Do
    24. Else
    25. Wertlesen = Convert.ToString(Zwischenstring(i) & Zwischenstring(i + 1))
    26. Exit Do
    27. End If
    28. End If
    29. i = i + 1
    30. Loop
    31. End Function

    (hierzu muss gesagt werden, dass ich das auch mit "Convert.ToInt32" versucht habe)

    und bei Form Load habe ich einfach ein Label namens "ip" der dann den String ausgeben soll (in dem fall die eigene Internet IP-Adresse):

    VB.NET-Quellcode

    1. ip.Text = Wertlesen("ipv4-value", ip.Text)


    Bei mir wird in allen möglichkeiten ob String oder Int ... IMMER ... "-4" ausgegeben.

    Würde gerne wissen wie ich es schaffe, dass meine IP-Adresse (IPv4) angezeigt wird von dieser Seite ? :saint:

    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    könnte daran liegen das es "ipv4-value" dort garnicht gibt.

    Aber du machst es dir komplizierter als es ist :P
    Wenn du nur deine IP möchtest:

    C#-Quellcode

    1. string ip = new WebClient().DownloadString("http://icanhazip.com");
    2. Console.WriteLine(ip);


    Ist in C# aber das sollte ja kein Problem sein also der Umbau.
    Alternative wenn du nicht auf einen Fremden HOST angewiesen sein möchtest
    kannst du dir einfach eine PHP Datei auf ein WebSpace legen mit dem Inhalt:

    PHP-Quellcode

    1. <?php
    2. echo $_SERVER["REMOTE_ADDR"];
    3. ?>

    Und dann anstatt icanhazip dein PHP Script abrufen ;)

    Grüße
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen

    PlatinSecurity schrieb:

    Public Function Wertlesen

    PlatinSecurity schrieb:

    Dim hReq As HttpWebRequest
    Außerdem ist das ganze sicher kein VBA sondern VB.NET
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell

    xChRoNiKx schrieb:

    könnte daran liegen das es "ipv4-value" dort garnicht gibt.
    #

    Doch :D ... "<span id="ipv4-value">MEIN IPv4</span>" zu finden bei "<div class="">" unter "<div id="ipv4" class="ip">".

    Radinator schrieb:

    Außerdem ist das ganze sicher kein VBA sondern VB.NET


    Hast du gleube recht :x Ich bitte um entschuldigung und wäre sehr dankbar wenn dies verschoben wird. :saint: <3


    Und nun noch mal zu - xChRoNiKx -:
    Ich kann dies nicht ändern da ich aktuell erst wieder heute damit angefangen hab mich zu beschäftigen.
    Bin sehr lange in diesen Bereichen nicht mehr tätig gewesen.

    EDIT: Ah doch ok habs ... war ja nur das DIM

    EDIT2: Kann irgendwie keine Antwort mehr erstellen aber ok... dann so...
    Ok mit dem Code

    VB.NET-Quellcode

    1. Dim ipv4 = New WebClient().DownloadString("http://icanhazip.com")
    2. ip.Text = ipv4

    bekomme ich aber jetzt leider nur die IPv6 raus.

    Würde gerne die IPv4 Adresse haben.
    Auch bei Internet Nutzern die IPv6 bevorzugt haben.
    Die von wieistmeineip.de schaffen das ja auch irgendwie :x

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „PlatinSecurity“ ()

    PlatinSecurity schrieb:


    Doch :D ... "<span id="ipv4-value">MEIN IPv4</span>" zu finden bei "<div class="">" unter "<div id="ipv4" class="ip">".

    Ich kann dies nicht ändern da ich aktuell erst wieder heute damit angefangen hab mich zu beschäftigen.


    Also ich hab mir jetzt wirklich mal eben die mühe gemacht und nachgeschaut.
    Du hast einfach falsch geschlussfolgert.
    "ipv4-value" ist nicht vorhanden.
    So sieht der Quelltext aus:

    HTML-Quellcode

    1. <div id="ipv4" class="ip"> <div><h1>Ihre IP-Adresse lautet:</h1></div> <div class="title"><strong>xxxxxxxx</strong></div></div>
    2. <div id="ipv6" class="ip"> <div>Ihre IPv6-Adresse lautet:</div> <div class=""><span id="ipv6-value">nicht vorhanden</span> <a href="https://www.wieistmeineip.de/ipv6/" class="info"></a></div></div>

    Es gibt "ipv6-value" aber kein ipv4.

    VB.NET-Quellcode

    1. Dim ip As String = New System.Net.WebClient().DownloadString("http://icanhazip.com")
    2. MessageBox.Show(ip)

    Sollte gehen ist jetzt aussem Kopf raus...

    @EDIT//
    @PlatinSecurity :
    wieistmeineip die rechnen die IPv4 von der IPv6 aus und zeigen dir deshalb beide an.
    PHP gibt dir immer nur die IP zurück mit der du dich zu dem Server verbindest.
    Verbindest du dich per v4 zeigt er die v4 an wenn du mit v6 ankommst bekommst du eben die v6 angezeigt.
    Du kannst meines wissens nach NICHT beide Adressen bekommen da nur mit einer der beiden die verbindung aufbaust ( korrigiert mich wenn falsch bitte )
    Deshalb ist Konvertieren angesagt. Da einfach nach googlen ;)


    Greetz
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „xChRoNiKx“ ()

    Also

    VB.NET-Quellcode

    1. Dim ip As String = New System.Net.WebClient().DownloadString("http://icanhazip.com")
    2. MessageBox.Show(ip)


    geht leider auch nicht wie erwartet. Zeigt ebenfalls eine IPv6 an.

    Zu "wieistmeineip.de"... Komisch bei mir sieht es so aus >>
    Der unterschied im Quellcode kommt von der Verbindung die man aufbaut.
    Kommt man per v6 drauf gibt es ein v4-value Feld weil dies ausgerechnet / konvertiert wird.
    Kommt man per v4 drauf ist es nicht da und meine v6 Adresse wird auch nicht angezeigt aber ein v6-value Feld.
    Also bleibt dir nichts anderes übrig als zu prüfen ob du eine v6 Adresse hast wenn ja dann konvertieren. (falls es etwas anderes gibt bin ich da auch gerne offen ;) )
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen
    Also bleibt dir nichts anderes übrig als zu prüfen ob du eine v6 Adresse hast wenn ja dann konvertieren.


    Ich habe eine IPv6. Das brauche ich gar nicht erst prüfen :D
    Aber Convertieren von IPv6 Adressen is doch gar nicht möglich oder doch ?
    Sind ja verschlüsselt eigentlich ? o.o
    Verschlüsselt sind die nicht.
    Es gibt mehrere Arten von diesen IP Adressen.
    Es gibt welche die lassen sich hin und her Konvertieren und es gibt welche bei denen es nicht geht.

    Du bekommst ja deine richtige IP zurück sei es v4 oder v6.
    Wie gesagt Konvertieren geht nicht bei allen Adressen ließ dir dazu mal die Wiki Artikel für ipv6 durch.
    Die Frage ist wofür brauchst du das ?
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen

    ließ dir dazu mal die Wiki Artikel für ipv6 durch


    Ja hab es gerade getan.
    Habe auch mit einem eigenen PHP Script das jetzt so gemacht:

    PHP-Quellcode

    1. <?php
    2. if($_GET["check"] == "ipv6")
    3. {
    4. if(stristr($string, ':') === TRUE)
    5. {
    6. $ipv6 = $_SERVER["REMOTE_ADDR"];
    7. $ipv4 = hexdec(substr($ipv6, 0, 2)). "." . hexdec(substr($ipv6, 2, 2)). "." . hexdec(substr($ipv6, 5, 2)). "." . hexdec(substr($ipv6, 7, 2));
    8. echo $ipv4;
    9. }
    10. else
    11. {
    12. $ip = $_SERVER["REMOTE_ADDR"];
    13. echo $ip;
    14. }
    15. }
    16. elseif($_GET["check"] == "ipv4")
    17. {
    18. $ipv6 = $_SERVER["REMOTE_ADDR"];
    19. $ipv4 = hexdec(substr($ipv6, 0, 2)). "." . hexdec(substr($ipv6, 2, 2)). "." . hexdec(substr($ipv6, 5, 2)). "." . hexdec(substr($ipv6, 7, 2));
    20. echo $ipv4;
    21. }
    22. else
    23. {
    24. echo"
    25. Welche IP m&ouml;chtest du von dir sehen ?<br>
    26. <hr><br>
    27. <a href='?check=ipv4'>IPv4</a><br>
    28. <a href='?check=ipv6'>IPv6</a><br>
    29. <br><hr>
    30. ";
    31. }
    32. ?>


    So kann ich bei

    VB.NET-Quellcode

    1. Dim ipv4 = New System.Net.WebClient().DownloadString("http://www.SERVERNAME.ENDUNG/PFAD/?check=ipv4")
    2. 'oder halt
    3. Dim ipv4 = New System.Net.WebClient().DownloadString("http://www.SERVERNAME.ENDUNG/PFAD/?check=ipv6")


    Die werte ausgeben lassen.
    Problem ist nur jetzt... Meine IPv6 lässt sich anscheind nicht Konvertieren :'D
    Bei wieistmeineip.de bekomme ich eine "37.2x.xxx.xxx" IP und wenn ich das Konvertiere mit der Methode eine "42.2.xxx.x" IP ?! :'D

    Wie macht das bitte wieistmeineip.de und wie macht das z.B. der TeamSpeak3 Client ?
    Da kann man ja die Verbindungsinformationen auch abrufen und sieht seine IPv4 Adresse.
    Bei den neueren Server Versionen wurde es ja gefixt und für IPv6 User auch diese eingefügt.

    Aber es geht. Ts3 Client und wieistmeineip.de bekommen also meine echte IPv4 Adresse aber ich kann diese nicht
    selber "Konvertieren" oder ausgeben ?
    Ich gehe mal davon aus das du einen "vollwertigen" IPv6 Anschluss hast und ansich hast du garkeine IPv4 bekommen. (Schau mal in deinen Router nach)
    Dahingegen wird das ganze per Tunnel geregelt "6to4" oder anderes gibt es auch im Wiki Artikel zu IPv6 zu lesen : de.wikipedia.org/wiki/6to4
    Auf der rechten Seite sind IPv6-Übergangsmechanismen zu finden. Geh ich mal von aus das es dann nicht möglich ist diese umzurechnen wie ich ja sagte.

    Du kannst das ganze auch im Router nachschauen. Bei mir gibt es diverse Einstellungen zu IPv6 die ich machen kann auch was das Tunneling angeht.
    Noch tiefer was das ganze Tunneling und IPv6-Packets -> IPv4-Packets angeht kann ich nicht gehen da dort auch mein Wissen aufhört
    und ich möchte ungern unwahre Sachen teilen ;) Aber ich denke mit dem WIKI und auch so dem Internet findet man noch paar mehr
    Sachen die das ganze Betreffen ;)

    Greetz
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen
    Ja ich habe einen IPv6 Anschluss von Unitymedia.

    Im Vertrag selber steht ja auch die IPv4 Adresse, aber auch im Rounter so weit ich weis unter Sicherheit oder so.
    Selbst wenn nicht. WIE kann wieistmeineip.de oder der Ts3 Client meine IPv4 ermitteln die auch noch richtig ist.

    Ich habe jetzt allein durch 2 verschiedene Konvertierungs Methoden 2 unterschiedliche "ipv4" Adressen die
    aber falsch sind.

    Erste Methode ist ja wie oben bekannt und die Zweite habe ich jetzt einfach mal so versucht:

    PHP-Quellcode

    1. $ip = $_SERVER["REMOTE_ADDR"];
    2. list(,$ip) = unpack('N',$ip);
    3. $ip2 = long2ip($ip);
    4. echo $ip2;


    Da kommt komischer weise ein IPv4 mit 50.9x.xx.xx

    Naja aber letzendlich steht die frage... Wie machen es die beiden Beispiel Seiten/Clienten ?
    So habe mal eben geschaut was da so läuft :P
    Vergiss das umrechnen.

    Habe mir mal angesehen was denn so passiert bei wieistmeineip
    Dort werden per AJAX jeweils 2 PHP Scripte abgerufen
    Einmal um IPv4 zu bekommen und einmal IPv6 (wenn vorhanden bei mir)
    Gehe davon aus das die dort dann zu einem v4 only und einem v6 only Webserver Anfragen schicken.
    So bekommen sie dann beide Adressen. Weil wie gesagt du kannst nicht mit beiden gleichzeitig zu ein und dem selben Server verbunden sein.
    Teamspeak wird das wahrscheinlich genauso handhaben.

    Diese Website : whatismyv6.com
    Hat auch jeweils eine Subdomain für eine Adresse.
    Also !denke! ich das es so geregelt wird. Anders kann ich mir nicht vorstellen.
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen

    Diese Website : whatismyv6.com
    Hat auch jeweils eine Subdomain für eine Adresse.


    Habe mir das mal angeschaut und das sieht echt gut aus.
    Nur kann ich die jetzt nicht so einfach mit

    VB.NET-Quellcode

    1. Dim ipv4 = New System.Net.WebClient().DownloadString("http://ipv4.whatismyv6.com/")
    2. 'oder
    3. Dim ipv6 = New System.Net.WebClient().DownloadString("http://ipv6.whatismyv6.com/")

    einbinden, da sonst der HTML Text ausgegeben wird.

    Kommen wir also da wieder zum "Anfang".
    Ich versuch es mal mit HTML Auslesen :'D

    Melde mich sobald ich mehr hab als EDIT ! ... Bis gleich :o

    EDIT: Klappt nicht :DDDD
    Es entsteht genauer gesagt ein Fehler im Visual Basic Programm
    "Die Eingabezeichenfolge hat das falsche Format."

    Trotz versuch mit "Convert.ToString" und "Convert.ToInt32"


    EDIT - WICHTIG -:
    Habe es geschafft. Dank der Antwort von dir @xChRoNiKx mit dem Host "icanhazip.com".
    Habe einfach mal so dumm wie ich bin noch das hier dran gehangen "ipv4.icanhazip.com" und "ipv6.icanhazip.com".
    Beide geben halt das aus, was sie auch sollen *-*

    Fazit: ES GEEEEEHT :D ... Ihr dürft den Post nun schließen und ich bedanke mich bei allen dir mir geholfen haben und Geduldig waren :3 :* <3

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „PlatinSecurity“ ()

    Nur noch ganz nebenbei. Auch wenn das jetzt funktioniert. :P
    Ich fragte ja schon wofür du das denn brauchst ^^
    Wenn jemand kein IPv6 hat kommt ein Verbindungsfehler bei der IPv6 Adresse (Müsstest du also noch Abfangen)

    Grüße
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen

    xChRoNiKx schrieb:

    wieistmeineip die rechnen die IPv4 von der IPv6 aus und zeigen dir deshalb beide an.
    Ausrechnen? Du bist lustig ;D Nein. Solche Domains lesen aus der TCP Verbindung zwischen dir und der Seite einfach deine öffentlich IP ab.

    PlatinSecurity schrieb:

    Ich habe eine IPv6.
    Du (also dein Rechner) oder dein Anschluss?

    PlatinSecurity schrieb:

    Aber Convertieren von IPv6 Adressen is doch gar nicht möglich oder doch
    In was willst du eine IPv6 Adresse konvertieren?

    IPv6 ist ledigltich eine Darstellungsweise. IPv4 hat als Darstellungspool (also Zeichen, die zur Darstellung verwendet werden können) die (Dezimal-)Zahlen 0 bis 9 und den .. IPv6 wiederum verwendet die Hex-Ziffern 0 bis F. IPv4 hat 4 (durch den Punkt getrennte) "Stellen", die von 0 bis 255 reichen können. IPv6 hat 8 (durch : getrennte) "Stellen", welche von 0 bis FFFF reichen.
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell

    Radinator schrieb:

    Ausrechnen? Du bist lustig ;D Nein. Solche Domains lesen aus der TCP Verbindung zwischen dir und der Seite einfach deine öffentlich IP ab.



    Jo deshalb sagte ich ja vergiss das umrechnen, war da ein wenig auf dem falschem weg.
    Hatte ja dann extra mal bei wieistmeineip.de nachgeschaut und dann rausgefunden das die einfach 2 Request abschicken
    einmal für die v4 und einmal für die v6 Adresse ;)
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen