thrice: untersuchen eines frames mit fremden inhalt

hallo,

ist es möglich nachdem ich eine seite (von einem fremden server) von meinem server aus in ein frame geladen habe....(also mit einem formular:)

<form METHOD="GET" action="http://www.beispiel.de" target="frame1">
<input type="submit" name="do" value="get seite">
</form>

...ist es dann möglich den quelltext dieses frames in einer variable zu speichern oder zu untersuchen?oder gibt es eine möglichkeit in dem frame nach einem bestimmten textstring zu suchen?

gruß thrice

  1. einem fremden server

    meinst du einen entfernten server, wo du erlaubnis hast, dies zu tun oder einen fremden server (eines in der tat fremden anbieters), wo dir das nicht explizit erlaubt ist?

    auch wenn content-klau nicht explizit verboten ist, ist er dennoch nicht erlaubt, solange er nicht explizt erlaubt wurde

    ...ist es dann möglich den quelltext dieses frames in einer variable zu speichern oder zu untersuchen?oder gibt es eine möglichkeit in dem frame nach einem bestimmten textstring zu suchen?

    wenn sich der inhalt bereits im frame befindet kannst du mit javascript nicht darauf zugreifen - du müsstest den inhalt serverseitig auslesen und in ein frameset auf der selben domain platzieren, damit du per javascript drauf zugreifen kannst

    1. meinst du einen entfernten server, wo du erlaubnis hast, dies zu tun oder einen fremden server (eines in der tat fremden anbieters), wo dir das nicht explizit erlaubt ist?

      na zum beispiel is mein formualar(html dokument) auf nem funpic server und von dort aus sende ich ein formualr mit get was (was ich ja in nen frame lade) mit ner anfrage an meinetwegen http://forum.de.selfhtml.org...
      dann lade ich ja diese seite in ein frame...naja und jetzt wollt ich wissen ob ich entweder
      1. den (html)quelltext mir anschauen kann und damit weiterarbeiten kann oder
      2. ob ich zumindest in diesem frame nach nem bestimmten wort.also text string suchen kann...

      aber scheinbar ist dies nicht möglich oder täusch ich mich da?

      ps: danke für die schnelle antwort^

      1. aber scheinbar ist dies nicht möglich oder täusch ich mich da?

        ja, wie gesagt mit javascript nicht möglich (same origin policy)

        wenn du das ganze ordentlich machst (alles auf einem server) brauchst du a) keine frames und b) keine lästigen workarounds dafür

  2. Hallo,

    Es ist möglich.
    Das Stichwort dazu lautet Screen Scraping.

    Du solltest dir aber den ganzen Artikel durchlesen und darüber nachdenken wozu du den Inhalt eigendlich brauchst.

    Gruß,

    Fay

    1. Es ist möglich.
      Das Stichwort dazu lautet Screen Scraping.

      da muss ich dir widersprechend - es ist NICHT (auf keinen fall möglich) mit javascript auf einen anderen frame mit anderer herkunft zuzugreifen - ansonsten wäre phishing extrem einfach ;)

      1. Hallo,

        da muss ich dir widersprechend - es ist NICHT (auf keinen fall möglich) mit javascript auf einen anderen frame mit anderer herkunft zuzugreifen - ansonsten wäre phishing extrem einfach ;)

        Ich muss zugeben, ich hab es bisher noch nie auf einer homepage im Internet probiert,
        aber ich habe mir ein script gebastelt, das von der homepage eines webradiosenders die playliste extrahiert. (sitebargadget für vista, funktioniert aber auch wenn man die seite einfach so aufruft)
        und das funktioniert wunderbar ;)

        Gruß,

        Fay

        1. aber ich habe mir ein script gebastelt, das von der homepage eines webradiosenders die playliste extrahiert. (sitebargadget für vista, funktioniert aber auch wenn man die seite einfach so aufruft)
          und das funktioniert wunderbar ;)

          Gruß,

          Fay

          also ich habe nämlich vor bei einem browsergame,wenn ich eingeloggt bin von diesem informationen abzurufen zB wieviele rohstoffe ich habe und wieviele einheiten usw...damit ich das nich dauernd manuell eintragen muss.sowas wollte ich halt für den ganzen clan machen weil das alles sehr vereinfacht.und dazu brauch ich ja nur den quelltext bei dem ich mir dann die nötigen daten(text) herausziehe und weiterverarbeite...von dem eigenen rechner aus klappt das ja mit der ajax methode(http://developer.mozilla.org/De/AJAX/Getting_Started)aber sobald ich das halt auf einem server aufspiele und von dort aus versuche geht es anscheinend nicht wegen der policy...

          wenn dies denn gar nicht mit javascript zu realisieren ist,könnte mir dann vielleicht einer zeigen wie das mit php funktioniert ?oder einer anderen sprach^^

          danke euch schonmal für die hilfe bis jetzt ;)

          gruß thrice

          1. wenn dies denn gar nicht mit javascript zu realisieren ist,könnte mir dann vielleicht einer zeigen wie das mit php funktioniert ?oder einer anderen sprach^^

            etwas schwierig, du müsstest mit php das verhalten deines browsers simulieren (angefangen vom login, das akzeptieren eines login-cookies usw) wenn dann noch zwingend javascript erforderlich ist, kannst du dich beerdigen ;)

            curl könnte dich hier aber weiterbringen

          2. Hi,

            wenn dies denn gar nicht mit javascript zu realisieren ist,könnte mir dann vielleicht einer zeigen wie das mit php funktioniert ?

            mit file_get_contents() kannst Du Dir den Inhalt der übermittelten Resource holen - allerdings dürfte das bei Free-Hostern wie funpic nicht zugelassen sein.

            freundliche Grüße
            Ingo

        2. aber ich habe mir ein script gebastelt, das von der homepage eines webradiosenders die playliste extrahiert. (sitebargadget für vista, funktioniert aber auch wenn man die seite einfach so aufruft)
          und das funktioniert wunderbar ;)

          es ist ein unterschied, ob du den quelltext einer seite direkt ausliest oder versuchst von einem frame auf den anderen zuzugreifen

          1. es ist ein unterschied, ob du den quelltext einer seite direkt ausliest oder versuchst von einem frame auf den anderen zuzugreifen

            naja direkt würde glaube ich auch gehen!wie kann ich diesen denn direkt auslesen ?

            1. naja direkt würde glaube ich auch gehen!wie kann ich diesen denn direkt auslesen ?

              wie schon im anderen ast erwähnt, ist das ein sehr komplexes unterfange, da du in deinem browserspiel ja eingeloggt sein muss - du musst also das verhalten des browsers simulieren

              einfach irgend eine seite auslesen ist nicht das problem - sobald aber sichere protokolle wie https ins spiel kommen oder zur anzeige der daten bestimmte umstände erfüllt sein müssen (cookies, session, javascript) geht das nicht mehr (so einfach)

              in diesem fall hift dir, wie ich bereits sagte ggf curl weiter

              1. einfach irgend eine seite auslesen ist nicht das problem - sobald aber sichere protokolle wie https ins spiel kommen oder zur anzeige der daten bestimmte umstände erfüllt sein müssen (cookies, session, javascript) geht das nicht mehr (so einfach)

                also die session cookies müssen vorhanden sein und normale cookies sonst nix...das geht nur mit curl nicht mit php?
                daarf ich fragen wie?^

                1. also die session cookies müssen vorhanden sein und normale cookies sonst nix...das geht nur mit curl nicht mit php?

                  auch mit php lässt sich curl nutzen

                  daarf ich fragen wie?^

                  das ist etwas komplexer - du musst "nur" exakt das reproduzieren, was im browser passiert (http-anfragen und deren reaktionen drauf) wenn du dich einloggst - da mit das browsergame nicht merkt, dass du es nicht direkt mit einem browser aufrufst

                  wget ist auch eine möglichkeit, hier lassen sich cookies wesentlich leichter akzeptieren als mit curl

                  dabei hilft dir ggf das firefox-addon "tamper data" um sämtlich http-requests und responses zu protokollieren

                  prinzipielle vorgehensweise (wohlgemerkt führen diese dinge dazu, möglicherweise einen wirksamen bot-schutz zu umgehen und verstoßen gegen die nutzungsbedingungen deines browsergames):

                  • loginseite aufrufen und das dortige session-cookie akzeptieren
                  • eine zufallswartezeit, sagen wir 5 bis 10 sekunden und dann erst das login ausführen
                  • ein ggf gesendetes login-cookie akzeptieren
                  • der umleitung auf die spielseite folgen (was auch immer da passiert)
                  • sämtliche eingebettete inhalte die über interne scripte laufen aufrufen (werbescripte zb) um eine prüfung auf werbeblocker zu umgehen (werbeblocker sind von vielen browserspieleanbeitern untersagt, die leben davon)
                  • zufallzeit warten und den menüpunkt für deine übersichtsseite aufrufen
                  • wieder das erwartet vorgehen durchführen

                  ab diesem zeitpunkt hast du den quelltext, den du auswerten willst bereits

                  und nochmal:

                  • mit hoher wahrscheinlichkeit wird das gegen die nutzungsbedinungen verstoßen
                  • wenn du das tatsachlich machst, erleichterst du dir das spiel automatisiert (du bist also ein dreckiger cheater)
                  • dem spieleanbieter entgehen ggf. werbeeinnahmen, die sonst du deine anwesenheit generiert würden
                  • du wirst mit hoher wahrscheinlichkeit vom spiel ausgeschlossen, wenn dir irgendjemand auf die schliche kommt

                  also sag nicht, ich hätte dich nicht gewarnt

                  1. tamper data bestize ich schon ne weile,das is jut^^

                    und ich will bei den spiel ja nich bescheißen deswegen kann der ganze teil:

                    • loginseite aufrufen und das dortige session-cookie akzeptieren
                    • eine zufallswartezeit, sagen wir 5 bis 10 sekunden und dann erst das login ausführen
                    • ein ggf gesendetes login-cookie akzeptieren
                    • der umleitung auf die spielseite folgen (was auch immer da passiert)
                    • sämtliche eingebettete inhalte die über interne scripte laufen aufrufen (werbescripte zb) um eine prüfung auf werbeblocker zu umgehen (werbeblocker sind von vielen browserspieleanbeitern untersagt, die leben davon)

                    rauslassen.

                    ich will ja im prinzip nur die übersichtsseite abfragen.
                    sonst würde ich ja etwas bot ähnliches machen was ich sicher nicht will!
                    das problem...ich weiß nicht wie ich die cookies(session und weitere) mitschicken soll....

                    1. ich will ja im prinzip nur die übersichtsseite abfragen.
                      sonst würde ich ja etwas bot ähnliches machen was ich sicher nicht will!
                      das problem...ich weiß nicht wie ich die cookies(session und weitere) mitschicken soll....

                      wenn du dich einloggen musst, um die übersichtsseite zu sehen, kannst du den teil oben nicht weglassen (egal ob du einen echten benutzer simulierst oder nicht) - wenn du dich nicht einloggen musst, tut file_get_contents() genau das was du willst

                      1. hm also ich muss eingeloggt sein aber ich will mich nicht mit dem php script einloggen sondern per hand.also sagen wir mal ich ruf ganz normal im browser die seite auf und logge mich ein und danach geh ich auf meinen server und starte das skript.

                        aber ich denke mal dann stellt sich die frage woher das skript die cookies usw nimmt,weil die sind ja lokal auf meinem rechner...oder was meinst du ?

                        erstmal nochmal danke für deine "aufopferung"!!!^^

                        1. hm also ich muss eingeloggt sein aber ich will mich nicht mit dem php script einloggen sondern per hand.also sagen wir mal ich ruf ganz normal im browser die seite auf und logge mich ein und danach geh ich auf meinen server und starte das skript.

                          komplizierter gehts nicht?

                          aber ich denke mal dann stellt sich die frage woher das skript die cookies usw nimmt,weil die sind ja lokal auf meinem rechner...oder was meinst du ?

                          die müssen natürlich auf dem rechner liegen, auf dem der php-interpreter läuft und natürlich im benutzerverzeichnis des webserver-benutzers (auf einer linux/apache-kiste ist das meistens "www-data")

                          wie schon erwähnt ist die einfachere variante wahrscheinlich die wget-variante, damit dürftest du mit schätzugnsweise 2 bis 3 zeilen zum erfolg kommen

                          hier hält sogar die englische wikipedia alle nötigen infos dazu bereit http://en.wikipedia.org/wiki/Wget