Как проксировать другую страницу в PHP

Я ищу самый быстрый и простой способ проксирования страницы в PHP. Я не хочу, чтобы пользователь перенаправлялся, я просто хочу, чтобы мой скрипт возвращал один и тот же контент, код ответа и заголовки в качестве другого удаленного URL-адреса.

echo file_get_contents('proxypage'); Будет ли это работать?

РЕДАКТИРОВАТЬ:

Первый ответ был немного коротким, и я не думаю, что он будет обрабатывать заголовки, как вам хотелось бы.

Однако вы также можете это сделать:

 function get_proxy_site_page( $url ) { $options = array( CURLOPT_RETURNTRANSFER => true, // return web page CURLOPT_HEADER => true, // return headers CURLOPT_FOLLOWLOCATION => true, // follow redirects CURLOPT_ENCODING => "", // handle all encodings CURLOPT_AUTOREFERER => true, // set referer on redirect CURLOPT_CONNECTTIMEOUT => 120, // timeout on connect CURLOPT_TIMEOUT => 120, // timeout on response CURLOPT_MAXREDIRS => 10, // stop after 10 redirects ); $ch = curl_init( $url ); curl_setopt_array( $ch, $options ); $remoteSite = curl_exec( $ch ); $header = curl_getinfo( $ch ); curl_close( $ch ); $header['content'] = $remoteSite; return $header; } 

Это вернет вам массив, содержащий большую информацию на удаленной странице. $header['content'] будет содержать как контент веб-сайта, так и заголовки, $header[header_size] будет содержать длину этого заголовка, чтобы вы могли использовать substr для их разделения.

Тогда это просто вопрос использования echo и header для прокси-страницы.

Вы можете использовать функции PHP cURL для достижения этой функциональности:

http://www.php.net/curl

 // create a new cURL resource $ch = curl_init(); // set URL and other appropriate options curl_setopt($ch, CURLOPT_URL, "http://www.example.com/"); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // grab URL and pass it to the browser $urlContent = curl_exec($ch); 

С этого момента вы получите информацию заголовка ответа, используя http://www.php.net/curl-getinfo . (Есть несколько значений, которые вы можете захватить, все перечисленные в документации).

 // Check if any error occured if(!curl_errno($ch)) { $info = curl_getinfo($ch); header('Content-type: '.$info['content_type']); echo $urlContent; } 

Обязательно закройте ручку cURL.

 // close cURL resource, and free up system resources curl_close($ch); 

Вы можете получить html следующей страницы с завитком, а затем повторить ответ.