AW: den Solver schon probiert?
16.01.2023 13:29:58
Zwenn
Hallo Yal, hallo Marc,
der Solver klingt für mich auch nach einem guten Ansatz. Ich weiß nur nicht, wie aufwändig dieser Weg ist, wenn viele Daten verarbeitet werden müssen. Wieviele Anfragen die Webseite schluckt, bevor sie bei einer Automatisierung zumacht, falls sie zumacht, ist allerdings auch unbekannt.
Das Problem, überhaupt eine Automatisierung hinzubekommen besteht allerdings auch bei mir darin, dass ich ebenfalls nur bis zum Serverstatus 400 (Bad Request) komme. Es fehlt etwas beim Request an den WebServer. Falls es das Cookie ist, an das komme ich nicht ran, weil es nicht im Header übertragen wird. Es gibt im Header zwei Alphanumerische Strings, die bei jedem Abruf anders aufgebaut sind. Aber im Zusammenhang mit festen Werten, die interessant aussehen, habe ich keine Muse auszuprobieren, was bei einem Folge-Request für die gesuchte Antwort wieder mit an den Server übertragen werden muss. Es kann auch sein, dass die Informationen gar nicht ausreichen. In die Richtung ging ja schon Deine erste Antwort Yal.
Mit POST bekomme ich die 400 geliefert, aber durch den Aufbau des Payload kann auch GET verwendet werden, wie es aussieht. Denn es ist eine Parameterliste, wie sie aus jeder URL mit Parametern bekannt ist.
action=sumResolver_ajax_request&combination=100%0A2500%0A-300%0A-200%0A6000%0A&theTarget=2500&threshold=0
Hängt man diese Zeichenfolge an die "POST URL", und zwischen beide noch das einleitende Fragezeichen, kann das Ganze im Makro mit GET, wie auch im Browser aufgerufen werden. Es gibt dann zwar keinen Bad Request, aber immer eine leere Ergebnismenge. Das hilft also auch nicht wirklich weiter an dieser Stelle:
https://onlinereconciliation.com/wp-admin/admin-ajax.php?action=sumResolver_ajax_request&combination=100%0A2500%0A-300%0A-200%0A6000%0A&theTarget=2500&threshold=0
So kann der RequestHeader abgerufen werden, falls Du experimentieren willst Marc. In CF-Ray: und Report-To: findest Du die beiden dynamischen Strings. So ein Wert kann in einer Folge-Request dann mit setRequestHeader wieder mitgegeben werden. Mit Keep-Alive wird das im Makro für Connection gemacht
Sub RequestHeader()
With CreateObject("WinHttp.WinHttpRequest.5.1")
.Open "GET", "https://onlinereconciliation.com/wp-admin/admin-ajax.php?action=sumResolver_ajax_request&combination=100%0A2500%0A-300%0A-200%0A6000%0A&theTarget=2500&threshold=0", True
.setRequestHeader "Connection", "Keep-Alive"
.send
.WaitForResponse
Debug.Print .getAllResponseHeaders()
End With
End Sub
Hier ist noch mein Testmakro, für den (fehlschlagenden) Abruf des Ergebnis-JSON:
Sub HttpRequest()
Dim url As String
Dim payload As String
' url = "https://onlinereconciliation.com/wp-admin/admin-ajax.php"
' payload = "action=sumResolver_ajax_request&combination=50+50+100+30+10&theTarget=200&threshold=0"
url = "https://onlinereconciliation.com/wp-admin/admin-ajax.php?action=sumResolver_ajax_request&combination=100%0A2500%0A-300%0A-200%0A6000%0A&theTarget=2500&threshold=0"
With CreateObject("MSXML2.ServerXMLHTTP.6.0")
.Open "GET", url, False
'.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0"
'.setRequestHeader "Content-Type", "text/json"
.send 'payload
If .Status = 200 Then
Debug.Print .ResponseText
Else
Debug.Print "Page not loaded. HTTP Status: " & .Status
End If
End With
End Sub
Viele Grüße,
Zwenn