Seite 1 von 1

WebView Uploadform Ausfüllen

Verfasst: 30. August 2009 20:24
von ouned
Hi!

Ich hab schonwieder eine Frage.^^

Ich versuche mit javascript die uploadform von imageshack.us auszufüllen, was aber nicht funktioniert aus Sicherheitsgründen. Weiß jemand ob ich diese Sperre umgehen kann?

QHttp usw. verstehe ich irgendwie nicht und ich finde auch keine guten Beispiele dazu :roll:

Gruß,
ouned

Verfasst: 30. August 2009 22:08
von upsala
Die lassen dich aus Sicherheitsgründen nicht auf Ihre Seite und wir sollen dir dabei helfen?

Verfasst: 30. August 2009 23:33
von ouned
du hast mich falsch verstanden^^

javascript erlaubt es allgemein nicht den text von "file" elementen zu editieren.

deshalb brauche ich eine alternative zu javascript zu diesem Zweck.

Verfasst: 31. August 2009 11:18
von RHBaum
imageshack.us liefert dir ne seite die nur aus eingebetteten JScript besteht.
Dein browser zeigt dir die dann direkt an.
Da der script interpreter teil der html render engine ist, oder die java runtime daraus direkt aufgerufen wird, wird dir Webkit von QT direkt nicht weiterhelfen.

was du aber machen kannst: du musst irgendwie an den quelltext kommen, bevor er zum browser, bzw deinem QWebview oder aehnlichem gelangt ..
dazu waer nen proxy ne gute alternative .... da koenntest die einfach das zeugs editieren, bevors beim browser ankommt.
richtig weiterhelfen taet dir das aber sicher ned, weil du trotzdem ned gut automatisieren kannst.

ansonsten muesstest in deinem programm die url nehmen, und selber interpretieren, dazu brauchst die halbe javasript runtime nachprogrammiert ^^ weiss ned obs da schon was "fertiges" in der richtugn gibt.

Warum ausgerechnet imageshack.us ???
fuer das geld fuer den premiumzugriff bei denen, mit dem auch "groessere dinge" machen koenntest, bekommst anderswo scho gbyte plattenplatz mit nem nutzbareren protokoll (ftp / webdav z.b.)

Oder willst du deren preismodell einfach nur untergraben ?
oder denen anderweitig schaden zufügen ? Du glaubst doch ned etwas das die "luecken" wenn du welche finden solltest, ned schliessen wuerden.

Sieh es einfach so, das was du da machen willst, wollen die nicht, das du es machst ... die wollen das du bezahlst fuer ^^

Ciao ...

Verfasst: 31. August 2009 11:45
von ouned
wieso bezahlen? Ich will doch nur n Bild hochladen :shock:

ja andere hoster haben genau das elber z.B. imagebanana :?

Verfasst: 31. August 2009 14:07
von RHBaum
Ja aber wenn ich hoster waere .... der anderen indirekt frei platz fuer bilder zur verfuegung stellt .... also indirekt nur, weil das ueber werbung bezahlst oder z.b. preisgabe persoenlicher daten , etc,
dann wuerd ich eben genau das verhindern, das leute ihre bilder automatisiert hoch oder runterladen ....
Was glaubst warum die sich die muehe machen, alles schoen in java scripts einzupacken, das das bild nie als url bekommst, sondern immer nur als seite, wo das bild irgendwo in script eingebettet ist ^^

sonst koennt ich gleich einfach den space da als riesen freestore platte ueber webdav zur verfuegung stellen .... da hat dann jeder die kontrolle drueber was er mit den daten anstellt, und fuer ne vernuenftige autorisation auf server seite langt webdav auch.

Zitat frei aus nem aktuellen deutschen Märchenfilm:

Alles hat seinen Preis auf dieser Welt !

Ok, hab mich grad kurz da etwas umgeschaut ... auf Werbung gehen die gar ned so.
um den "Dienst" "richtig" zu nutzen, bist schon angehalten, die 8$/Month version zu nutzen. Angeblich schalten sie dir dann auch features frei, um daten automatisiert ueber bitorrent oder aehnliches hochzuladen.
Wenn ich das richtig gelesen hab da ...

Ciao ...

Verfasst: 1. September 2009 00:27
von ouned
Es geht doch garnicht um imageshack. Ich habe es doch nur als Beispiel herausgepickt. Es geht schlicht und einfach draum ein solches Feld auszufüllen und abzuschicken:

Code: Alles auswählen

<input type="file" name="upload" id="upload"/>

Verfasst: 1. September 2009 09:44
von RHBaum
Und ich sag ja nur das es ned so einfach ist ^^

Problem ist imho ned so sehr, die daten da "auszufüllen", sondern einfach irgendwie dazwischen zu kommen.

wenn du nichts in nem fertigen Browserfesnter anzeigst, kannst natuerlich alles selber auswerten.
mit http und QHttp wirst dich da aber auseinander setzen muessen.
das sieht aber schwerer aus als es ist .....

umfangreicher wird es eher, die antworten vom server zu parsen und zu interpretieren ....

Ciao ...

Verfasst: 1. September 2009 23:36
von ouned
habe es jetzt mal so versucht:

Code: Alles auswählen

        QString boundary,data,crlf,fileByteSize;
        QByteArray dataToSend; // byte array to be sent in POST
        QFile *inputFile = new QFile(ui->lineEdit->text());
        QNetworkAccessManager manager;

        // data boundary declerations
        crlf=0x0d;
        crlf+=0x0a;
        boundary="-----------------------------7d935033608e2";

        data=boundary;
        data+="Content-Disposition: form-data; name=\"uploadedFile\"; filename=\"ContactList.jpg\";"+crlf;
        data+="Content-Type: image/jpg"+crlf+crlf+inputFile->readAll();
        data+=boundary;
        dataToSend=data.toAscii(); // convert data string to byte array for request

        // request init
        QNetworkRequest request(QUrl("http://ouned.ou.ohost.de/lol.php"));
        request.setRawHeader("Content-Type","multipart/form-data; boundary=\"-----------------------------7d935033608e2\"");
        request.setHeader(QNetworkRequest::ContentLengthHeader,dataToSend.size());
        QNetworkReply *reply = manager.post(request,dataToSend); // perform POST request
        QMessageBox::information(this, "lol", reply->readAll());
leider sendet es nichtmal ansatsweiße das file an den server

Verfasst: 2. September 2009 10:46
von RHBaum
wie schaut eigentlich der vorherige request vom server aus, sicher das der nen "richtigen" POST haben will, ned irgendwie die datei zerstueckelt durchs script gesteuert ?
Es nuetzt nix, dem server die datei zu schicken, wenn der gar ned bereit dafuer ist !

Bin mir ned ganz sicher, aber muessen bei POST die daten ned URL codiert sein ?
http://de.wikipedia.org/wiki/URL_Encoding
keine Ahnung ob das post() am NetworkAccessManager die daten schon convertiert. Wenn ja, brauchst du den zwischenschritt ueber das QByteArray ned zu gehen, sondern kannst das QFile (was ja nen QIODevice ist) direkt an das post mit übergeben.

Ciao ...