Horst Nogajski: Proxy mit Authentifizierung, aber Script passiert ungehindert

Hallo zusammen,

ich habe ein kleines Verständnisproblem mit folgender Tatsache:

Ich habe lokal einen Proxyserver installiert und den mal so eingestellt das man ohne user-pass Anmeldung keine Verbindung nach draussen bekommt. (Das gilt für alle Protokolle wie HTTP, FTP, socks5, Mail)
Auf einem lokalen Apachen habe ich ein php-Script gestartet das mit fsockopen und HTTP-Headers eine Verbindung zu einem Dokument im WWW herstellt und anschliesend die Antworten ausgibt. (Für alle dies interessiert hänge ich das Script mal hinten ans Posting)
Wenn ich die gleiche Adresse im Browser eingebe werde ich erst nach user und pass gefragt.
Wieso kann das php-Script einfach eine Verbindung mit dem Server herstellen?

ziemlich ratlos,
Horst

______ Attachment  ;) __________________

Script:
#========================================#

"http://x-dev.de" Code-Snippet

#========================================#

function phpLinkCheck($url, $r = FALSE)
{
  /*  Purpose: Check HTTP Links
   *  Usage:   $var = phpLinkCheck(absoluteURI)
   *           $var["Status-Code"] will return the HTTP status code
   *           (e.g. 200 or 404). In case of a 3xx code (redirection)
   *           $var["Location-Status-Code"] will contain the status
   *           code of the new loaction.
   *           See print_r($var) for the complete result
   *
   *  Author:  Johannes Froemter j-f@gmx.net
   *  Date:    2001-04-14
   *  Version: 0.1 (currently requires PHP4)
   */

$url = trim($url);
  if (!preg_match("=://=", $url)) $url = "http://$url";
  $url = parse_url($url);
  if (strtolower($url["scheme"]) != "http") return FALSE;

if (!isset($url["port"])) $url["port"] = 80;
  if (!isset($url["path"])) $url["path"] = "/";

$fp = fsockopen($url["host"], $url["port"], &$errno, &$errstr, 30);

if (!$fp) return FALSE;
  else
  {
    $head = "";
    $httpRequest = "HEAD ". $url["path"] ." HTTP/1.1\r\n"
                  ."Host: ". $url["host"] ."\r\n"
                  ."Connection: close\r\n\r\n";
    fputs($fp, $httpRequest);
    while(!feof($fp)) $head .= fgets($fp, 1024);
    fclose($fp);

preg_match("=^(HTTP/\d+.\d+) (\d{3}) ([^\r\n]*)=", $head, $matches);
    $http["Status-Line"] = $matches[0];
    $http["HTTP-Version"] = $matches[1];
    $http["Status-Code"] = $matches[2];
    $http["Reason-Phrase"] = $matches[3];

if ($r) return $http["Status-Code"];

$rclass = array("Informational", "Success",
                    "Redirection", "Client Error",
                    "Server Error");
    $http["Response-Class"] = $rclass[$http["Status-Code"][0] - 1];

preg_match_all("=^(.+): ([^\r\n]*)=m", $head, $matches, PREG_SET_ORDER);
    foreach($matches as $line) $http[$line[1]] = $line[2];

if ($http["Status-Code"][0] == 3)
      $http["Location-Status-Code"] = phpLinkCheck($http["Location"], TRUE);

return $http;
  }
}

Ausgabe:

(URL) http://www.nogajski.de/
(StatusCode) 200

Array
(
    [Status-Line] => HTTP/1.1 200 OK
    [HTTP-Version] => HTTP/1.1
    [Status-Code] => 200
    [Reason-Phrase] => OK
    [Response-Class] => Success
    [Date] => Thu, 18 Jul 2002 20:31:42 GMT
    [Server] => Apache/1.3.20 (Linux/SuSE) mod_ssl/2.8.4 PHP/4.0.6
    [Last-Modified] => Wed, 03 Jul 2002 12:31:10 GMT
    [Accept-Ranges] => bytes
    [Content-Length] => 883
    [Connection] => close
    [Content-Type] => text/html
)

  1. Hallo,

    [... Proxy ...]
    Auf einem lokalen Apachen habe ich ein php-Script
    gestartet das mit fsockopen und HTTP-Headers eine
    Verbindung zu einem Dokument im WWW herstellt und
    anschliesend die Antworten ausgibt.

    Du meinst, zu einem Server im Internet :)

    Wieso kann das php-Script einfach eine Verbindung mit dem
    Server herstellen?

    Benutzt dein Script denn auch die Proxy-Server? Oder
    connectierst du dich direkt mit dem Server?

    Gruesse,
     CK