Formular ausfüllen

G

Gerry67

Gast
Hallo,

ich hab folgendes Problem:

Ich will mit Java eine Class schreiben die auf eine Bestimmte Url geht, die einzelnen Formularfelder ausfüllt (mit den Daten verschiedenen Strings), ein Häckchen macht und dann auf "Absenden klcikt"...

und dann alles am besten ohne die Seite zwischen zuspeichern.

Ich hoffe ihr könnt mir helfen!

Danke,
Geraldo

PS: Google und co brachten mich auch nich weiter
 
G

Gerry67

Gast
naja der eigentlich Sinn der Sache sollte sein, dass das Prog ein HTML Formular ausfüllt mit Name, Straße blabla

das Problem ist aber, dass in der Url bei jedem öffnen der Seite eine andere id steht und die muss beibehalten werden, sonst weiß
ja die Seite nich das "ich" das Formular ausgefüllt habe...
 

schlingel

Gesperrter Benutzer
Wie wird die ID generiert? Wo kommt die hier? Prinzipiell musst du dann einfach nur dort ansetzen wo auch der Benutzer ansetzen würde und per GET die Seite runterladen, den Link holen in dem die ID steht und dann dorthin die Daten senden.

Wofür brauchst du das?
 
G

Gerry67

Gast
das ist ja das Problem ...
die ID steht nirgends im Quelltext ...

darum dachte ich man könnte einfach die Seite öffnen, das da reinschreiben (lassen) und dann klicken (lassen)...
 

schlingel

Gesperrter Benutzer
Dann hol dir in Schritt 1 per GET die Seite, lies die ID aus die irgendwo auf der Seite steht und verschick dann die Daten in schritt 2 per POST.

Wie gefragt: Wofür brauchst du das?
 

schlingel

Gesperrter Benutzer
  1. Ich glabe wenn du hier probierst dich automatisch einfach ziemlich oft einzutragen wirst du Probleme bekommen, da so etwas nicht gewertet wird und zum anderen leicht zu erkennen ist. Wer hat schon die Fähigkeit sich 1000 Mal in der Minute anzumelden?
  2. Entweder du hast das HTTP-Protokoll noch nicht ganz verstanden oder meine Frage nicht verstanden. Die 2 IDs die du da mitsenden möchtest, stehen die schon fest oder werden die irgendwo generiert? Wenn sie dynamisch generiert werden, woher bekommst du den Link? Falls nicht und du willst immer die selben IDs mitschicken, kannst du sie ganz normal im POST-Request versenden. Das Formular macht nichts anderes, nur dass es sie eben als hidden-Fields nicht im Formular anzeigt.
Siehe dazu auch den HTML-src:
Code:
[...]
	<input type="hidden" name="id" value="110696" /> 
	<input type="hidden" name="klickid" value="2908185" /> 
[...]
 
F

Firephoenix

Gast
Hi,
reicht denn da einmal Ausfüllen nicht aus?
(Mal abgesehen davon, dass Gewinnspiele eine tolle Möglichkeit sind Daten ins Internet zu pusten die dort nicht hingehören -Werbung lässt grüßen- und Falschangaben illegal sind).
Außerdem ist das Gewinnspiel schon seit letztem Jahr vorbei.
Gruß
 
G

Gerry67

Gast
oh wie peinlich...

die zwei ids im Sourcecode der HTML seite hatte ich wohl übersehen :)

und ich will mich da ja nicht 1000 mal in der minute anmelden sondern vll 5-10 mal am Tag.
Ausser dem glaube ich kaum das das jedemand wirklich überwacht weil die Seite dient ja am Ende auch nur da zu Daten Adressen etc zusammeln...
 
G

Gerry67

Gast
mein Zeil sollte es ja auch nicht sein meine "Gewinnchance" zu erhöhen in dem ich mich 3000x anmelde ...

es geht um ne Sache wo man Clicks bzw Anmeldungen nen paar Cent bekommt...

