egon223: fsockopen durch proxy tunneln

hallo,
ich habe ein problem und zwar hab ich einen apache server auf einem firmenrechner laufen, dieser muss jedoch um ins internet zu gelanden durch einen internen proxyserver, bei dem user und passwort erforderlich sind. wie kann ich jetzt eine html seite im klartext herunterladen? kann
mir jemand ein beispielscript posten??

gruss egon

  1. Halihallo egon223

    ich habe ein problem und zwar hab ich einen apache server auf einem firmenrechner laufen, dieser muss jedoch um ins internet zu gelanden durch einen internen proxyserver, bei dem user und passwort erforderlich sind. wie kann ich jetzt eine html seite im klartext herunterladen?

    Wer muss über Proxy ins Internet? - Du (der Client) oder der Server?
    Wenn Du über den Proxy ins Netz musst, so stelle über PHP einfach
    eine Verbindung mit dem Proxy statt Webserver her.
    Wenn der Apache über Proxy ins Netz geht (was ich mir nicht
    vorstelle, denn sowas hab ich noch nicht gesehen! - Du hast dich
    aller Wahrscheinlichkeit nach falsch ausgedrückt), so kümmert dich
    das als Endempfänger wenig.

    User und Passwort beim Proxy... lies:
    http://rfc.sunsite.dk/rfc/rfc2617.html
    da steht alles, was du in diesem Zusammenhang wissen musst drin.

    Viele Grüsse

    Philipp

  2. Hallo egon,

    ich habe ein problem und zwar hab ich einen apache server auf einem firmenrechner laufen, dieser muss jedoch um ins internet zu gelanden durch einen internen proxyserver, bei dem user und passwort erforderlich sind. wie kann ich jetzt eine html seite im klartext herunterladen? kann
    mir jemand ein beispielscript posten??

    Das steht in den User-Kommentaren. Such mal auf http://www.php.net/manual/en/function.fsockopen.php nach »Sherif Gayed«.

    Schöne Grüße,

    Johannes

    --
    ss:| zu:) ls:[ fo:) de:] va:) ch:) n4:| rl:) br:< js:| ie:{ fl:( mo:}
    1. Halihallo Johannes

      Das steht in den User-Kommentaren. Such mal auf http://www.php.net/manual/en/function.fsockopen.php nach »Sherif Gayed«.

      Oha. Erstens geht er von einem Proxy ohne Authentifizierung aus,
      zweitens ist die Implementierung IMO fehlerhaft:

      Aus RFC 2616:
      <cite>
         1. If Request-URI is an absoluteURI, the host is part of the
           Request-URI. Any Host header field value in the request MUST be
           ignored.

      2. If the Request-URI is not an absoluteURI, and the request includes
           a Host header field, the host is determined by the Host header
           field value.
      </cite>

      und

      <cite>
      A "transparent proxy" is a proxy that does not modify the request or
      response beyond what is required for proxy authentication and
      identification. A "non-transparent proxy" is a proxy that modifies
      the request or response in order to provide some added service to
      the user agent, such as group annotation services, media type
      transformation, protocol reduction, or anonymity filtering.
      </cite>

      Der Proxy hat selber überhaupt nichts mit dem Host-Header zu tun. Er
      leitet diesen nur weiter. Der Proxy erkennt seinerseits den Ziel-
      Rechner wahlweise über die absolute URI (falls vorhanden), oder dem
      Host-Header (welcher im Beispiel falsch ist, denn er MUSS dem Ziel-
      Rechner entsprechen, falls keine absolute URI vorliegt).

      Also: Der HTTP-Request als solcher ändert bei einem Proxy ohne
      Authentifizierung überhaupt nicht (oder muss nicht). Der Client muss
      einfach den Request nicht an den Ziel-Server, sondern an den Proxy
      senden. Bei Proxies mit Authentifizierung kommt ein Proxy-
      Authenticate-Header hinzu.

      Das Fakt dass sein Beispiel funktioniert, basiert alleine auf der
      Tatsache, dass der Server das Host-Headerfield ignorieren MUSS, wenn
      eine Absolute URL im Request gesendet wird.

      Viele Grüsse

      Philipp

      1. Hallo Philipp,

        Oha. Erstens geht er von einem Proxy ohne Authentifizierung aus,
        zweitens ist die Implementierung IMO fehlerhaft:

        Hm, scheint so. Ich hatte mir den Eintrag auch nicht näher angesehen, sondern nur mal geguckt, ob ich nicht im Manual was dazu finde.

        Schöne Grüße,

        Johannes

        --
        ss:| zu:) ls:[ fo:) de:] va:) ch:) n4:| rl:) br:< js:| ie:{ fl:( mo:}
      2. Halihallo, dies zur allgemeinen Kenntnisnahme ;-)

        Das Fakt dass sein Beispiel funktioniert, basiert alleine auf der
        Tatsache, dass der Server das Host-Headerfield ignorieren MUSS, wenn
        eine Absolute URL im Request gesendet wird.

        BTW. Meinen Tests zur Folge unterstützt http://www.boa.org
        dieses absolute URI-Schema nicht. Dort muss eine relative URL im
        Request stehen und dadurch wird der Host-Header unabdingbar.

        IMO alle Browser senden stets relative URL's mit Header-Feld. Mit
        anderen Worten: Wenn PHP als HTTP-Client eingesetzt werden soll,
        sollte man sich relativen URL's im GET/POST/... Header und einem
        entsprechend gesetzten Host-Feld bemühen.

        @Johannes: Es war ja Sherif's Irrtum :-)

        Viele Grüsse

        Philipp