Entwickler-Ecke
Internet / Netzwerk - Schuelervz -> Einloggen via TIdhttp
Dark-§hadow - So 13.07.08 15:53
Titel: Schuelervz -> Einloggen via TIdhttp
Hallo zusammen!
Ich bin im Rahmen eines Projekts auf das Problem gestoßen, dass ich dafür den Login bei (in diesem Fall)
http://www.Schuelervz.net benötige.
Also hab ich mich über die möglichen Komponenten erkundigt, zum einen wäre das der TWebbrowser, zum anderen die von Indy zur Verfügung gestellte Komponente TIdhttp.
Nach längerer Recherche hab ich dann herausgefunden, dass ich zunächst die genaueren Bezeichnungen für das Namensfeld und für das PW-Feld benötige.
Quelltext Schuelervz.net
| Zitat: |
<label for="Login_email">E-Mail</label><br />
<input class="fieldText" type="text" name="email" id="Login_email" value="" /><br />
<label for="Login_password">Passwort</label><br />
<input class="fieldText" type="password" name="password" id="Login_password" value="" /><br />
<input class="fieldBtnSubmit" type="submit" name="login" value="Einloggen" />
<input type="hidden" name="jsEnabled" id="jsEnabled" value="false" />
|
So nun wird klar, dass die Variablen die Namen login und passwort tragen...
Gesehen getan...mit den "Recherchen" hab ich dann folgendes zusammen gebastelt..
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TForm1.Button1Click(Sender: TObject); var IdHTTP: TIdHTTP; PostDataStream : TStringStream; ParamData : TStringStream; begin IdHTTP:= TIdHTTP.Create(nil); PostDataStream := TStringStream.Create(''); ParamData := TStringStream.Create(''); ParamData.WriteString('email=lawel&password='); IdHTTP.Post('http://www.schuelervz.net/login.php' , ParamData, PostDataStream); postdatastream.Position:=0; memo1.Text:=postdatastream.DataString; end; |
Naja...jetzt kommt folgender Fehler.. "HTTP/1.1 302 found"
Google gibt dazu nicht viel raus, zum einen wurde einem geraten, handleredirects auf true zu setzen und redirectmaximum auf 15, aber das hat in meinem Fall auch nicht weitergeholfen, ansonsten ging halt nur hervor, dass es ein Fehler des HTTP Protokolls war..tutorials zum TIdhttp sprechen dann noch von verschiedenen http-versionen, die man dabei festlegen muss o.ä...? Aber dann wird auch gesagt, dass mit 1.0, der Standardausgabe, eig alles laufen müsste..oder fehlen mir Parameter..?
Ich bitte um Hilfe! :>
D-§
Moderiert von
Gausi: Topic aus Sonstiges (Delphi) verschoben am Mo 21.07.2008 um 13:01
Tilman - So 13.07.08 16:32
versuch mal login=Einloggen noch zu übergeben. Und kann es sein dass man vor dem ersten Parameter ein ?-Zeichen braucht? Ich bin mir da nicht sicher, könnte aber sein.
Timosch - So 13.07.08 16:41
302 Found heißt, dass die Datei zeitweilig unter einer anderen URI zu finden ist. Der Name der neuen URI wird im Header Location übergeben. Eigentlich müsste Indy das mit handleredirects erledigen...
Worauf du auch noch stoßen wirst: SchülerVZ benötigt Cookies. Das nur vorneweg.
Dark-§hadow - So 13.07.08 16:45
Tilman hat folgendes geschrieben: |
| versuch mal login=Einloggen noch zu übergeben. Und kann es sein dass man vor dem ersten Parameter ein ?-Zeichen braucht? Ich bin mir da nicht sicher, könnte aber sein. |
Hallo Tilman,
danke erstmal für die Antwort, aber ich weiß nicht, wo du genau login=Einloggen übergeben möchtest? In einem der Stringstreams?
Hast du es dir so ungefähr vorgestellt..?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| begin IdHTTP:= TIdHTTP.Create(nil); PostDataStream := TStringStream.Create(''); ParamData := TStringStream.Create(''); ParamData.WriteString('?login=einloggen&email=lawel&password=1234'); IdHTTP.Post('http://www.schuelervz.net/login.php' , ParamData, PostDataStream); postdatastream.Position:=0; memo1.Text:=postdatastream.DataString; end; |
das klappt leider auch nicht, der Fehler ist immernoch derselbe, noch welche Ideen..?
Gruß
Tilman - So 13.07.08 16:48
versuchs mal mit /Login statt /login.php
Dark-§hadow - So 13.07.08 16:53
Tilman hat folgendes geschrieben: |
| versuchs mal mit /Login statt /login.php |
gesagt getan, immernoch dasselbe...wenn ihr dort angemeldet seid, könnt ihr es auch gerne mal selbst probieren, wäre euch dankbar ^^ oder kurz testweise registrieren :>
Bisheriger Source (nur um Missverständnissen aus dem Weg zu gehen)
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TForm1.Button1Click(Sender: TObject); var IdHTTP: TIdHTTP; PostDataStream : TStringStream; ParamData : TStringStream; begin IdHTTP:= TIdHTTP.Create(nil); PostDataStream := TStringStream.Create(''); ParamData := TStringStream.Create(''); ParamData.WriteString('?Login=einloggen&email=test&password=pw'); IdHTTP.Post('http://www.schuelervz.net/Login.php' , ParamData, PostDataStream); postdatastream.Position:=0; memo1.Text:=postdatastream.DataString; end; |
PeterPain - So 13.07.08 16:56
Hast du gelesen, was Timosch geschrieben hat? Genau das ist dein problem, und die Lösung is ja auch gleich angedeutet (TidCookiemanager, handleredirects).
gruss
Tilman - So 13.07.08 16:56
Nein, ich meinte /Login statt /login.php, also ohne .php. So komm ich jedenfalls auf die (Fehler)-Seite von studivz.net. Aber das einloggen klappt nicht, da brauchst du wie oben gesagt cookies, ausserdem wirst du diesen "Formkey" ebenfalls übergeben müssen. Sowei iv und checkcode seh ich grad. Das sind alles hidden-Elemente die sicher noch abgefragt werden.
// edit:
| Zitat: |
<form id="Login" method="post" action="https://secure.schuelervz.net/Login">
|
Du wirst also das ganze wohl über https machen müssen. ABer frag mich nicht wie das geht.
Dark-§hadow - So 13.07.08 17:02
Tilman hat folgendes geschrieben: |
Nein, ich meinte /Login statt /login.php, also ohne .php. So komm ich jedenfalls auf die (Fehler)-Seite von studivz.net. Aber das einloggen klappt nicht, da brauchst du wie oben gesagt cookies, ausserdem wirst du diesen "Formkey" ebenfalls übergeben müssen. Sowei iv und checkcode seh ich grad. Das sind alles hidden-Elemente die sicher noch abgefragt werden.
// edit:
| Zitat: |
<form id="Login" method="post" action="https://secure.schuelervz.net/Login">
|
Du wirst also das ganze wohl über https machen müssen. ABer frag mich nicht wie das geht. |
Ja stimmt, der Fehler ist schonmal behoben, danke!
@PeterPain & Timosch: Sorry, aber dem werd ich mich dann jetzt wohl widmen müssen ^^
Seid ihr euch sicher, dass da 3 Parameter übergeben werden müssen? auch mit diesem Login=einloggen?
PeterPain - So 13.07.08 17:04
Ich mache sowas immer per localproxy (z.B. proxomitron). Da kannst du einfach ausgehende formulardaten anzeigen, und rauskopieren und musst nicht umständig den quellcode der seite durchforsten.
gruss
Tilman - So 13.07.08 17:06
XML-Daten
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| <form id="Login" method="post" action="https://secure.schuelervz.net/Login"> <fieldset> <label for="Login_email">E-Mail</label> <input class="fieldText" type="text" name="email" id="Login_email" value="" /> <label for="Login_password">Passwort</label> <input class="fieldText" type="password" name="password" id="Login_password" value="" />
<input class="fieldBtnSubmit" type="submit" name="login" value="Einloggen" /> <input type="hidden" name="jsEnabled" id="jsEnabled" value="false" /> <input type="hidden" name="formkey" value="(von mir entfernt wegen Datenschutz)" /> <input type="hidden" name="iv" value="(Von mir entfernt, so.o.))" /> <input type="hidden" name="checkcode" value="(auch von mir entfernt)" />
</fieldset> </form> |
Sicher bin ich mir sicher nicht ^^ aber es würde mich schwer wundern wenn das ohne diese Parameter ginge. Denn aus jux und dollerei haben die die bestimmt nicht eingebaut (vermutlich sogar, um genau dass was du versuchst unmöglich zu machen).
PeterPain - So 13.07.08 17:10
Tilman hat folgendes geschrieben: |
Sicher bin ich mir sicher nicht ^^ aber es würde mich schwer wundern wenn das ohne diese Parameter ginge. Denn aus jux und dollerei haben die die bestimmt nicht eingebaut (vermutlich sogar, um genau dass was du versuchst unmöglich zu machen). |
Wieso sollte dadurch irgendetwas unmöglich gemacht werden? Die einzige möglichkeit sowas unmöglich (oder zumindest sehr sehr schwer) zu machen, sind captchas (und andere, noch nutzerunfreundlichere und daher selten anzutreffende möglichkeiten).
gruss
Dark-§hadow - So 13.07.08 17:17
Gut, langsam wirds unübersichtlich ^^
Also mein Code bis hier hin...
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| procedure TForm1.Button1Click(Sender: TObject); var bla:tstringlist; IdHTTP: TIdHTTP; PostDataStream : TStringStream; ParamData : TStringStream; begin bla := tstringlist.create; IdHTTP:= TIdHTTP.Create(nil); idHTTP.AllowCookies := true; PostDataStream := TStringStream.Create(''); ParamData := TStringStream.Create(''); ParamData.WriteString('?login=Einloggen&email=&password=pw'); IdHTTP.Post('http://www.secure.schuelervz.net/Login' , ParamData, PostDataStream); postdatastream.Position:=0; memo1.Text:=postdatastream.DataString; bla.add(memo1.text); bla.savetofile ('test.html');
end; |
Mit der stringlist guck ich mir einfach nur an, was er ausgibt ^^
Und es kommt sowas wie "Ein allgemeiner Fehler, wir kümmern uns drum!" oder ähnliches...
Also gehts jetzt gar nicht mehr auf die Weise..?
...Hilfe? x_X
GTA-Place - So 13.07.08 17:28
Du hast formkey, iv und checkcode immer noch nicht übergeben. Außerdem heißt es https:
https://secure.schuelervz.net/Login
PeterPain - So 13.07.08 17:29
GTA-Place hat folgendes geschrieben: |
| Du hast formkey, iv und checkcode immer noch nicht übergeben. |
...und auch weder nen cookiemanager noch HandleRedirects eingestellt, lies doch mal, was man dir schreibt -_-
edit: Ui, SSL, da wirst du so eh nicht weiterkommen :)
Dark-§hadow - So 13.07.08 17:35
PeterPain hat folgendes geschrieben: |
GTA-Place hat folgendes geschrieben: | | Du hast formkey, iv und checkcode immer noch nicht übergeben. |
...und auch weder nen cookiemanager noch HandleRedirects eingestellt, lies doch mal, was man dir schreibt -_-
edit: Ui, SSL, da wirst du so eh nicht weiterkommen :) |
Handledirects hab ich direkt eingestellt oO und ich habs doch geleseen aber ich hab doch gefragt, obs überhaupt dann damit weiter gehen kann, vorher wollte ich ja nicht weiter machen, maul mich doch net an ;____________; hassus net gelesen? T___T und die Antwort lieferst du gleich mit x-X
Naja, dann wird des wohl nichts...trotzdem danke ^^
Carlo91 - So 13.07.08 18:33
Hi,
ich hatte grade mal langeweile und da dacht Programmiere ich doch einfach mal einen Lösungs ansatz ;)...
@GTA-Place ich hab es mit https zuerst gemacht da kam ein error von Indy, naja damit wollte ich mich nicht rum schlagen also hab ich es mit http versucht und es geht...
P.S. Ich würde mich über ein feedback freuen ;)
P.P.S Code ist im anhang(ohne kommentare aber er sollte sich eigendlich selbst erklären)
MfG Carlo
Dark-§hadow - So 13.07.08 20:27
Carlo91 hat folgendes geschrieben: |
Hi,
ich hatte grade mal langeweile und da dacht Programmiere ich doch einfach mal einen Lösungs ansatz ;)...
@GTA-Place ich hab es mit https zuerst gemacht da kam ein error von Indy, naja damit wollte ich mich nicht rum schlagen also hab ich es mit http versucht und es geht...
P.S. Ich würde mich über ein feedback freuen ;)
P.P.S Code ist im anhang(ohne kommentare aber er sollte sich eigendlich selbst erklären)
MfG Carlo |
Hey, das klappt wunderbar und ohne Probleme ;)
Vielen Dank, du hast dich da auch bei den restlichen Funktionen echt mal ins Zeug gelegt.
Darf ich den Teilsource fürs einloggen übernehmen? :)
Carlo91 - So 13.07.08 20:36
Hi,
klar kannst so weiter programmieren, ich habs ja nicht umsonst hochgeladen ;)!
Wenn du noch irgendwelche fragen hast kannst ja hier im Thread fragen oder mich per PN.
MfG Carlo
pennyWISE - Sa 19.07.08 18:34
Darf ich mal fragen, mit welchen Delphiversionen ihr arbeitet?
Ich programmiere im Moment etwas Ähnliches wie Dark-§, nur leider hab ich fast nur Probleme.
Ich arbeite mit Borland Delphi 6, wo standardmäßig idHTTP dabei ist, allerdings anscheinend in einer älteren Version, da ich den Quelltext von Carlo nicht compiliert bekomme (verschiedene Idunits fehlen).
Das Installieren von IdSoap_1_00 (ist doch das richtige package oder?) schlug aber wiederum wegen des Fehlens verschiedener Units fehl (dazu habe ich in einem anderen Forum gelesen, dass man für Delphi6 und 7 Besonderes beachten muss, allerdings ist der entsprechende Link verwaist und auf der indyseite finde ich da auch nichts mehr zu)
weiterhin funktioniert ganz allgemein der Dateidownload nicht. habe es schon mit der alten Version von idHTTP versucht sowie mit der URLmon-Unit. Keiner der beiden Befehle gibt eine Fehlermeldung, allerdings wird die gewünschte Datei auch nicht geladen. (an der Datei kann es nicht liegen, da ich verschiedene Files ausprobiert habe, u.a. auch eine von kernel.org, die auf dem server ganz sicher existiert ^^)
Kann es vllt daran liegen, dass ich Vista hab und diese krebsartigen sicherheitsvorkehrungen daran schuld sind? (obwohl ich eigentlich alle nötigen Befehle wie "schreiben, lesen, etc" auf "zulassen" gesetzt hab)
Am meisten nervt mich, dass ich nichmal ne Fehlermeldung bekomme. :( Die Datei wird einfach nich gezogen.
Ich hoffe, ihr könnt mir helfen!
Schonmal vielen Dank!
pennyWISE
PS.: Falls ich Probleme wiederholt habe, die hier schonmal gelöst wurden, dann fallt bitte nicht gleich über mich her :) ich hab die Suchfunktion schon benutzt und nichts entsprechendes gefunden :>
Carlo91 - Sa 19.07.08 18:44
Also ich habe das mit Indy9 programmiert welche Indy version ist bei Delphi 6 dabei?
P.S. Im notfall würd ich mal Delphi neuinstallieren(und somit auch Indy)
MfG Carlo
pennyWISE - Sa 19.07.08 21:11
also ich hab dlp6 nochma installiert, aber der code funzt nich. die versionsnr von indy bekomm ich leider nich raus, aber es wird wohl älter als 9 sein :)
die source files von 9 hab ich aber da, ich weiß jetzt bloß nich, wie ich die installieren soll :/
ich brauch wohl eine vcl-unit, die delphi komischerweise nicht hat (ist vcl nicht eigentlich standard?)
oder muss ich vorher die alten indyclients deinstallieren?
Timosch - Sa 19.07.08 22:09
Wegen dem Problem mit URLMon und Runterladen: Zeig mal deinen genauen Code.
(Übrigens: Ist bei Delphi 6 wirklich die idHTTP schon dabei? Kann ich mir irgendwie nicht vorstellen.)
Wieso findest du keine Installationshinweise auf der Indy-Seite?
Das hier [
http://www.indyproject.org/Sockets/Download/Files/Indy9.EN.aspx] hab ich in <1min gefunden.
IdSoap_1_00 ist selbstverständlich nicht das richtige Package. Lad dir einfach mal Indy 9 runter und installiere das Package indy60 oder wie es heißt (hab kein D6; die Zahl 60 steht nicht für die Indy-, sondern die Delphi-Version).
pennyWISE - So 20.07.08 00:37
LoL? die seite hatte ich schonma gesehen, aber jetzt partout nich wiedergefunden oO
egal.. jedenfalls hab ich jetzt die borland indy version deinstalled, dann die indy9 version versucht zu installieren.
dabei bekommen ich aber folgende Fehlermeldung:
"das Paket ist kein Entwurfszeit-Paket"
ich hatte noch diese Forumseite gefunden:
http://www.foonews.net/de-comp-lang-delphi-misc/2310802-delphi-6-personal-indytools-9-0-18-a.html
hab alles genauso gemacht, wie es dasteht, bekomme allerdings immer noch fehlermeldungen, dass ein prozedurzeiger im package falsch sei.
lg, pennyWISE
PS:
immerhin hatte ich vorher das Downloadproblem gelöst bekommen (mit der alten Indyvariante).. jetzt besteht immerhin da kein Hilfebedarf mehr :D
EDIT:
ok, also ganz genau heißt es
Der Prozedureinsprungspunkt "@Idstackwindows@initialization$qqrv" wurde in der DLL "Indy60.bpl" nicht gefunden.
pennyWISE - So 20.07.08 01:34
ok .. alles geschafft. die probleme wurden ja vorher schonmal besprochen
ich hatte nur nicht wirklich ALLE dateien, die gelöscht werden mussten, gefunden
jetzt geht aber alles ;)
also danke für eure hilfe und gute nacht ^^
Mitmischer 1703 - Fr 08.08.08 13:10
Tilman hat folgendes geschrieben: |
| Aber das einloggen klappt nicht, da brauchst du wie oben gesagt cookies |
Dafür gibt's die Eigenschaft AllowCookies:
Delphi-Quelltext
1:
| IdHTTP1.AllowCookies := true; |
napsterforever - So 28.06.09 22:59
Carlo91 hat folgendes geschrieben : |
Hi,
ich hatte grade mal langeweile und da dacht Programmiere ich doch einfach mal einen Lösungs ansatz ;)...
@GTA-Place ich hab es mit https zuerst gemacht da kam ein error von Indy, naja damit wollte ich mich nicht rum schlagen also hab ich es mit http versucht und es geht...
P.S. Ich würde mich über ein feedback freuen ;)
P.P.S Code ist im anhang(ohne kommentare aber er sollte sich eigendlich selbst erklären)
MfG Carlo |
hallo, ich habe mir diesen thread und einige weitere durchgelesen und unteranderem diesen code hier mal getestet!
Ich versuche ebenfalls mich per delphi prog bei einigen seiten, schülervz, wkw, etc einzuloggen. nur das mit den cookies habe ich noch nicht recht verstanden.
wenn alles funktioniert und ich firefox starte und auf die jew. seite gehe, müsste ich doch dann eingeloggt sein, doch mit dem obigen prog etc klappt das nicht, was mach ich falsch?
jaenicke - So 28.06.09 23:37
napsterforever hat folgendes geschrieben : |
| doch mit dem obigen prog etc klappt das nicht, was mach ich falsch? |
Was passiert denn? Fehlermeldung? Falsches Ergebnis?
Xentar - So 28.06.09 23:53
napsterforever hat folgendes geschrieben : |
| wenn alles funktioniert und ich firefox starte und auf die jew. seite gehe, müsste ich doch dann eingeloggt sein, doch mit dem obigen prog etc klappt das nicht, was mach ich falsch? |
Äh, nein? Du loggst dich doch mit DEINEM Programm (bzw. wenn du Glück hast, noch mit dem Internet Explorer) da ein. Also warum sollte der Firefox auch eingeloggt sein? Der weiß doch von dem Cookie überhaupt nichts.
napsterforever - Mo 29.06.09 01:09
hmm..und gibt es eine möglichkeit, mich per delphi prog so einzuloggen, dass ich dann auch im firefox eingeloggt bin?
jaenicke - Mo 29.06.09 01:32
Wofür soll das gut sein? Im Grunde müssten dafür die Cookies aus IdHttp genommen und in das entsprechende Verzeichnis des Firefox gelegt werden. Ob das reicht und wie das genauer geht weiß ich nicht, da ich den FF kaum benutze.
napsterforever - Mo 29.06.09 18:27
habe das ganze mal bei comunio versucht, klappt aber irgendwie nicht?
zumindest zeigt er nicht an "Erfolgreich eingeloggt"
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
| procedure TForm1.Button1Click(Sender: TObject); var s:string; stream: TStringList; begin try try IdHttp1.HandleRedirects := true; IdHTTP1.AllowCookies:=true; IdHTTP1.CookieManager:=IdCookieManager1;
stream := TStringList.Create; Stream.Add('login='+Login.Text); Stream.Add('pass='+Passwort.Text);
s := idhttp1.Post('http://www.comunio.de/index.phtml',stream);
if (Pos('Du bist als',s) > 0) then ShowMessage('Du bist Eingeloggt.'); if (Pos('Du bist als',s) = 0) then ShowMessage('Leider ist die E-Mail-Adresse oder das Passwort falsch.'); finally Stream.Free; end; except on E: Exception do ShowMessage(E.Message); end; end; |
folgendes gehört zur login procedure:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| <!-- login --><form method="post" action="login.phtml" name="login" style="display:inline"><table border="0" cellpadding="0" cellspacing="1"><tr><td align="right" valign="middle" class="text">Benutzername: <a href="signup.phtml" class="links" title="Anmelden">noch nicht angemeldet?</a></td><td align="right" valign="middle"><input type="text" name="login" size="10" maxlength="10" tabindex="1" style="width:80px;" /> </td></tr><tr><td align="right" valign="middle" class="text">Passwort: <a href="recoverPassword.phtml" class="links" title="Wiedererlange dein Passwort">vergessen?</a></td><td align="right" valign="middle"> <input type="password" name="pass" size="10" maxlength="8" style="width:80px;" tabindex="2" onkeypress="checkEnter(event, 'login')" /> </td></tr><tr><td colspan="2" align="right"><input type="hidden" name="action" value="login" />
<script language="JavaScript" type="text/javascript"> <!-- document.write("<input type=\"hidden\" name=\">> Login\" value=\"-1\" \/>");document.write("<a href=\"javascript:submitForm('login','>> Login')\;\"");document.write(" tabindex=\"3\"");document.write(" class=\"login\"");document.write(" title=\">> Login\"");document.write(">");document.write(">> Login");document.write("<\/a>"); //--> </script> <noscript> <input type="submit" name=">> Login_x" value=">> Login" /></noscript> </td></tr></table></form><script language="javascript" type="text/javascript"> <!-- document.login.elements[0].focus(); // --> </script><!-- login end --></td> |
Moderiert von
Narses: Code- durch Delphi-Tags ersetzt
Xentar - Mo 29.06.09 19:07
Hast du dir "s" mal ausgeben lassern, ob da überhaupt was drin steht?
jaenicke - Mo 29.06.09 19:11
Naja, könnte z.B. daran liegen, dass die Werte der versteckten Felder in deinem Quelltext nicht auftauchen... :roll:
Zum Beispiel das Feld action.
napsterforever - Mo 29.06.09 19:28
s gibt den quelltext der index.phtml aus.
ich habe es schon mit
Quelltext
1: 2: 3: 4: 5:
| stream := TStringList.Create; Stream.Add('login='+Email.Text); Stream.Add('pass='+Passwort.Text); Stream.Add('action=login'); Stream.Add('Login=-1'); |
variationen versucht, aber kein erfolg?!
napsterforever - Mo 29.06.09 20:02
da kommt (This request contained no POST data)
jaenicke - Mo 29.06.09 20:07
Vor oder nach dem Drücken des Loginknopfs?
Mir fällt gerade auf, dass du gar nicht die Loginseite aufrufst...
napsterforever hat folgendes geschrieben : |
Delphi-Quelltext 1:
| s := idhttp1.Post('http://www.comunio.de/index.phtml',stream); | |
// EDIT:
Ach ja: Der Parameter Login=-1 ist auch falsch... der heißt >> Login...
napsterforever - Mo 29.06.09 20:23
Ja weil die Felder bzw die post procedure ja auch in der index.phtml vorhanden ist!
Mit Twebbrowser habe ich es auch mit der index.phtml gemacht!
Habe nun doch mit httpfox den post code herausgefunden:
Quelltext
1: 2: 3: 4: 5:
| Parameter Value login ****** pass ****** action login >> Login_x 33 |
nach mehrmaligen versuchen kam immer 33!
aber
Quelltext
1: 2: 3: 4: 5:
| stream := TStringList.Create; Stream.Add('login='+Email.Text); Stream.Add('pass='+Passwort.Text); Stream.Add('action=login'); Stream.Add('%3E%3E+Login_x=33'); |
funktioniert auch nicht!
jaenicke - Mo 29.06.09 20:25
napsterforever hat folgendes geschrieben : |
| Ja weil die Felder bzw die post procedure ja auch in der index.phtml vorhanden ist! |
Es wird aber die login.phtml aufgerufen... Siehe Quelltext des Html-Formulars, den du selbst gepostet hast oder HttpFox.
// EDIT:
Siehe Anhang... da siehst du das ja alles im HttpFox.
napsterforever - Mo 29.06.09 20:33
und wenn ich es an die login.phtml sende, wie kann ich dann überprüfen ob ich eingeloggt bin?
Weil die hat nachher wie vorher den gleichen quelltext?!
//Edit: ok habe eine möglichkeit gefunden!
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| stream := TStringList.Create; Stream.Add('login='+Email.Text); Stream.Add('pass='+Passwort.Text); Stream.Add('action=login'); Stream.Add('%3E%3E+Login_x=33'); //Stream.Add('>> Login_x=33');
if (Pos('Logout',s) > 0) then //Erfolgreich eingeloggt? ShowMessage('Du bist Eingeloggt.'); |
Habe es mit Stream.Add('%3E%3E+Login_x=33') und Stream.Add('>> Login_x=33') versucht aber es kommt keine Nachricht "Du bist Eingeloggt", also klappt es immer noch nicht!
//Edit2: aaaaaaaaaaaaaaaah es geht :D
Hatte
Quelltext
1: 2: 3:
| IdHttp1.HandleRedirects := true; IdHTTP1.AllowCookies:=true; IdHTTP1.CookieManager:=IdCookieManager1; |
testweise deaktiviert gehabt, aber jetzt scheint es zu gehen :-)
Zumindest finde ich in der login.phtml im ausgeloggten zustand keinen "Logout" Text oder meinen Benutzernamen!
Quelltext
1: 2:
| if (Pos(Email.Text,s) > 0) then //Erfolgreich eingeloggt? ShowMessage('Du bist Eingeloggt.'); |
Also vielen vielen Dank an jaenicke, hast mir sehr fix geholfen ;-)
Wenn ich nochmal fragen hab, melde ich mich :-)
kaka77 - Di 22.02.11 04:59
hi,
hat vielleicht jemand schonmal rausgekriegt, wie man an den inhalt der nachrichten rankommt?
die sind ja "hidden"... den betreff und den autor kann man leicht im quelltext finden.
danke für eure hilfe!
jaenicke - Di 22.02.11 06:37
Schalte einfach einmal Skripte in deinem Browser aus und schau, ob du auch ohne an die herankommst. Wenn ja, hast du es schon. Wenn nein, musst du schauen wie das Skript die holt und eben diese Adresse selbst abholen. ;-)
kaka77 - Di 22.02.11 15:47
ja, also mit javascript im browser ausgeschaltet, werden keine nachrichten mehr angezeigt.
ein auszug aus dem quelltext bzgl. des links der nachricht ist hier:
<a href="javascript:;"
class="boldIfNew"
onclick="Phx.Event.Dispatcher.trigger('Messages.ToggleMessage', event, this , {'messageId':'58524340','senderIds':'5MpUbweEDiXGys-rt-p6aJOHrBT-4AilgcVH04xHOzo'});" title="lesen">
Re: na wenn das so ist </a>
wie kann man das ausführen, was da im onclick drin ist? würde das gern mit indy machen. habe mit tamperdata mir die posts rausgesucht... aber krieg den inhalt der nachricht immer noch nicht
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36:
| var sHTMLCode: String; iPos1, iPos2: Integer; sFormKey, sIV, sCheckCode: String; slParams: TStringList; ReplyData :TStringStream; begin slParams :=TStringList.Create; sHTMLCode :=IdHTTP.Get('http://www.studivz.net/Messages/Inbox/p/1'); iPos1 :=Pos('readInboxMessage" content="formkey=', sHTMLCode) +35; iPos2 :=PosEx('&', sHTMLCode, iPos1); sFormKey :=Copy(sHTMLCode, iPos1, iPos2-iPos1); iPos1 :=PosEx('iv="', sHTMLCode, iPos2)+3; iPos2 :=PosEx('"', sHTMLCode, iPos1); sIV :=Copy(sHTMLCode, iPos1, iPos2-iPos1); iPos1 :=PosEx('name="checkcode" value="', sHTMLCode, iPos2)+24; iPos2 :=PosEx('"', sHTMLCode, iPos1); sCheckCode :=Copy(sHTMLCode, iPos1, iPos2-iPos1);
slParams.Add('formkey='+sFormKey); slParams.Add('iv='+sIV); slParams.Add('messageID='+'58497883'); // slParams.Add('checkcode='+sCheckCode);
ReplyData := TStringStream.Create(''); idhttp.Post('http://www.studivz.net/Messages/Inbox/p/1', slParams, ReplyData); slParams.Free;
memlog.Lines.Add(idhttp.get('http://www.studivz.net/Messages/Inbox/p/1')); memlog.Lines.SaveToFile('c:\memlg.txt'); memlog.Text:= ReplyData.datastring; memlog.Lines.SaveToFile('c:\replay.txt'); ReplyData.Dispatch(); ReplyData.Free; end; |
kaka77 - Di 22.02.11 21:06
jaenicke hat folgendes geschrieben : |
| Wenn nein, musst du schauen wie das Skript die holt und eben diese Adresse selbst abholen. ;-) |
ja, wie denn??
hast du da ne ahnung, wie ich da weiter vorgehen kann?
will ca 5000 nachrichten ausdrucken und kenn mich mit javascript nicht so aus und manuell zu kopieren is ganz schön.........
wär toll, wenn mir jemand da weiter helfen könnte
Delete - Di 22.02.11 21:30
Eventuell sollte man auch erst mal die AGBs lesen und gucken, ob ein Automatismus überhaupt zulässig ist.
kaka77 - Mi 23.02.11 01:22
Luckie hat folgendes geschrieben : |
| Eventuell sollte man auch erst mal die AGBs lesen und gucken, ob ein Automatismus überhaupt zulässig ist. |
also ich hab da
http://www.studivz.net/l/terms
jedenfalls nichts gelesen, dass das so rechtswidrig wäre...
im gegenteil:
"5.5 In punkto Sicherung der eigenen Daten
Der Nutzer ist dazu verpflichtet, angemessene Vorkehrungen zu treffen, um Informationen, die über das studiVZ-Netzwerk einsehbar und von studiVZ gespeichert werden (z.B. Mitteilungen innerhalb des Nachrichtendienstes), nach dem Stand der Technik zu sichern. Es obliegt dem Nutzer daher, wichtige Informationen auf geeigneten Medien – am besten zum Ende einer jeden Nutzung des studiVZ-Netzwerkes – abzuspeichern und/oder auszudrucken, so dass ein uneingeschränkter Zugriff auf die Daten auch unabhängig vom studiVZ-Netzwerk möglich ist."
...aber danke für deinen tipp
Kha - Mi 23.02.11 01:35
Sehr genau scheinst du das aber nicht gelesen zu haben :mahn: !
| Zitat: |
5.4.3
Die über das studiVZ-Netzwerk zugänglichen Inhalte dürfen – mit Ausnahme der gesetzlich zugelassenen Fälle – nicht ohne Zustimmung der jeweiligen Rechteinhaber kopiert, verbreitet oder anderweitig öffentlich zugänglich gemacht werden. Untersagt ist insoweit auch der Einsatz von Computerprogrammen zum automatischen Auslesen von Daten, wie z.B. Crawlern (alias Spider oder Robot, kurz: Bot). |
Deswegen
*geschlossen*
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!