und es ist auch egal, dass DAS gewinnspiel nun gerade abgelaufen ist ... weil Seiten, die ähnlich aufgebaut sind gibts genug !
 
F

Firephoenix

Gast
Hi,
du hast schon gelesen was wir geschrieben haben? Das Gewinnspiel ist schon vorbei.
Außerdem ist es absolut Sinnfrei solche Seiten mit Daten zu füttern (und im Falle von zuspammen oder Falschangaben auch illegal).
Und für 5-10 mal am Tag kannst du auch noch selbst Hand anlegen, das sind nämlich immer noch weniger Zeichen als ein kleines Java-Programm.
Edit: Bots für besagte Cent-Für-Klick Seiten zu verwenden ist übrigens in 99.5% der Fälle bereits in entsprechenden AGB der Seiten untersagt.
(Warum glaube ich nur, dass wenn hier jemand Code postet der sicherlich nicht für irgendwas sinnvolles verwendet werden würde?)
Gruß
 
G

Gerry67

Gast
also 1. gerade bin cih über nen anderen Link nochmal auf die Seite, da war das Datum bis 31.12.2011....

2. glaub ich kaum das es Illegal ist sich "Falschangaben" anzumelden solange man nicht irgendwelche Namen nimmt die es wirklich gibt

3. wer von der Cent-für-Klick-Seite solldas bitte mitbekommen ob ich das selber mache oder nich...

und fürs gute Gewissen : was ich "verdienen" würde wäre gar nicht der Rede wert , was die Seitenbetreiber damit verdienen wenn die bei solchen "Gewinnspielen" Adressen sammeln und dann Verkaufen ....

und im großen und ganzen geht es mir gar nicht wirklich um die paar Cent sondern es sollte mal wieder ein neues Projekt werden mit Lernwert, weil bei einem solchen Bot viele Dinge beachtet werden müssen

also helft ihr mir nun weiter oder nich ??
 

schlingel

Gesperrter Benutzer
Du fauler Hund! Du hast alle Schlagworte beinander um dir die nötigen Informationen selbst zusammen zu suchen. Wenn du noch nicht soweit Java kannst dass dir mein Link oben weiterhilft, lies dich hier einmal ein. Wenn du ein Tool haben möchtest dass das erledigt aber nicht selber coden möchtest, kannst du dich noch immer an die Job-Börse wenden.

Wenn du was über Programmieren lernen möchtest, musst du programmieren. Wenn du nicht weißt wie es geht, musst du dir ein Buch hernehmen und anfangen es durchzuarbeiten. Alles andere wäre sinnlos.
 
G

Gerry67

Gast
oh sorry deinen Link hab ich nich gesehen ...

ausserdem wollte ich auch gar nich das mir hier jmd nen Code vor die Füße wirft weil ich ja wie gesagt was lernen will....

ausserdem war ich grade schon dabei meinen besten Freund aka. Google um rat zu bitten ...

ich werd mir jetzt mal deinen Link zu gemüte führen ... DANKE
 
G

Gerry67

Gast
<form method="post" action="check.php" class="form">

das hab ich jetzt im Quelltext gefunden ...
kann mir vll jmd sagen was das ´jetzt in meinem Fall bedeutet und was eigentlich der Unterschied zwischen Post und Get ist ?!
 
G

Gerry67

Gast
soweit so gut:

jetzt habe ich in der Klasse, die später mal den Request senden soll bisher folgendes :

Java:
class Razer
{
 String data;
 
