我正在寻找用PHP代理页面的最快速最简单的方法。我不希望重定向用户,我只是希望我的脚本将相同的内容,响应代码和标题作为另一个远程URL返回。
答案 0 :(得分:12)
echo file_get_contents('proxypage');
那会有用吗?
修改强>
第一个答案有点短,我不相信它会按你的意愿处理标题。
但是你也可以这样做:
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
来代理页面。
答案 1 :(得分:5)
您可以使用PHP 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);
答案 2 :(得分:0)
您可以使用curl获取下一页的html,然后回显响应。