Как прокси другую страницу в PHP - PullRequest
9 голосов
/ 21 июня 2011

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

Ответы [ 3 ]

12 голосов
/ 21 июня 2011

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

EDIT:

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

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

function get_proxy_site_page( $url )
{
    $options = [
        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 для прокси страницы.

5 голосов
/ 21 июня 2011

Вы можете использовать функции 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);
0 голосов
/ 21 июня 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...