 void generateData ()
 {
  data =        URLEncoder.encode("vorname",       "UTF-8") + "=" + URLEncoder.encode(curvnm, "UTF-8");
  data += "&" + URLEncoder.encode("strasse",       "UTF-8") + "=" + URLEncoder.encode("value2", "UTF-8");
  data += "&" + URLEncoder.encode("plz",           "UTF-8") + "=" + URLEncoder.encode("value2", "UTF-8");
  data += "&" + URLEncoder.encode("telefonnummer", "UTF-8") + "=" + URLEncoder.encode("value2", "UTF-8");
  data += "&" + URLEncoder.encode("nachname",      "UTF-8") + "=" + URLEncoder.encode("value2", "UTF-8");
  data += "&" + URLEncoder.encode("hausnr",        "UTF-8") + "=" + URLEncoder.encode("value2", "UTF-8");
  data += "&" + URLEncoder.encode("wohnort",       "UTF-8") + "=" + URLEncoder.encode("value2", "UTF-8");
  data += "&" + URLEncoder.encode("email",         "UTF-8") + "=" + URLEncoder.encode("value2", "UTF-8");
  data += "&" + URLEncoder.encode("id",            "UTF-8") + "=" + URLEncoder.encode("value2", "UTF-8");
  data += "&" + URLEncoder.encode("klickid",       "UTF-8") + "=" + URLEncoder.encode("value2", "UTF-8");
  data += "&" + URLEncoder.encode("key2",          "UTF-8") + "=" + URLEncoder.encode("value2", "UTF-8");





 public void sendrequest()
 {

nur tun sich da für mich schon wieder viele Fragen auf ... die erste und wichtigste wäre :
IST DAS SOWEIT ERSTMAL RICHTIG ?? ( bitte siehe quelltext HTTP) -> Razer-Gewinnspiel

2. Was mache ich mit der checkbox und dem Submitbutton ???

und 3. Wie bekomme ich die zwei IDs:

<input type="hidden" name="id" value="110696" />
<input type="hidden" name="klickid" value="2908185" />

am besten / einfachsten aus dem Quelltext der Html in einen String, den ich dann in den Request senden kann ??

Bitte helft mir
 

ARadauer

Top Contributor
Ich würde sowas mit selenium machen...

und 3. Wie bekomme ich die zwei IDs:

<input type="hidden" name="id" value="110696" />
<input type="hidden" name="klickid" value="2908185" />

am besten / einfachsten aus dem Quelltext der Html in einen String, den ich dann in den Request senden kann ??
klar wie den sonst...
 
G

Gerry67

Gast
Hallo,

weiß zufällig jmd wie man die momentane Url abfragen kann ?? gibts da vll sowas wie getURL oder so ??

und 2. reagiert eine Seite wenn ich sie mit URLConnection aufrufe genauso wie wenn ich sie mit IE oder Firefox aufrufe (weiterleiten etc.) ??

und 3. wie geht das mit den Checkboxen und dem Submit Button
 

ARadauer

Top Contributor
Hallo,

weiß zufällig jmd wie man die momentane Url abfragen kann ?? gibts da vll sowas wie getURL oder so ??

und 2. reagiert eine Seite wenn ich sie mit URLConnection aufrufe genauso wie wenn ich sie mit IE oder Firefox aufrufe (weiterleiten etc.) ??

und 3. wie geht das mit den Checkboxen und dem Submit Button

1. Was ist "die momentane url"?

2. Nicht unbedingt, da der HTTP Agent vermutlich anders ist, weiß gar nicht was da ankommt, aber das könnte man überschreiben

3. kommt drauf an, irgend welche js scrpts kannst du nicht ausführen, aber post kannst du natürlich simulieren...

4. ich würde das mit selenium machen...
 
G

Gerry67

Gast
1. na mit "momentaner URL" meine ich zB wenn ich auf eine Seite gehe und die mich dann weiterleitet .... dan will ich die URL von der Seite auf die ich weitergeleitet wurde irgendwie in einen String oder so haben ...

2. Ich meinte eigentlich nur ob man da genauso weitergeleitet wird zur nächsten Seite wie mit zb IE

und 3. meinte ich eigentlich wie ich das mache das die php datei dann "denkt", wenn ich ihr den Postrequest schicke, dass da ein Häckchen in der Checkbox ist. Dann eben was ich mit dem Submitbutton überhauptmachen soll ???

und 4. ich will es selber schreiben um was dabei zu lernen

Danke
 

ARadauer

Top Contributor
1. Wie weiterleitet? Über den http header oder javascript? JavaScript natürlich nicht, http header könnte schon sein. http commons kann das eventuell auslesen. Wie hohlst du dir im Moment die Seite?

2. Nein natürlich nicht, der IE leitete ja weiter, wenns zb über javascript geht. Wer soll das den machen, wenn du manuell über http kommunzierst, da wird ja nur die HTML Seite übertragen? Das müsstest du schon selbst machen. Der Aufwand ist aber enorm

3. HTTP ist sehr simpel, das kannst du dir alles ansehen, was da genau passiert, zb mit wireshark, und dann sendest du das auch. Da wird einfach ein parameter (name der checkbox) mit dem wert (value der checkbox) übergeben.

4. dann beschäftige dich mal mit den HTTP Grundlagen Hypertext Transfer Protocol ? Wikipedia
 
G

Gerry67

Gast
1. also wenn ich das manuell machen geht das so :
-ich klick auf nen Link und dann kommt erstmal sone weiße seite wo da steht "wenn si nicht weitergeleitet werden klicken sie hier"
-dann komm ich zu dem "Gewinnspiel" und da durch das ich von der Seite komme hat die seite dann ne Id (im url und als hidden input im sourcecode ) die wird eben benötigt das die Seite auch weiß, dass "ich" daas war und cih meine paar cent bekomm

darum müsst ich das Gewinnspiel über den Link aufrufn und mich weiterleiten lassen und dann die ips hier einfügen :
Java:
  data  =       URLEncoder.encode("vorname",       "UTF-8") + "=" + URLEncoder.encode(curvnm, "UTF-8");
   data += "&" + URLEncoder.encode("strasse",       "UTF-8") + "=" + URLEncoder.encode(curstr, "UTF-8");
   data += "&" + URLEncoder.encode("plz",           "UTF-8") + "=" + URLEncoder.encode(curplz, "UTF-8");
   data += "&" + URLEncoder.encode("telefonnummer", "UTF-8") + "=" + URLEncoder.encode(curtnr, "UTF-8");
   data += "&" + URLEncoder.encode("nachname",      "UTF-8") + "=" + URLEncoder.encode(curnme, "UTF-8");
   data += "&" + URLEncoder.encode("hausnr",        "UTF-8") + "=" + URLEncoder.encode(curhnr, "UTF-8");
   data += "&" + URLEncoder.encode("wohnort",       "UTF-8") + "=" + URLEncoder.encode(curort, "UTF-8");
   data += "&" + URLEncoder.encode("email",         "UTF-8") + "=" + URLEncoder.encode(cureml, "UTF-8");
   data += "&" + URLEncoder.encode("id",            "UTF-8") + "=" + URLEncoder.encode("....", "UTF-8");
   data += "&" + URLEncoder.encode("klickid",       "UTF-8") + "=" + URLEncoder.encode("....", "UTF-8");
   data += "&" + URLEncoder.encode("abg",           "UTF-8") + "=" + URLEncoder.encode("agb",  "UTF-8");

2. wenn ich die Checkbox manuell anhake dann würde praktisch die letzte zeile hinzugefügt werden
3. und der SubmitButton macht also nix anderes als den ganzen spaß abzuschicken und muss somit nicht mit in die "liste" (java quellcode)
 

Atze

Top Contributor
ich glaube das gefühl von (mir und) den anderen ist, dass dir für dein vorhaben ein paar grundlegende kenntnisse über http usw. fehlen und man eine reihe von folgeerklärungen dranhängen müsste. hast du dir schonmal mit zB mozdev.org - livehttpheaders: installation angeschaut was da so passiert? hört sich zumindest nach etwas mehr an als nur ein get-parameter dranzuhängen
 
G

Gerry67

Gast
ok ich bin jetzt nicht der totale Pro. aber ich habs zumindest hinbekommen (auch ohne hilfe) :D, dass das applett einen POST-request an die php Datei schickt.

Und beim Prüfen der Rückgabe ( mit DataInputStream ) hat es sogar als String díe Seite im HTML-Code ausgegebn die da auch normalerweise kommt wenn man sich da erfolgreich anmeldet.

Jetzt wäre das einzige was ich noch wissen, wie/ob man sich durch eine Seite weiter lassen kann und dann wenn es die eigentliche Seite geladen hat den URL auslesen kann ...

greez,
Gerry
 

schlingel

Gesperrter Benutzer
Die Frage wurde schon beantwortet - mehrfach.

Du verstehst aber anscheinend nicht, dass dein Programm als Antwort auf einen Request die "nachfolgende" Seite geliefert bekommt die du dann parsen musst um an die Daten zu kommen.

Solange du also nicht (wenigstens ein bisschen) verstehst wie du mit dem HTTP-Protokoll in einem Java-Programm umgehen musst hat jede weitere Antwort keinen Sinn. Ich kann dir versichern, dass hier vermutlich 4/5 Leuten das Programm in 15 Minuten runtertippen können aber so penetrantes Dauergefrage ohne auf bereits gelieferte Hilfe zu reagieren wird dich nicht weiterbringen.

Das einzige was passieren wird, ist das die Leute hier einen unfreundlicheren Ton anschlagen werden. Tu dir einen Gefallen und lern es selber.
 
G

Gerry67

Gast
also zuerstmal bin ich sehr wohl auf die Hilfe eingegangen, hab viele viele Stunden gegooglet und probiert...

ausser dem habe ich es ja geschafft den Request an das *.php zusenden, und habe sogar schon was geschriebn was die nachfolgende Seite vergleicht und dann ausgibt ob das senden des Requests erfolgreich war oder nicht .

So jetzt zur eigentlichen Frage ( bei der ich mich wohl hätte besser ausdrücken sollen ),

Es geht um was anderes, und zwar:

Ich brauch etwas womit ich weitergeleitet werde ... (nicht beim Request sondern generell)

ich hab bisher versucht das mit nem Externen Browser zu lösen ( Url im Browser öffnen und dann weiterleiten lassen)
das funktionierte auch ABER :

Das Problem ist das ich nicht weiß wie man aus dem Browser dann die aktuelle URL ausliest (die is ja dann anders als die die man aufgerufen hat weil man ja weitergeleitet wurde).

Also ist das mit dem Browser nicht so optimal denke ich.

Hat da jmd ne alternative ?
 
G

Gerry67

Gast
sooo...

nach unendlichem googlen und probieren :

habe ich es geschafft einen externen Browser zu öffnen (mit ProcessBuilder) ihm die Url zu übergeben, warten bis er mich weitergeleiter hat und dann wieder automatisch zu schließen ...

aber ich bekomms ums Verrecken nicht hin den Process auszulesen bzw. die HTML-Seite im Browser ...

is da vll jmd schlauer als ich und kann mir helfen ?
 
G

Gerry67

Gast
Bitte,
ich bekomms echt nich allein hin

[Java]
import java.io.*;

public class LinkOeffner {

public static void main(String args[])throws Exception
{
String url = "http://www.google.de";
String line = "1";

ProcessBuilder build = new ProcessBuilder("/Bcom/K-Meleon/k-meleon", url);
Process p = build.start();

BufferedReader stdin = new BufferedReader(new InputStreamReader(p.getInputStream()));

p.waitFor();
while((line = stdin.readLine()) != null)
{
System.out.println(line);
}

}
}
[/Java]

was stimmt daran nicht ??
 

schlingel

Gesperrter Benutzer
Höchstwahrscheinlich gibt der k-melon nix auf der Konsole aus. Aber diesen Input frägst du ab. Probier anstatt k-meleon Tools wie wget oder lynx.
 
G

Gerry67

Gast
ich bekomm Wget und Lynx leider nicht zum laufen (Vista) da blinkt nur einmal kurz das CMD-Feld auf und das wars.
Aber geben denn nur Programme die in dem CMD-Feld etwas aus ??

Danke
 

Stroker89

Bekanntes Mitglied
Hast du dich schonmal mit HTML-Parsern beschäftigt? Damit kannst du HTML-Seiten auslesen.
Meine empfehlung wäre hier Jericho. Ist super simpel und es sind auch schöne Beispiele dabei.
Der kann auch schlecht formatiertes HTML lesen :)

Gruß
 
G

Gerry67

Gast
das eigentlich genau was ich brauche aber das Jericho kann ja auch nichts aus einem Browser aulesen !!
Aber ich muss ja erstmal mit nem Browser den Link öffnen um weitergeleitet zuwerden !
 

schlingel

Gesperrter Benutzer
Hallo, Konsolen-Browser - wie der Name andeutet - laufen komplett in der Konsole. Wenn du das Ding jetzt nur aufrufst, popt natürlich nur kurz eine Meldung auf das eine URL fehlt oder sowas und dann beendet sich das Program wieder.

Also schau einfach einmal nach wie die Tools handzuhaben sind. Z.B.: in der Konsole (cmd.exe) rufst du das Program auf.

Was die Kollegen mit dem HTML-Parser meinen ist folgendes: Du sollt keinen Browser fernsteuern sondern dir selbst ein Tool schreiben, dass das HTML parsed und sich wie ein Browser verhält. Das wurde schon ca. 100 Mal gesagt aber da du das stoisch zu ignorieren weißt hab ich's aufgegeben dich darauf hinzuweisen ;)

Edit: Typo ausgebessert
 
Zuletzt bearbeitet:

Stroker89

Bekanntes Mitglied
Schade, dass manche Leute so beratungsresistent sein können, obwohl du die Lösung doch auf der Hand liegt und noch dazu nicht sonderlich kompliziert ist. :(

Wie gesagt, schau dir die Samples von Jericho an, damit sollte alles klar sein!

Gruß
 
N

nchmal

Gast
Es ist leider so, wie schlingel bereits schreibt. Je mehr Antworten man hier liest, je mehr wird man missmutiger und wird es auch schwieriger werden, für dich hilfreiche Antworten zu geben. du müsstet dir netzwerkgrundlagen, schichten, protokolle und html+js grundlagen aneignen sowie java io+net. das kan dauern.
 
G

Gerry67

Gast
ja wenn man hier also was nicht versteht ist man also beratungsrestistent ... ok ?!

Irgend jemand hatte hier in dem Thread mal geschrieben, das das nicht so einfach ist sich über Java weiterleiten zu lassen und genau darum geht es ....

wie man die Seite ausliest ist gar kein Problem.

also dacht ich wäre es das einfachste den Link mit nem Browser aufzurufen und die Seite DANN auszulesen ...
 
N

nchmal

Gast
warum bedienst du den browser nicht einfach normal wie jeder andere auch? der implementiert schließlich ein "weiterleitungsverhalten" korrekt.
 
G

Gerry67

Gast
ich bin doch nochmal auf die Variante mit wget zurückgekommen, also damit die seite downloaden und dann auslesen.

nur wenn ich damit den Link aufrufe gibts ein Problem, weil dann kommt wie ne Endlosschleife:

ich rufe auf : xxxx.de
dann kommt : 301 Moved Permanently -> xxxx.de/startseite
Moved Permanently -> xxxx.de/startseite/startseite
Moved Permanently -> xxxx.de/startseite/startseite/startseite
usw usw

ach und wenn dann ca 100-200 mal startseite in dem Link ist ist dann Schluss und es kommt 403 Forbidden.

weiß jmd wie man das unterbinden kann ??
 
G

Gerry67

Gast
ALSO :

ich hab es hin bekommen ...

hab ne ältere Version von Wget genommen, damit gings letztendlich auch

mit Aktivierten Cookies und Referer werd ich auch weitergeleitet, was ich meinte.

also wird jetzt die Seite gedownloaded und dann ausgelesen.
 
N

nchmal

Gast
vielleicht wurden ja vorkehrungsmaßnahmen getroffen, gerade das zu verhindern. plausibel wäre es
 

Ähnliche Java Themen

Neue Themen


Oben