WINHTTP - Telefonanlage weist ab (Zugriff verweigert), IE.au3 geht aber

  • Indem du uns den relevanten Ausschnitt aus deinem Code zeigst. Das ist nie im Leben der selbe wie der den ich geschrieben habe. Schließlich wird als User-Agent der Standardmäßige AutoIt String angegeben. Du arbeitest also allem Anschein nach mit einem Code von dem wir keine Ahnung haben. Wie sollen wir dir jetzt helfen? Ich kann leider nicht hellsehen.

  • Sorry, habe eben schon mehrere Varianten getestet.

    Das hier ist ja Deine (+ unten die Messagebox bzw. "configs_state"):

    [autoit]

    #include <winhttp.au3>

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

    $hOpen = _WinHttpOpen("Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2")
    $hConnect = _WinHttpConnect($hOpen, "192.168.4.8")

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

    $sResponse = _WinHttpSimpleRequest($hConnect, "POST", "login_json", "http://192.168.4.8/", "LOGIN_NOW=true&LOGIN_NAME=XX&LOGIN_PASS=XXX")

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

    $aCookies = StringRegExp($sResponse, "Set-Cookie: (.+)", 3)
    $sCookieString = ""
    For $i = 0 To UBound($aCookies) -1
    $sCookieString &= $aCookies[$i]
    If $i < UBound($aCookies) -1 Then $sCookieString &= "; "
    Next

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

    $sResponse = _WinHttpSimpleRequest($hConnect, "GET", "configs_state", "http://192.168.4.8/", Default, "Cookie: " & $sCookieString)

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

    msgbox(0,0,$sResponse)

    [/autoit]

    Er gibt mir nach wie vor "Forbidden" aus - und in Wireshark sehe ich, dass keine Cookies für "configs_state" übergeben werden (obwohl er dort auf diese wartet, zur Authentifizierung).

  • Versuchs mal damit:

    Spoiler anzeigen
    [autoit]

    #include <WinHTTP.au3>

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

    $hOpen = _WinHttpOpen("Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2")
    $hConnect = _WinHttpConnect($hOpen, "192.168.4.8")
    If @error Then Exit MsgBox(16, "Error", "Unable to establish connection")

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

    $hRequest = _WinHttpOpenRequest($hConnect, "POST", "login_json", Default, "http://192.168.4.8/")
    _WinHttpSendRequest($hRequest, Default, "LOGIN_NOW=true&LOGIN_NAME=XX&LOGIN_PASS=XXX")

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

    _WinHttpReceiveResponse($hRequest)
    If Not _WinHttpQueryDataAvailable($hRequest) Then Exit MsgBox(16, "Error", "No data in request")

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

    $sHeader = _WinHttpQueryHeaders($hRequest)
    ConsoleWrite($sHeader & @CRLF & @CRLF)

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

    $sContent = ""
    While Sleep(20)
    $sContent &= _WinHttpReadData($hRequest)
    If @error Then ExitLoop
    WEnd
    ConsoleWrite($sContent & @CRLF & @CRLF)
    _WinHttpCloseHandle($hRequest)

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

    $aCookies = StringRegExp($sHeader, "Set-Cookie: (.+)", 3)
    If @error Then Exit MsgBox(16, "Error", "No cookies found.")
    $sCookieString = ""
    For $i = 0 To UBound($aCookies) -1
    $sCookieString &= $aCookies[$i]
    If $i < UBound($aCookies) -1 Then $sCookieString &= "; "
    Next
    ConsoleWrite("Cookie: " & $sCookieString & @CRLF & @CRLF)

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

    $hRequest = _WinHttpOpenRequest($hConnect, "GET", "configs_state", Default, "http://192.168.4.8/")
    _WinHttpSendRequest($hRequest, "Cookie: " & $sCookieString)

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

    $sHeader = _WinHttpQueryHeaders($hRequest)
    ConsoleWrite($sHeader & @CRLF & @CRLF)

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

    $sContent = ""
    While Sleep(20)
    $sContent &= _WinHttpReadData($hRequest)
    If @error Then ExitLoop
    WEnd
    ConsoleWrite($sContent & @CRLF & @CRLF)
    _WinHTTPCloseHandle($hRequest)

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

    _WinHTTPCloseHandle($hConnect)
    _WinHTTPCloseHandle($hOpen)

    [/autoit]


    Falls es nicht funktioniert, dann poste bitte die Konsolenausgabe und eventuelle Fehlermeldungen.

  • Herzlichen Dank (!).

    Das ist die Ausgabe. Ich habe "configs_state" mal' gegen "appclose" getauscht, denn "appclose" schließt die Sitzung wieder - aber eben nur, wenn er sie zuordnen kann. Das Ergebnis: melde ich mich auf der Weboberfläche an, teilt er mir nach Skriptausführung mit, dass der User noch angemeldet ist - sprich: Abmeldevorgang klappt nicht, d.h. Cookie wird scheinbar nicht übergeben ?!

  • Sieht für mich nach einem Problem mit meinem regulären Ausdruck aus... :whistling:
    Versuchs so nochmal:

    Spoiler anzeigen
    [autoit]

    #include <WinHTTP.au3>

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

    $hOpen = _WinHttpOpen("Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2")
    $hConnect = _WinHttpConnect($hOpen, "192.168.4.8")
    If @error Then Exit MsgBox(16, "Error", "Unable to establish connection")

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

    $hRequest = _WinHttpOpenRequest($hConnect, "POST", "login_json", Default, "http://192.168.4.8/")
    _WinHttpSendRequest($hRequest, Default, "LOGIN_NOW=true&LOGIN_NAME=XX&LOGIN_PASS=XXX")

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

    _WinHttpReceiveResponse($hRequest)
    If Not _WinHttpQueryDataAvailable($hRequest) Then Exit MsgBox(16, "Error", "No data in request")

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

    $sHeader = _WinHttpQueryHeaders($hRequest)
    ConsoleWrite($sHeader & @CRLF & @CRLF)

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

    $sContent = ""
    While Sleep(20)
    $sContent &= _WinHttpReadData($hRequest)
    If @error Then ExitLoop
    WEnd
    ConsoleWrite($sContent & @CRLF & @CRLF)
    _WinHttpCloseHandle($hRequest)

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

    $aCookies = StringRegExp($sHeader, "Set-Cookie: (\V+)\s*", 3)
    If @error Then Exit MsgBox(16, "Error", "No cookies found.")
    $sCookieString = ""
    For $i = 0 To UBound($aCookies) -1
    $sCookieString &= $aCookies[$i]
    If $i < UBound($aCookies) -1 Then $sCookieString &= "; "
    Next
    ConsoleWrite("Cookie: " & $sCookieString & @CRLF & @CRLF)

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

    $hRequest = _WinHttpOpenRequest($hConnect, "GET", "configs_state", Default, "http://192.168.4.8/")
    _WinHttpSendRequest($hRequest, "Cookie: " & $sCookieString)

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

    $sHeader = _WinHttpQueryHeaders($hRequest)
    ConsoleWrite($sHeader & @CRLF & @CRLF)

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

    $sContent = ""
    While Sleep(20)
    $sContent &= _WinHttpReadData($hRequest)
    If @error Then ExitLoop
    WEnd
    ConsoleWrite($sContent & @CRLF & @CRLF)
    _WinHTTPCloseHandle($hRequest)

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

    _WinHTTPCloseHandle($hConnect)
    _WinHTTPCloseHandle($hOpen)

    [/autoit]


    ("Set-Cookie: (.+)" ersetzt durch "Set-Cookie: (\V+)\s*", da der Zeilenumbruch nicht vollständig entfernt wird)