HTML nach einem Login auslesen und parsen
-
Gibt es ne Möglichkeit, das man per C++ eine Internetseite nach einem LoginFeld auslesen kann? habe da so ein kleines Projekt, das ich in Python schon fertig habe. Möchte es aber komplett in C++ umschreiben. Die Guis sind mit wxWidgets schon fertig. Meine Frage ist also: Gibt es eine lib um HTML zu lesen, nach einem Login und auch zu parsen?
-
wxWidgets hat afaik einen HTML Parser dabei.
Ansonsten geht das auch ganz gut mit RegEx im Fulltext ohne Parsing.
-
Ja, habe ich auch schon gesehen in der Doku von wxWidgets. Da ist ne HTML Klasse dabei. Die Sache ist die, bekomme ich auch eine HTML Seite nach einem Login ausgelesen, wie zum Beispiel, dieses Forum. Unter Python hatte ich das Modul Mechanize, dafür und unter Java hatte ich es mit dem apache.client versucht. Konnte mich unter Java auch einloggen ( bekam nen Cookie ), fand aber keine Methode, um dann die Seite auszulesen
RegEx? Meinste wirklich? Gibts nichts anderes? Hatte mich mal mit nem LinuxTool auseinander gesetzt, wo Du auch Texte mit durchsuchen kannst und Ausdrücke mit übergeben kannst. War echt die HölleIch würde ganz gerne wxWidgets weiter benutzen. Daher die Frage, kann ich mich mit der HTML Klasse auf WebSeiten einloggen?
-
Hm, schau mal in die wxCode Seite, da gabs was für HTTP.
Das HTML musst du dann evtl. aber auch noch parsen.
Eingeloggtsein hat ja eher was mit dem Protokoll (HTTP) zu tun, als mit HTML.
-
Komme gerade gar nicht auf die wxWidgets drauf
Seite down? OK, nen HTML Parser, meine ich, habe ich auch dort gesehen. Aber wirklich viele Methoden ( so wie ich es gelesen habe ), waren nicht dabei, wie zum Beispiel sich auf HTML Seiten einzuloggen. Bin gerade im Zwiespalt, ob ich nicht doch Java nehmen sollte. Bin voll verwirrt
Die Sache mit dem einloggen. Bis jetzt habe ich ja immer ne lib oder so gehabt, um das zu bewerkstelligen. Würde mich echt freuen, wenn es so was auch unter C++ geben würde. Wenn ich es nen bischen besser drauf hätte, würde ich eine solche lib auch schreiben, aber leider sitze ich noch in den Anfängen.
Beispiele für Java habe ich gefunden, aber kann mich nicht sooooooooo wirklich damit anfreunden. Für jede Kleinigkeit, nen eigenes Objekt, in den Beispielen. Finde das eher nen bischen unübersichtlich. Da sieht der C++ Code einfach besser aus.
-
Evtl. wirst du bei QT fündig, die haben sowas wie eine WebEngine.
-
oh jeeeee. Die lib ist doch viel zu fett. Wollte wegen dem nativen Aussehen, wxWidgets nehmen. Es muß doch ne einfachere Lösung geben. Kann mir nicht vorstellen, das so was noch nie programmiert worden ist
Ich google mich schon dumm und dämlich. Unter Java funtzt das auch nicht so, wie ich mir das vorstelle. Ewig Fehlermeldungen, wegen JavaScript auf den Seiten. Und und und...
Ich glaube ich gebe mich geschlagen und gebs auf
-
Ich glaube, ich habe was. LibCurl sieht doch gut aus. Kenne sie noch aus Linux Zeiten.
-
Hit-Man schrieb:
Ich glaube, ich habe was. LibCurl sieht doch gut aus. Kenne sie noch aus Linux Zeiten.
Ja Curl ist auch eine Alternative.
-
Ich teste gerade mit dem Tool, curl rum um zu sehen, welche Optionen ich da alles habe. Die Sache ist nun die, kann mich einfach nicht einloggen auf der Seite, die ich brauche. Ich schicke hier einfach mal den Code, der Seite, die ich meine:
&
<!-- loginformular --><table border="0" cellspacing="2">
<form method="POST" action="/olg/login/index.olg" name="loginfrm" OnSubmit="document.forms['loginfrm'].elements['loginbtn'].disabled=true"><tr>
<td>
Nickname:
</td>
<td>
<input type="text" name="nickname" size=20 value=""tabindex="1">
</td>
<td width="90" rowspan="2" align="center"><input type="hidden" name="partner" value="">
<input type="hidden" name="login" value="login"><input type="submit" name="loginbtn" value="login" class="submit" tabindex="4"></td>
</tr>
<tr>
<td>
Passwort:
</td>
<td>
<input type="password" name="password" size=20 value="" tabindex="2">
</td></tr>
<tr>
<td>
</td>
<td>
<input type="checkbox" value="1" name="quicklogin" tabindex="3"> Quick-Login aktivieren
</td>
</tr><tr>
<td> </td>
<td> <div align="center"><a href="/olg/lostpw/"><b>Passwort
vergessen?</b></a> </div></td>
<td> </td></tr>
</form></table>
<!-- /loginformular--> </td>
;
So weit so gut. Hier sehe ich ja eigentlich alle Felder, die ich zum einloggen brauche. Ich versuche mich also so einzuloggen:
curl -d "nickname=mein_username&password=mein_password&login=login" http://www.onlineglueck.de/olg/index.php
Allerdings komme ich immer und immer wieder auf die LoginSeite. Weiß da jemand nen Rat?
-
Und du schickst das als POST ab? Per GET funktionieren die meisten Formulare nämlich nicht.
Ausserdem kann es noch ein hiddenfield oder so geben, was du mitsenden musst.
-
Ich denke mal, das ich es per POST abschicke. Zumindest stand es so in der Anleitung von curl. In dem HTML Code siehste ja alles, was ich an Daten brauche. Ja, da ist auch ein Hidden Feld. Habs mal mit in die Befehlszeile geschrieben, aber leider immer noch das gleiche
-
Hast du mal an einer anderen Seite es versucht?
Evtl. läuft auch nach dem Login was schief, das du einen Cookie oder so entgegen nehmen musst zum Beispiel.
-
ich hatte mir für den firefox nen zusatztool installiert um sehen zu können, was genau vom server zum client verschickt wird und umgekehrt. dabei habe ich echt nen hidden feld vergessen.
nun bekomme ich auch nen richtiges coockie nach dem einloggen zurück. ich habe dann versucht mit der b option versucht, auf eine andere seite zu springen. komme aber trotzdem immer wieder auf die login seitealso login sollte, sollte zu mindest funktionieren. auf einer anderen seite, wie zum beispiel, diesem forum, habe ich es noch nicht aus probiert. wäre aber mal nen test wert.
hast du es denn schon mal auf meine art versucht, so daten auszulesen, also sich irgendwo einzuloggen?
-
ist doch nicht möglich !!!! Hier im Forum funktioniert der curl Befehl. Komme nach dem Login auf die Main Seite und sehe dann auch, das ich oben rechts, mit Hit-Man angemaldet bin. Hier mal der Befehl dazu:
curl -L -b coockie.txt -d "username=Hit-Man&password=mein_password&redirect=&login=Login" http://www.c-plusplus.net/forum/login-var-html
warum geht das hier, aber im www.onlineglueck.de nicht
Allerdings, bekomme ich hier kein cookie, so weit ich das überblicken kann.
Oder doch?
-
Hast du schon versucht mit Wireshark alle Pakete aufzuzeichnen?
Das würde ich mal versuchen. Und die Pakete die dein Programm verschickt mit denen vergleichen, die gesendet werden, wenn du ganz normal über den Browser reingehst.Ansonsten besteht mit wxWidgets afaik die Möglichkeit einfache Get und Post Anfragen zu senden.
-
Für den Firefox habe ich Live HTTP Headers. Damit kann ich ja schon alles sehen, und es hat ja auch hier geklappt, mich einzuloggen. Das Plugin zeigt mir an, wo was, whin verschickt wird und auch ob ich nen cookie bekomme und so weiter. Genau so, habe ich es auch auf der Chat Seite probiert, aber es will einfach nicht gelingen. Das komische ist, das ich hier im Forum, nicht mal nen cookie bekomme und es trotzdem funktioniert.
-
ich schicke mal mit, was der Live HTTP Header mir anzeigt:
http://www.onlineglueck.de/olg/login/index.olg POST /olg/login/index.olg HTTP/1.1 Host: www.onlineglueck.de User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9) Gecko/2008052906 Firefox/3.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Referer: http://www.onlineglueck.de/olg/ Cookie: sessid=d94fb1154a06ef479efe87bbf800c57810b61ff5 Content-Type: application/x-www-form-urlencoded Content-Length: 59 nickname=Nekronomikon&partner=&login=login&password=mein_passwort HTTP/1.x 302 Found Date: Mon, 21 Jul 2008 08:04:31 GMT Server: Apache/1.3.33 (Debian GNU/Linux) P3P: CP="ALL NID ADMo OUR NOR COM" Set-Cookie: sessid=d94fb1154a06ef479efe87bbf800c57810b61ff5; path=/; domain=.onlineglueck.de Set-Cookie: auser=bWAuS3sufSJbL0B9NkFEblbEeSluaSQgOFHkVSVALF8oSn4%2BS1R1KkUrdTN0KFFMVQ%3D%3D; expires=Thu, 16-Jul-2009 08:04:31 GMT; path=/; domain=.onlineglueck.de Set-Cookie: skin=4; expires=Thu, 16-Jul-2009 08:04:31 GMT; path=/; domain=.onlineglueck.de Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Location: /olg/index2.olg?update=ok Content-Encoding: gzip Vary: Accept-Encoding Keep-Alive: timeout=2, max=10000 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: text/html; charset=iso-8859-1 ---------------------------------------------------------- http://www.onlineglueck.de/olg/index2.olg?update=ok GET /olg/index2.olg?update=ok HTTP/1.1 Host: www.onlineglueck.de User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9) Gecko/2008052906 Firefox/3.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Referer: http://www.onlineglueck.de/olg/ Cookie: sessid=d94fb1154a06ef479efe87bbf800c57810b61ff5; auser=bWAuS3sufSJbL0B9NkFEblbEeSluaSQgOFHkVSVALF8oSn4%2BS1R1KkUrdTN0KFFMVQ%3D%3D; skin=4 HTTP/1.x 200 OK Date: Mon, 21 Jul 2008 08:04:31 GMT Server: Apache/1.3.33 (Debian GNU/Linux) P3P: CP="ALL NID ADMo OUR NOR COM" Set-Cookie: sessid=d94fb1154a06ef479efe87bbf800c57810b61ff5; path=/; domain=.onlineglueck.de Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Content-Encoding: gzip Vary: Accept-Encoding Keep-Alive: timeout=2, max=9999 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: text/html; charset=iso-8859-1 ---------------------------------------------------------- http://www.onlineglueck.de/olg/reload.olg GET /olg/reload.olg HTTP/1.1 Host: www.onlineglueck.de User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9) Gecko/2008052906 Firefox/3.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Referer: http://www.onlineglueck.de/olg/index2.olg?update=ok Cookie: sessid=d94fb1154a06ef479efe87bbf800c57810b61ff5; auser=bWAuS3sufSJbL0B9NkFEblbEeSluaSQgOFHkVSVALF8oSn4%2BS1R1KkUrdTN0KFFMVQ%3D%3D; skin=4 HTTP/1.x 200 OK Date: Mon, 21 Jul 2008 08:04:31 GMT Server: Apache/1.3.33 (Debian GNU/Linux) P3P: CP="ALL NID ADMo OUR NOR COM" Set-Cookie: sessid=d94fb1154a06ef479efe87bbf800c57810b61ff5; path=/; domain=.onlineglueck.de Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache refresh: 300; url=/olg/reload.olg Content-Encoding: gzip Vary: Accept-Encoding Keep-Alive: timeout=2, max=10000 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: text/html; charset=iso-8859-1 ---------------------------------------------------------- http://www.onlineglueck.de/olg/index.olg?update=ok GET /olg/index.olg?update=ok HTTP/1.1 Host: www.onlineglueck.de User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9) Gecko/2008052906 Firefox/3.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Referer: http://www.onlineglueck.de/olg/index2.olg?update=ok Cookie: sessid=d94fb1154a06ef479efe87bbf800c57810b61ff5; auser=bWAuS3sufSJbL0B9NkFEblbEeSluaSQgOFHkVSVALF8oSn4%2BS1R1KkUrdTN0KFFMVQ%3D%3D; skin=4 HTTP/1.x 200 OK Date: Mon, 21 Jul 2008 08:04:31 GMT Server: Apache/1.3.33 (Debian GNU/Linux) P3P: CP="ALL NID ADMo OUR NOR COM" Set-Cookie: sessid=d94fb1154a06ef479efe87bbf800c57810b61ff5; path=/; domain=.onlineglueck.de Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Content-Encoding: gzip Vary: Accept-Encoding Keep-Alive: timeout=2, max=9998 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: text/html; charset=iso-8859-1 ----------------------------------------------------------
das sollte das wichtigste sein
-
Könnte vielleicht am JavaScript liegen. Wird von curl nicht unterstützt.