Congstar einloggen

  • Hi,

    ich würde mich gerne mit WinHttp bei Congstar einloggen.

    Nur wie weiß ich wie die Felder (Benutzername und Passwort) heißen?

  • Für Firefox gabs mal das Addon "Live HTTP Headers". Damit kann man sich die Serveranfragen und Antworten im Detail ansehen, also auch die Feld-/Parameternamen, welche bei einem GET/POST versendet werden.

    Da Firefox das Addonsystem vor einiger Zeit verändert hat gibt es dieses Addon glaube ich nicht mehr, scheinbar gibt es aber mittlerweile eine ähnlich benannte Alternative.

    https://addons.mozilla.org/de/firefox/addon/http-header-live/

    Ob das Addon das selbe leistet kann ich aber nicht sagen. Schaut jedenfalls grundsätzlich nach dem richtigen Analysetool aus. Alternativ gibt es sicher auch für Chrome ein vergleichbares Addon.

  • http-header-live schreibt folgendes mit

    Bin ich mit _WinHttpSimpleSSLRequest da richtig oder muss ich _WinHttpSimpleFormFill verwenden?

  • Formfill ist da glaub ich eher ungeeignet, da das Formular nicht wirklich Standard zu sein scheint. Deinem Mitschnitt zu Folge erwartet der Webserver einen JSON formatierten String:

    Code
     {"username":"xxx","password":"xxx","defaultRedirectUrl":"/meincongstar","targetPageUrlOrId":"225424"}

    Dabei muss man evtl. noch vorsichtig sein wenn es zu Syntax Kollisionen mit Sonderzeichen im Passwort / Username kommt. Könnte sein dass normalerweise das JS auf der Seite entsprechendes Escaping oder Codieren leistet, damit dies nicht zu Fehlern führt. Sollte dem so sein musst du das natürlich entsprechend nachbauen. Da du dein Passwort zensiert hast kannst du das aber nur selbst beurteilen. Bedenke halt, dass spätere Passwortanpassungen ggf. dann doch noch entsprechendes Codieren erfordern könnten, auch wenn es jetzt grad mangels problematischer Sonderzeichen nicht danach ausschaut.

  • Woher weißt du dass ich json verwenden muss?

    Weil in Zeile 9 was von "json" steht?

    Welche json Funktion muss ich da nehmen?

    PS: Sorry für die vielen (wahrscheinlich für dich) einfachen Fragen8|

  • Ja Zeile 9 sagt dir was dein Browser da verschickt hat und in Zeile 13 sieht man auf den ersten Blick, dass es sich um JSON formatierten Text handelt, zumindestens wenn man schonmal JSON gesehen hat.

    Normalerweise ist der serverseitige parser auch gescheit genug um selbst zu erkennen was man ihm da schickt oder er geht einfach davon aus, dass er das richtige bekommt. D. h. du musst normalerweise winhttp nichtmal sagen was er als verwendetes Format (Content-Type) im Header angeben soll. Kann man aber natürlich trotzdem machen, siehe Doku der winhttp Funktionen.

    JSON Funktionen brauchst du garnicht. Die braucht man bestenfalls wenn man vom Server JSON zurückbekommt und sich keinen eigenen String Parser basteln will um an den relevanten Inhalt zu kommen. Ein einfaches stringbetween oder eben regexp langt dafür normalerweise aber völlig. Für dich irrelevant, da du keine API ansprichst und sowieso ne html seite zurückbekommst die du dann irgendwie mit den Stringfunktionen auswerten musst.

    Hier mal konkret wie dein POST ausschauen sollte:

    Ungetestet. Und es könnte sein, dass du nach dem erfolgreichen Login noch ein GET für die gewünschte Seite hinterherschicken musst. Keine Ahnung ob dich der Login selbst schon zur Hauptseite weiterleitet und dir die gewünschte HTML Seite zurückgibt. Normalerweise bekommst du bei erfolgreichem Login jedenfalls die Aufforderung "Set-Cookie" vom Server wie oben im Mitschnitt zu sehen.

    Und wie gesagt... es wäre möglich dass Username und Passwort codiert werden müssen um Syntaxproblemen vorzubeugen. Eine geschweifte Klammer und Anführungszeichen reichen schon um die JSON Formatierung zu zerstören.

  • Ahja ich würd oben im Mitschnitt den "Set-Cookie" Teil grundsätzlich ebenfalls zensieren... jenachdem wie lange die Login / cookie session bei congstar hält und ob diese an deine IP gebunden ist kann man damit evtl. auf deinen Account zugreifen. Mittlerweile ist die Session aber vermutlich eh abgelaufen. Im Zweifel ändere dein Passwort und melde dich ab / an.

  • Hab mal selber ein wenig gespielt. Zwar nicht erfolgreich, aber immerhin bekomm ich eine Antwort vom Server. Ein Fehler bei dir ist, dass du beim connect das Protokoll mit angibst. Hier wird nur der Servername erwartet, also lass das "https://" weg. Außerdem sollte der Request und dein Konsolenoutput etwas angepasst werden damit du mehr Infos erhältst und besser debuggen kannst.

    Hier mal eine angepasste Fassung:

    Warum im Response Array Feld weder beim einen noch beim anderen Request etwas zu sehen ist ist mir nicht ganz klar...

  • Eventuell mal mit dem Api-Pfad versuchen?


    Code
    Global $sReturned = _WinHttpSimpleSSLRequest($hConnect, "POST", "/api/auth/login", Default, '{"username":"' & $sUser & '","password":"' & $sPW & '","defaultRedirectUrl":"/meincongstar","targetPageUrlOrId":"225424"}')
  • Das schaut jedenfalls besser aus, dann bekommt man auch einen oauth token im header zurück, so wie oben in seinem Mitschnitt.

    Über die API URLs lassen sich vermutlich dann auch alle anderen Infos auslesen, die in der Webansicht so geladen werden.

    Ein Blick in den Seitenquellcode verrät vermutlich welche API Aufrufe durchgeführt werden um die Daten dynamisch nachzuladen.

  • Komme nicht wirklich weiter.

    Egal welches Skript ich verwende, im Quelltext steht kein Name (Benutzername und Passwort stimmen)

    Wie erkenne ich "API URLs"?

  • Du bekommst Seitenquelltext zurück? Ich bekomme bei meinem Script nur den Header (bei der API URL mit oAuth Token, bei der normalen URL ohne) und leeren Inhalt für $aReturned[1] zurück, trotz gültiger Zugangsdaten (bin auch bei Congstar).

    Auf manchen Webseiten sieht man im Quelltext wie der HTML Quellcode dynamisch aus JS Aufrufen bestimmter API Seiten generiert wird. Seh ich hier auf Anhieb aber leider auch nichts von.

    Was ist eigentlich das Ziel wenn man mal fragen darf? Nur den aktuellen Guthabenstand auslesen oder hast du mehr im Sinn? Mich nervt, dass man als Prepaid Kunde keine übersichtliche monatliche Abrechnung bekommt und die Detaildaten wo man sich das dann selber nachrechnen könnte nach 90 Tagen gelöscht werden. Letztlich kann man nur blind drauf vertrauen dass da alles korrekt abgerechnet wird oder darf das ständig manuell kontrollieren. :(

    Mir fehlt da einfach der Überblick was mich der Spaß neben dem Grundpreis so im Monat kostet...

  • Congstar... dazu fällt mir nur eines ein... in deren AGBs steht, dass, wenn diverse Dienste momentan nicht verfügbar sind, diese für diesen Zeitraum von einem der Partner-Unternehmen zur Verfügung gestellt werden. Eines der Partner-Unternehmen gehört der Frau des Betreibers von Congstar... und in dem Fall, wenn du ihre Dienste nutzen MUSST, kostet es dich dann deutlich mehr, was aber natürlich an keiner Stelle erwähnt wird!

    Deshalb: Congstar = BaFuiIgit!

  • Also wenn ich nicht komplett falsch liege bekomme ich Seitenquelltext zurück (1400 Zeilen).

    Ich will eigentlich nur meine Rechnungen (Postpaid) automatisch downloaden.