PHP externes formular ausfüllen?

yourhighness

Lt. Junior Grade
Registriert
Feb. 2006
Beiträge
297
hallo!

ich habe noch eine frage.. für mein webprojekt soll das eintragen von inseraten auf verschiedensten inseratseiten eine weitere funktionalität sein, sprich man soll ein inserat aufgeben, dieses soll dann automatisch bei willhaben.at, flohmarkt.at etc eingetragen werden. da diese seiten leider alle keine API zur verügung stellen die man verwenden kann, muss ich das irgendwie anders machen. hat da jemand eine idee wie man das angehen könnte? ich hab shcon versucht den quelltext der formulare anzusehen jeweilig, und dann dieses "nachzubauen" und an die adresse zu senden die bei action angegeben ist. leider will das nicht..

jemand ideen?

danke für anregungen :)
 
Wenn die Portale halbwegs sauber geschrieben sind hast du da keine Chance. Die haben wenigstens ne Referer-Prüfung drin, ich kenn aber auch Systeme, die auf eine jedes Mal frisch generierte ID mit übergeben.
 
Kommt ganz auf die Seite an. Wenn es einfach ein GET ist, kannst du es ganz einfach nachbauen. Bei einem POST wird die Sache schon schwieriger.

Ich hab letztens eine Java Anwendung geschrieben, die von verschiedenen Buchungsseiten Informationen holt. Dazu hab ich dort dann halt auch das Formular "ausgefüllt" mit An- und Abreisetermin und Anzahl der Personen.

So wie ich das sehe, wird das bei den Seiten aber schwieriger. Weil man sich vorher auch anmelden muss etc.

Ich sehe gerade bei Flohmarkt.at sollte das eigentlich möglich sein. Hole dir mal FireBug und gebe mal hier:

http://www.flohmarkt.at/gebrauchtwagen/index.php?aktion=neu

dein Inserat auf. Dann schaust du einfach in FireBug wie die Get Anfrage ausschaut. Dann Baust du sie in einer Programmiersprache deiner Wahl nach.
 
Zuletzt bearbeitet:
Ist dir bei dem Flohmarkt nicht das hier aufgefallen?
HTML:
<input type="hidden" name="sec" value="f7e37e28a49b11511650531e138ef814">
Jetzt fragt sich, nach welchem Muster der Wert fluktuiert und ob er der Validierung dient. Er ändert sich zumindest nicht bei jedem Reload.

Wie ich schon sagte, es kommt auf die Software an. Wenn man z.B. eine Contao-basierte Webseite hätte, dann man an dieser netten Zeile hier scheitern:
HTML:
<input type="hidden" name="REQUEST_TOKEN" value="9e84ad78c909232b9b183717483a69ac">
Jedes Formular hat, bei jedem Seitenaufbau, ein separates Token.

Und selbst wenn solche Token nicht genutzt werden, Refer-Check ist zumindest Standard.
 
Ehrlich gesagt verstehe ich nicht Daaron, warum du ihn entmutigen musst. Du weißt selbst, dass er deine genannten "Probleme" sehr einfach lösen kann.
Er muss sich nur wie ein Webbrowser verhalten. Also vorher die Seite mit dem Formular aufrufen um den CSRF-Token zu bekommen und dann beim simulierten POST-Request diese Daten senden. Und Referer-Check? Also bitte, das ist genauso ein fadenscheiniges Argument, als ob man nicht selbst per z.B. Curl noch weitere eigene HTTP-Request-Header senden kann...

@yourhighness: Es funktioniert, du musst eben nur genau das gleiche senden, wie es der Browser auch macht. Also z.B. mit Firebug den HTTP-Request ansehen und nachbauen. Sind dynamische Daten in dem Formular wie ein CSRF-Token musst du eben vorher erst noch die Formularseite aufrufen, um dir den CSRF-Token zu holen. Goutte sollte dir 99% der Arbeit abnehmen, die du bei deiner Aktion implementieren musst.
 
Hallo yourhighness,
ice-breaker hat dir ein wichtiges Stichwort geliefert: Dein Vorhaben lässt sicht mit ein paar Zeilen curl-Anweisungen relativ einfach umsetzen. Nachdem du die nötigen Formulardaten extrahiert hast, initialisierst du eine curl-Session (curl_init()), setzt die gewünschten Werte (Referer [sic!], Request Token, Cookie, usw.) mittels curl_setopt() und sendest die Daten zurück an den Server (curl_exec()).
 
Zurück
Oben