Login auf Server über HTTPWebRequest

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von DrVisualBasic.

    Login auf Server über HTTPWebRequest


    Hallo Leute ;)


    Ich versuche mitlerweile seit Monaten den Quelltext einer Internetseite über VB2008 auszulesen, auf der man bereits eingeloggt ist.
    Bisher habe ich das Webbrowser Element verwendet und möchte dieses nun umgehen. Meine erste Idee war nun ein Web Request zu benutzen.
    Dies ist mein jetziger vba Code für das Webbrowser Steuerelement welches es zu umgehen gilt:





    WebBrowser1.Document.GetElementById("login_email").InnerText = Benutzermail.Text
    WebBrowser1.Document.GetElementById("login_password").InnerText = Benutzerpasswort.Text
    WebBrowser1.Document.GetElementById("login").InvokeMember("click")

    If WebBrowser1.ReadyState = WebBrowserReadyState.Complete Then
    Quelltext_txt.text = webbroser1.documenttext
    End If







    Dieser gibt einfach nur automatisch die Daten in die Textfelder ein und klickt auf den Einloggen Button.
    Nun würde ich gerne wissen wie ich das Steuerelement komplett weg lassen könnte und rein über z.B. HTTPwebRequest den Login vornehmen könnte und darauf dann den Quellcode auslesen.


    Entscheidend ist, dass ich nicht den Quellcode der Seite "X" auslesen möchte, sonder ich möchte den Quellcode der Seite "X" den man erhalten würde wenn man sich auf dieser Einloggt! Ich habe nun über die SuFu erfahren das sich dieser Vorgang "Post" nennt. Allerdings habe ich trotz Sachkenntnis in VB08 große Schwierigkeiten die gegebenen Codes auf meine Anwendung um zu schreiben. Die Codes sind zwar immer Richtig und weisen keine Source Code Fehler auf. Ich erziehle einfach nur keine Resultate :( Ich möchte dies auf die Seite schuelervz.net" anwenden. Wenn mir hierbei jemand helfen könnte wäre ich diesem zu tiefst verbunden.


    Liebe Grüße :thumbsup:
    Hi.

    Da die meisten Seiten keine Möglichkeit bieten, sich anders als über die üblichen "Benutzername und Passwort"-Textfelder einzuloggen, bist du auf das DOM angewiesen, mit dem du diese Felder befüllen kannst. Auch für die weitere Navigation auf den Folgeseiten reicht der Quelltext nicht aus. Du benötigst also für den Login ein WebBrowser-Control. Dieses kannst du auch zur Laufzeit erzeugen und verdeckt initialisieren, sodass es nicht auf der Form sichtbar ist. Ist der Benutzer eingeloggt, hast du den Vorteil, dass dir der Quelltext vom WebBrowser gleich frei Haus geliefert wird.

    Da der Login mit Textfeldern auf der Seite eine für das HttpWebRequest unüberwindbare (?) Hürde ist, wirst du um den WebBrowser nicht herumkommen.

    Wenn du enorm viel Aufwand treiben willst, um dein Ziel zu erreichen, kannst du versuchen den WebBrowser mit dem Reflector zu zerlegen und die erforderlichen Komponenten (manuell!) zu extrahieren, damit alles im Unsichtbaren abläuft - letztlich ist das aber auch nicht besser als ein unsichtbarer, vollständiger WebBrowser.
    Gruß
    hal2000
    Die Sperre basiert höchstwahrscheinlich auf der anfragenden IP-Adresse. Du kannst sie nicht einfach umgehen, indem du eine andere Methode zum Datenabruf benutzt.

    PS: Falls du einen Crawler schreiben willst, wirst du hier keine Hilfe bekommen. Lies mal diesen Artikel: spiegel.de/netzwelt/web/0,1518,656066,00.html
    Gruß
    hal2000
    Für dein Vorhaben reicht es evtl. aus, die Ereignisse der Website zu behandeln. Ich nehme an, dass die Internetseite neue Meldungen automatisch anzeigt, ohne dass die Seite komplett aktualisiert wird. Das WebBrowser-Control kennt die CreateSink-Methode, die einen Client für die Ereignisbehandlung registrieren kann. Trifft nun eine neue Nachricht ein, wird ein Eventhandler im Client ausgeführt, in dem du beliebigen Code ausführen kannst. Hier der Link zur entsprechenden Methode: msdn.microsoft.com/de-de/libra…ebbrowser.createsink.aspx

    Damit "umgehst" du übrigens auch gleichzeitig die Abfragesperre, da die Datenübertragung von der Website und nicht von dir initiiert wurde.
    Gruß
    hal2000
    Hey! Super Sache! Aber ganz habe ich das nicht verstanden :rolleyes: Angenommen das Webbrowser Control bleibt einfach offen. Und ich schau nur auf die neuen Meldungen/Narrichten etc. dann verändert sich nichts. Nur nach dem Reload! :?: