UDF _GetINetInfo() - Internetdaten auslesen

  • Hi,

    Mit der Funktion lassen sich auslesen:

    - Öffentliche Ip-Adresse
    - Öffentlicher Rechnername
    - Internetbrowsername
    - DSL-Provider/Anbieter
    - Proxy (Ja/Nein)
    - Netzkontendaten: Stadt
    - Netzkontendaten: Region
    - Netzkontendaten: Land


    _GetINetInfo():

    Spoiler anzeigen
    [autoit]


    #include <INet.au3>
    #include <String.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ; Function Name:_GetINetInfo()
    ; Description:: Internetdaten auslesen
    ; Parameter(s): keine
    ; Requirement(s):
    ; #include <INet.au3>
    ; #include <Array.au3>
    ; #include <String.au3>
    ;
    ; Return Value(s): Erfolg:Array mit den Internetdaten
    ;
    ; Fehler: @error 0: Source konnte nicht eingelesen werden / keine Internetverbindung
    ; @error 1: Öffentliche Ip-Adresse nicht gefunden
    ; @error 2: Netz-Rechnername nicht gefunden
    ; @error 3: Browsername nicht gefunden
    ; @error 4: DSL-Provider Anbieter nicht gefunden
    ; @error 5: Proxy nicht gefunden
    ; @error 6: Netzkontendaten: Stadt nicht gefunden
    ; @error 7: Netzkontendaten: Region nicht gefunden
    ; @error 8: Netzkontendaten: Land nicht gefunden
    ;
    ; Author(s): Jautois ([email='autoit.report@web.de'][/email])
    ;===============================================================================
    Func _GetINetInfo()

    [/autoit] [autoit][/autoit] [autoit]

    Local $data[8]
    Local $url = "http://www.meineip.de/"

    [/autoit] [autoit][/autoit] [autoit]

    $source = _INetGetSource($url)
    If @error Then SetError(0)

    [/autoit] [autoit][/autoit] [autoit]

    $Names = StringSplit("Das ist Deine IP-Adresse,Rechnername ist,mit diesem Browser,Dein DSL Anschluss kommt von,Proxy eingeschaltet?", ",")
    $Names2 = StringSplit("Stadt: ,Region: ,Land: ", ",")
    For $i = 1 To UBound($Names) - 1
    $btwn = _StringBetween($source, $Names[$i] & "</th>" & @CRLF & " <td>", "<")
    $data[$i - 1] = $btwn[0]
    If @error Then SetError($i)
    Next
    For $i = 1 To UBound($Names2) - 1
    $btwn = _StringBetween($source, $Names2[$i], "<")
    $data[UBound($Names) + $i - 2] = $btwn[0]
    If @error Then SetError(UBound($Names) + $i - 1)
    Next

    [/autoit] [autoit][/autoit] [autoit]

    Return $data
    EndFunc ;==>_GetINetInfo

    [/autoit]


    Konstruktive Kritik ist immer Willkommen!
    Vielen Dank an anno2008 der mir u.a. Tipps gegeben hat ;)

    Mfg
    Jautois

    11 Mal editiert, zuletzt von Jautois (4. Mai 2009 um 18:35)

  • Hallo,
    Aufjedenfall schön gemacht ;). Man kann es aber auch noch kleiner machen:

    Spoiler anzeigen
    [autoit]

    #include <INet.au3>
    #include <String.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $data[8]
    ;===============================================================================
    ; Function Name:_GetINetInfo()
    ; Description:: Internetdaten auslesen
    ; Parameter(s): keine
    ; Requirement(s): #include <INet.au3>
    ;#include <Array.au3>
    ;#include <String.au3>
    ; Return Value(s): Erfolg:Array mit den Internetdaten
    ;
    ;
    ;Fehler: @error 0Source konnte nicht eingelesen werden / keine Internetverbindung
    ;
    ; @error 1Öffentliche Ip-Adresse nicht gefunden
    ;@error 2Netz-Rechnername nicht gefunden
    ;@error 3Browsername nicht gefunden
    ;@error 4DSL-Provider Anbieter nicht gefunden
    ;@error 5Proxy nicht gefunden
    ;@error 6Netzkontendaten: Stadt nicht gefunden
    ;@error 7Netzkontendaten: Region nicht gefunden
    ;@error 8Netzkontendaten: Land nicht gefunden
    ;
    ; Author(s): Jautois ([email='autoit.report@web.de'][/email])
    ;===============================================================================
    Func _GetINetInfo()
    Local $url = "http://www.meineip.de/"

    [/autoit] [autoit][/autoit] [autoit]

    $source = _INetGetSource($url)
    If @error Then SetError(0)

    [/autoit] [autoit][/autoit] [autoit]

    $Names = StringSplit("Das ist Deine IP-Adresse,Rechnername ist,mit diesem Browser,Dein DSL Anschluss kommt von,Proxy eingeschaltet?", ",")
    $Names2 = StringSplit("Stadt: ,Region: ,Land: ", ",")
    For $i = 1 To UBound($Names) - 1
    $btwn = _StringBetween($source, $Names[$i] & "</th>" & @CRLF & " <td>", "<")
    $data[$i - 1] = $btwn[0];Öffentliche IP
    If @error Then SetError($i)
    Next
    For $i = 1 To UBound($Names2) - 1
    $btwn = _StringBetween($source, $Names2[$i], "<")
    $data[UBound($Names) + $i - 2] = $btwn[0];Stadt
    If @error Then SetError(UBound($Names) + $i - 1)
    Next

    [/autoit] [autoit][/autoit] [autoit]

    Return $data
    EndFunc ;==>_GetINetInfo

    [/autoit]
  • ... dir ist hoffentlich klar, dass das nur eine UDF ist ;). Also kein Programm..

    Für zum Testen:

    [autoit]


    #include <_GetINetInfo.au3>

    [/autoit][autoit][/autoit][autoit]

    _GetINetInfo()

    [/autoit][autoit][/autoit][autoit]

    MsgBox(1,"",$data[1])

    [/autoit][autoit][/autoit][autoit][/autoit]
  • Vllt noch ein kleiner Verbesserungsvorschlag, anstatt, die Returnvariablen global zu erstellen, das ganze nur innerhalb der Funktion, damit es nicht zur Verwirrung kommen könnte.

    Spoiler anzeigen
    [autoit]

    #include <INet.au3>
    #include <String.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ; Function Name:_GetINetInfo()
    ; Description:: Internetdaten auslesen
    ; Parameter(s): keine
    ; Requirement(s): #include <INet.au3>
    ;#include <Array.au3>
    ;#include <String.au3>
    ; Return Value(s): Erfolg:Array mit den Internetdaten
    ;
    ;
    ;Fehler: @error 0Source konnte nicht eingelesen werden / keine Internetverbindung
    ;
    ; @error 1Öffentliche Ip-Adresse nicht gefunden
    ;@error 2Netz-Rechnername nicht gefunden
    ;@error 3Browsername nicht gefunden
    ;@error 4DSL-Provider Anbieter nicht gefunden
    ;@error 5Proxy nicht gefunden
    ;@error 6Netzkontendaten: Stadt nicht gefunden
    ;@error 7Netzkontendaten: Region nicht gefunden
    ;@error 8Netzkontendaten: Land nicht gefunden
    ;
    ; Author(s): Jautois ([email='autoit.report@web.de'][/email])
    ;===============================================================================
    Func _GetINetInfo()
    Local $data[8]
    Local $url = "http://www.meineip.de/"

    [/autoit] [autoit][/autoit] [autoit]

    $source = _INetGetSource($url)
    If @error Then SetError(0)

    [/autoit] [autoit][/autoit] [autoit]

    $Names = StringSplit("Das ist Deine IP-Adresse,Rechnername ist,mit diesem Browser,Dein DSL Anschluss kommt von,Proxy eingeschaltet?", ",")
    $Names2 = StringSplit("Stadt: ,Region: ,Land: ", ",")
    For $i = 1 To UBound($Names) - 1
    $btwn = _StringBetween($source, $Names[$i] & "</th>" & @CRLF & " <td>", "<")
    $data[$i - 1] = $btwn[0];Öffentliche IP
    If @error Then SetError($i)
    Next
    For $i = 1 To UBound($Names2) - 1
    $btwn = _StringBetween($source, $Names2[$i], "<")
    $data[UBound($Names) + $i - 2] = $btwn[0];Stadt
    If @error Then SetError(UBound($Names) + $i - 1)
    Next

    [/autoit] [autoit][/autoit] [autoit]

    Return $data
    EndFunc ;==>_GetINetInfo

    [/autoit]

    Testscript:

    Spoiler anzeigen
    [autoit]


    #include <array.au3>
    Dim $InetInfos[8]
    $InetInfos = _GetInetInfo()
    _ArrayDisplay($InetInfos,"Internet - Informationen")

    [/autoit] [autoit][/autoit] [autoit][/autoit]

    Und vllt kannst du anstatt _Stringbetween, StringRegExp nutzen, könnte ein bischen Speed rausholen, bin mir aber nicht sicher, denn die _Stringbetween - UPF sieht mir doch etwas sehr aufwändig aus :D

    greetz DJ

  • Ok, ich hab mal die Variable $data Local gemacht und oben geupdatet..

    Die _GetINetInfo.au3 ist auch neu hochgeladen!


    Zu dem _Stringbetween und StringRegExp, da meinte anno das würde nur Millisekunden ausmachen und ich sollte es lieber so lassen. Also ich habs zwar noch nicht getestet bzw. versucht, aber das wird sich vllt auch nicht lohnen...naja mal sehn ;)

    Mfg
    Jautois

  • Ich hab nicht gesagt du sollst es lieber lassen, ich hab gesagt, dass du das wahrscheinlich nicht hinbekommst ohne es lange zu üben.

    Aber bei der Zeit, _InetgetSource benötigt ist das wirklich nicht ganz so wichtig :P

  • _InetGetsource lädt keine FlashDateien und auch keine Bilder. Da wird nur der HTML-Code geholt. (eben die Datei, auf die der Link zeigt ;) )