本人不才,当急之下要修改一个图片采集函数功能,要添加伪referer设置,以下是图片采集函数
// Function: 获取远程图片并把它保存到本地
// 变量说明:
// $url 是远程图片的完整URL地址,不能为空。
// $filename 是可选变量: 如果为空,本地文件名将基于时间和日期
// 自动生成. function GrabImage($url,$filename="") {
if($url==""):return false;endif; if($filename=="") {
$ext=strrchr($url,".");
if($ext!=".gif" && $ext!=".jpg"):return false;endif;
$filename=date("dMYHis").$ext;
} ob_start();
readfile($url);
$img = ob_get_contents();
ob_end_clean();
$size = strlen($img); $fp2=@fopen($filename, "a");
fwrite($fp2,$img);
fclose($fp2); return $filename;
}
如何修改此函数,让它具有设置referer的功能?
// Function: 获取远程图片并把它保存到本地
// 变量说明:
// $url 是远程图片的完整URL地址,不能为空。
// $filename 是可选变量: 如果为空,本地文件名将基于时间和日期
// 自动生成. function GrabImage($url,$filename="") {
if($url==""):return false;endif; if($filename=="") {
$ext=strrchr($url,".");
if($ext!=".gif" && $ext!=".jpg"):return false;endif;
$filename=date("dMYHis").$ext;
} ob_start();
readfile($url);
$img = ob_get_contents();
ob_end_clean();
$size = strlen($img); $fp2=@fopen($filename, "a");
fwrite($fp2,$img);
fclose($fp2); return $filename;
}
如何修改此函数,让它具有设置referer的功能?
curl_setopt($ch, CURLOPT_URL, $url);//这是目标地址
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, $referer);//这里伪造
$data = curl_exec($ch);
curl_close($ch);
echo $data;
$opts = array(
'http' => array(
'method' => "GET",
'header' => "Referer: www.abc.com\r\n",
)
);$context = stream_context_create($opts);$file = file_get_contents('http://www.abc.com/test.jpg', false, $context);
$out .= "Host: $host\r\n";
$out .= "Referer: $referer\r\n"; //这里伪造
$out .= "Connection: Close\r\n\r\n";
$opts = array(
'http' => array('header' => "Referer: $url\r\n")
);
$context = stream_context_create($opts);
$file = file_get_contents($url, false, $context);
if ($file === false)
return false; return file_put_contents($pathname, $file);
}