POST Daten über Proxy

kevkev

Erfahrenes Mitglied
Hallo,

Ich habe Hier 2 Funktionen die wirklich gut funktionieren:
PHP:
function proxy_url($proxy_url)
{
   $proxy_name = '80.53.109.118';
   $proxy_port = 80;
   $proxy_cont = '';

   $proxy_fp = fsockopen($proxy_name, $proxy_port);
   if (!$proxy_fp)    {return false;}
   fputs($proxy_fp, "GET $proxy_url HTTP/1.0\r\nHost: $proxy_name\r\n\r\n");
   while(!feof($proxy_fp)) {$proxy_cont .= fread($proxy_fp,4096);}
   fclose($proxy_fp);
   $proxy_cont = substr($proxy_cont, strpos($proxy_cont,"\r\n\r\n")+4);
   return $proxy_cont;
} 

function PostToHost($host, $path, $referer, $data_to_send) {
  $fp = fsockopen($host, 80);
  fputs($fp, "POST $path HTTP/1.1\r\n");
  fputs($fp, "Host: $host\r\n");
  fputs($fp, "Referer: $referer\r\n");
  fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
  fputs($fp, "Content-length: ". strlen($data_to_send) ."\r\n");
  fputs($fp, "Connection: close\r\n\r\n");
  fputs($fp, $data_to_send);
  while(!feof($fp)) {
      $res .= fgets($fp, 128);
  }
  fclose($fp);

  return $res;
}

//z.b.:
$data = "irgendwas=irgendwas&irgendwas=irgendwas";

	$x = PostToHost(
	              "google.de",
	              "/index.html",
	              "http://google.de",
	              $data
	);

So, der Proxy geht wunderbar und die PostToHost-Funktion geht auch wunderbar.

Nun, meine frage:
Wie bekomme Ich es hin, POST Daten wie bei der Funktion "PostToHost" über einen Proxy zu senden?

Ich habe ein wenig damit rumgespielt, aber Ich habe es nicht geschafft, das die POST Daten ankommen.

Kann mir jemand helfen?

Gruß Kevin
 
So, habs doch hinbekommen :):

PHP:
function PostToHostWithProxy($host, $path, $referer, $data_to_send, $proxy=false, $proxy_port=false) {

	if (!isset($proxy) AND !isset($proxy_port)) {
		    $fp = fsockopen($host, 80);
		  	fputs($fp, "POST $path HTTP/1.1\r\n");
		  	fputs($fp, "Host: $host\r\n"); 
	} else {
			$fp = fsockopen($proxy, $proxy_port);
		  	fputs($fp, "POST http://$host$path HTTP/1.1\r\n");
		  	fputs($fp, "Host: $proxy\r\n");
	}
	
	  fputs($fp, "Referer: $referer\r\n");
	  fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
	  fputs($fp, "Content-length: ". strlen($data_to_send) ."\r\n");
	  fputs($fp, "Connection: close\r\n\r\n");
	  fputs($fp, $data_to_send);
	  while(!feof($fp)) {
	      $res .= fgets($fp, 128);
	  }
	  fclose($fp);
	
	  return $res;
}

Sollte kein Proxy vorhanden sein, wird einfach ohne Proxy weitergearbeitet ^^.

gruß kevin
 

Neue Beiträge

Zurück