Andreas: Von wem war heir nochmal der "PERL-Browser"

hallo!

Leider finde ich nichts im Archiv, die Suche hängt auch ziemlich zur Zeit, aber wer war das noch, der einen  - keinen richtigen Browser, aber halt ein PERL-Script geschrieben hat, welches den gesamten Header-verkehr zwischen Browser und Server anzeigt? Wo finde ich das Teil nochmal, ist nämlich manchmal ganz praktisch. Kann man das Script evtl. bekommen um es nicht immer suchen zu müssen? ;-)
Irgendwann hatte ich das mal gebookmarked, aber den Eintrag finde ich nicht mehr :-(
War jedenfalls von einem der Stammposter hier.

Viele Grüße
Andreas

  1. Hi Andreas,

    ... aber wer war das noch, der einen  - keinen richtigen Browser, aber halt ein PERL-Script geschrieben hat, welches den gesamten Header-verkehr zwischen Browser und Server anzeigt?

    das stammt von Michael Schröpl.

    Wo finde ich das Teil nochmal, ist nämlich manchmal ganz praktisch.

    http://www.schroepl.net/cgi-bin/http_trace.pl

    LG Orlando

    --
    SELF-TREFFEN 2002
    http://www.rtbg.de/selftreffen/
    http://www.megpalffy.org/temp/penneninhh.html

    1. Hallo!

      das stammt von Michael Schröpl.

      stimmt

      Wo finde ich das Teil nochmal, ist nämlich manchmal ganz praktisch.

      http://www.schroepl.net/cgi-bin/http_trace.pl

      genau das meinte ich. Hab gerade folgendes porbiert:
      Ich habe ein html-Formular, welche sie Daten per POST übermittelt. Als action habe ich dieses Script eingegeben. Warum stehen jetzt nicht die POST-Daten im Header?

      Habe auch das andere Script welches ich im Archiv gefunden hatte probiert: http://www.schroepl.net/cgi-bin/env.pl Da szeht auch  nichts davon. Warum?

      Viele Grüße
      Andreas

      1. Hallo,

        genau das meinte ich. Hab gerade folgendes porbiert:
        Ich habe ein html-Formular, welche sie Daten per POST
        übermittelt. Als action habe ich dieses Script eingegeben.
        Warum stehen jetzt nicht die POST-Daten im Header?

        Weil die POST-Daten nicht im Header, sondern im Body
        uebermittelt werden :) Beispiel:

        POST /cgi-bin/post.pl HTTP/1.0
        User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; de-AT; rv:1.0.0) Gecko/20020712
        Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,text/css,*/*;q=0.1
        Connection: close
        Accept-Language: de, en;q=0.50
        Cache-Control: max-age=259200
        Accept-Encoding: identity,gzip,deflate
        Accept-Charset: ISO-8859-1, utf-8;q=0.66, *;q=0.66
        X-Forwarded-For: unknown, 213.7.223.64
        Host: www.schroepl.net
        Via: 1.0 develop.defunced.de:3128 (Squid/2.4.STABLE7)
        Content-Length: 38

        field1=value&field2=value&field3=value

        Gruesse,
         CK

        1. Moin!

          Weil die POST-Daten nicht im Header, sondern im Body
          uebermittelt werden :) Beispiel:

          Oh! Das heißt GET und POST unterscheiden sich hauptsächlich dadurch, das nbei Post ein Body übermittelt wird, bei GET nicht? Wußte ich nicht. Ich dachte das wäre alles im Header, nur an anderer Stelle, einmal direkt im Request und einmal "woanders" ;-)

          Kennst Du zufällig ein Script welches mit das komplett anzeigt? Hab jetzt keine große Lust ein eigenes zu schreiben ;-)

          Außerdem kenne ich in PHP keine Möglichkeit wie das geht! Ich kann zwar mit fsockopen()... selbst eine POST_Verindung herstellen, aber wie ich einfach den kompletten Header und Body eines HTTP-Requests ausgebe weiß ich nicht. Wahrscheinlich ist das auch gar nicht so schwer, ich komme ja recht einfach an alle möglichen Umgebungsvariablen, auch alle POST-Variablen, aber das ist es nicht was ich will. Kann man den Request nicht einfach mal in seiner Rohfassung anzeigen? Komplett mit body? Das was ich in PHP habe ist immer schon "bearbeitet" bzw. auf 1000 Variablen verteilt. Nur den ganz gewöhnlichen Request, geht das nicht?

          Grüße
          Andreas

          1. Moin!

            Weil die POST-Daten nicht im Header, sondern im Body
            uebermittelt werden :) Beispiel:

            Oh! Das heißt GET und POST unterscheiden sich hauptsächlich dadurch, das nbei Post ein Body übermittelt wird, bei GET nicht? Wußte ich nicht. Ich dachte das wäre alles im Header, nur an anderer Stelle, einmal direkt im Request und einmal "woanders" ;-)

            Kennst Du zufällig ein Script welches mit das komplett anzeigt? Hab jetzt keine große Lust ein eigenes zu schreiben ;-)

            Außerdem kenne ich in PHP keine Möglichkeit wie das geht! Ich kann zwar mit fsockopen()... selbst eine POST_Verindung herstellen, aber wie ich einfach den kompletten Header und Body eines HTTP-Requests ausgebe weiß ich nicht. Wahrscheinlich ist das auch gar nicht so schwer, ich komme ja recht einfach an alle möglichen Umgebungsvariablen, auch alle POST-Variablen, aber das ist es nicht was ich will. Kann man den Request nicht einfach mal in seiner Rohfassung anzeigen? Komplett mit body? Das was ich in PHP habe ist immer schon "bearbeitet" bzw. auf 1000 Variablen verteilt. Nur den ganz gewöhnlichen Request, geht das nicht?

            Grüße
            Andreas

            1. Hallo nochmal!

              sorry, das letzte Posting war aus Versehen;-)

              Ich will lediglich den POST Header und Body anzeigen, den der Browser abgesendet hat, ich weiß das ich alle Angaben in allen möglichen Umgebungsvariablen stehen habe, aber es muß doch anders möglich sein einfach den kompletten Request auszugeben, oder? Mit getallheaders() soll das ja gehen, aber leider nur in der Modul-Version. Gibt es sonst noch eine Möglichkeit?
              Oder kennt jemand ein Script welches die Umgebungsvariablen wieder zurück in den Header "verwandelt"?
              Oder "wenigstens" ein PERL-Script welches das macht, wahrscheinlich geht das da mal wieder viel einfacher?

              Viele Grüße
              Andreas

              1. Moin,

                Ich will lediglich den POST Header und Body anzeigen, den der Browser abgesendet hat

                Wenn es dir nur darum geht, ist der Netzwerksniffer deiner Wahl sicherlich das geeigneteste Werkzeug. Ethereal zum Beispiel ist recht einfach und gibt es auch für Windows[1][2].

                [1] Ethereal gibt es hier: http://www.ethereal.com/distribution/win32/
                [2] zusätzlich noch winpcap:
                     http://netgroup-serv.polito.it/winpcap/install/default.htm

                --
                Henryk Plötz
                Grüße aus Berlin

          2. Hi Andreas,

            Oh! Das heißt GET und POST unterscheiden sich hauptsächlich dadurch, das
            nbei Post ein Body übermittelt wird, bei GET nicht? Wußte ich nicht. Ich
            dachte das wäre alles im Header, nur an anderer Stelle, einmal direkt im
            Request und einmal "woanders" ;-)

            Eben. ;-)

            Kennst Du zufällig ein Script welches mit das komplett anzeigt? Hab jetzt
            keine große Lust ein eigenes zu schreiben ;-)

            Was genau tut mein Trace nicht zu Deiner Zufriedenheit?

            Außerdem kenne ich in PHP keine Möglichkeit wie das geht! Ich kann
            zwar mit fsockopen()... selbst eine POST_Verindung herstellen, aber
            wie ich einfach den kompletten Header und Body eines HTTP-Requests
            ausgebe weiß ich nicht.

            Du schreibst zuerst die Header, dann eine Leerzeile und zuletzt den Body
            in die socket - das war's. Auf der anderen Seite liest das jemand, trennt
            Header und Body an der ersten Leerzeile voneinander, und fertig.

            Kann man den Request nicht einfach mal in seiner Rohfassung anzeigen?

            Genau das versuche ich doch ...

            Viele Grüße
                  Michael

            1. Hi Michael!

              Kennst Du zufällig ein Script welches mit das komplett anzeigt? Hab jetzt
              keine große Lust ein eigenes zu schreiben ;-)

              Was genau tut mein Trace nicht zu Deiner Zufriedenheit?

              es zeigt mir nicht den Body-Bereich des POST Requests an, den mein Browser dahin sendet! Ich habe ein Formular und sende daraus die Daten per POST an Dein Script. Da steht alles außer den POST-Daten.

              OK, das könnte ich jetzt selbst einfügen und an den "echten" server schicken, aber im prinzip ging es mir gerade darum zu sehen wie genau der POST Request mit all seinen Daten aufgebaut ist, da ich diesen serverseitig simulieren wollte. Dafür habe ich halt ein Script gesucht, welches mit ALLES anzeigt, so wie es kommt. Verstehe nur nicht das das so ein Problem ist, auch in PHP ist das in der CGI-Version zwar nicht unmöglich, aber man darf dfas ganze wieder aus allen möglichen Umgebungs-Variablen/arrays auseinander friemeln!

              Außerdem kenne ich in PHP keine Möglichkeit wie das geht! Ich kann
              zwar mit fsockopen()... selbst eine POST_Verindung herstellen, aber
              wie ich einfach den kompletten Header und Body eines HTTP-Requests
              ausgebe weiß ich nicht.

              Du schreibst zuerst die Header, dann eine Leerzeile und zuletzt den Body
              in die socket - das war's. Auf der anderen Seite liest das jemand, trennt
              Header und Body an der ersten Leerzeile voneinander, und fertig.

              Aber warum macht Dein Script das nicht? Das Zeigt die POST-Daten schlichtweg nicht an. War das Absicht da Du nur den Header selbst haben willst? Und wie machst Du das grob, gibt es dafür eien PERL-Funktion bzw. stteht der Header irgendwie direkt zur Verfügung, oder hast Du das auch "von Hand" auseinander gefriemelt?

              Kann man den Request nicht einfach mal in seiner Rohfassung anzeigen?

              Genau das versuche ich doch ...

              Aber was ist mit POST-Daten? Gehören Die für Dich nicht zum Requestm oder liegt der Fehler gar bei mir?

              So hab ichs probiert, mit GET sind Daten da, so nicht.

              <html>
              <head>
                <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
              </head>
              <body>
                <form method="POST" action="http://www.schroepl.net/cgi-bin/http_trace.pl">
                  <input type="text" name="testfield">
                  <input type="submit" name="Abschicken" value="Abschicken">
                </form>
              </body>
              </html>

              Verstehe das jetzt bitte nicht falsch, das ist keine Kritik, nur habe ich andere/weitere Anforderungen ;-)

              Sonst ist es perfekt zum testen!

              Grüße
              Andreas

              1. Hu Andreas,

                Was genau tut mein Trace nicht zu Deiner Zufriedenheit?
                es zeigt mir nicht den Body-Bereich des POST Requests an, den mein
                Browser dahin sendet! Ich habe ein Formular und sende daraus die Daten
                per POST an Dein Script. Da steht alles außer den POST-Daten.

                In der Tat mag mein Skript nicht via POST aufgerufen werden - auf
                diese Idee bin ich einfach nicht gekommen.

                Aber Du kannst durchaus Deinen Ziel-URL mit meinem Skript via POST
                ansprechen und ihm dennoch Parameter übergeben: Hänge sie an den
                Query-String des zu tracenden URL dran, so wie Du das mit GET auch
                tun würdest! Mein Skript erkennt, daß Du POST als Methode ausgewählt
                hast und sendet diese Daten im Body an Deine Ziel-Adresse.
                Das erspart mir, einen separaten Eingabe-Bereich für diesen Body im
                Formular anzubieten. (Es limitiert allerdings auch die Body-Daten auf
                solche, die Du meinem Skript via Query-String übergeben kannst ...)

                Viele Grüße
                      Michael

          3. Moin,

            Außerdem kenne ich in PHP keine Möglichkeit wie das geht! Ich kann zwar mit fsockopen()... selbst eine POST_Verindung herstellen, aber wie ich einfach den kompletten Header und Body eines HTTP-Requests ausgebe weiß ich nicht.

            Ich fürchte das geht in PHP nicht. Wenn der PHP-Interpreter anfängt das Skript auszuführen, ist bereits alles zu spät und der gesamte Request eingelesen. Normale CGI-Skripte würden die POST-Header im Environment kriegen und den Body auf der Standardeingabe. Du hast nun entweder die Möglichkeit so ein CGI-Skript zu nehmen, etwa mit Perl oder wenn es unbedingt PHP sein soll, kannst du auch einen Webserver in PHP schreiben, der dann einfach auf einem anderen Port lauscht. Der kriegt dann Header und Body auf seiner Eingabe und kann damit anstellen was er will. Ich glaube ich habe den Code dazu schonmal im Forum gepostet.

            --
            Henryk Plötz
            Grüße aus Berlin

  2. Hi Andreas,

    ein PERL-Script geschrieben hat, welches den gesamten
    Header-verkehr zwischen Browser und Server anzeigt?
    Wo finde ich das Teil nochmal

    nachdem mich das gestern ein Kollege im Büro auch
    gefragt hat ;-), habe ich wenigstens mal einen Link
    dazu auf die Startseite meiner Homepage gesetzt.

    Eine eigene Projektseite mit Google-Eintrag oder gar
    ein Download-Paket gibt's halt noch nicht ... aber
    statt dessen könnte man das Teil vielleicht in
       http://aktuell.de.selfhtml.org/sonst/
    integrieren - oder wenigstens dort einen Link darauf
    setzen?

    Viele Grüße
          Michael