Autor |
Beitrag |
Dark-§hadow
      
Beiträge: 24
|
Verfasst: So 13.07.08 15:53
Hallo zusammen!
Ich bin im Rahmen eines Projekts auf das Problem gestoßen, dass ich dafür den Login bei (in diesem Fall) 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
      
Beiträge: 1405
Erhaltene Danke: 51
Win 7, Android
Turbo Delphi, Eclipse
|
Verfasst: 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.
_________________ Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
|
|
Timosch
      
Beiträge: 1314
Debian Squeeze, Win 7 Prof.
D7 Pers
|
Verfasst: 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.
_________________ If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell
|
|
Dark-§hadow 
      
Beiträge: 24
|
Verfasst: 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
      
Beiträge: 1405
Erhaltene Danke: 51
Win 7, Android
Turbo Delphi, Eclipse
|
Verfasst: So 13.07.08 16:48
versuchs mal mit /Login statt /login.php
_________________ Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
|
|
Dark-§hadow 
      
Beiträge: 24
|
Verfasst: 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
      
Beiträge: 83
|
Verfasst: 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
      
Beiträge: 1405
Erhaltene Danke: 51
Win 7, Android
Turbo Delphi, Eclipse
|
Verfasst: 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.
_________________ Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
|
|
Dark-§hadow 
      
Beiträge: 24
|
Verfasst: 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
      
Beiträge: 83
|
Verfasst: 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
      
Beiträge: 1405
Erhaltene Danke: 51
Win 7, Android
Turbo Delphi, Eclipse
|
Verfasst: 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).
_________________ Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
|
|
PeterPain
      
Beiträge: 83
|
Verfasst: 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 
      
Beiträge: 24
|
Verfasst: 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
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: 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
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
Zuletzt bearbeitet von GTA-Place am So 13.07.08 17:31, insgesamt 3-mal bearbeitet
|
|
PeterPain
      
Beiträge: 83
|
Verfasst: 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 
      
Beiträge: 24
|
Verfasst: 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
      
Beiträge: 20
|
Verfasst: 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
Einloggen, um Attachments anzusehen!
|
|
Dark-§hadow 
      
Beiträge: 24
|
Verfasst: So 13.07.08 20:27
|
|
Carlo91
      
Beiträge: 20
|
Verfasst: 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
      
Beiträge: 49
Win XP
Delphi 2005 PE (getunt), QBasic 4.5
|
Verfasst: 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 :>
_________________ „Philosophie ist der Versuch, eine schwarze Katze in einem dunklen Zimmer zu fangen. Theologie ist der Versuch, eine schwarze Katze in einem dunklen Zimmer zu fangen, jedoch eine Katze, die gar nicht im Zimmer ist - und immer zu rufen: Ich hab' sie!“
|
|
Dieses Thema ist gesperrt, Du kannst keine Beiträge editieren oder beantworten.
Das Thema wurde von einem Team-Mitglied geschlossen. Wenn du mit der Schließung des Themas nicht einverstanden bist, kontaktiere bitte das Team.
|
|