经过测试发现,之前写了2篇文章是教大家如何绕过防盗链图片的方法的,但是iframe的框架方法似乎不太兼容浏览器,用html5.qq.com的话又是只有部分网站可以,具体不知道是服务器环境原因还是什么原因有待考察。下面就叫大家用php写一个绕过的代码,你只需要把php上传到你的服务器,然后软件里设置.ini文件里添加配置项即可实现。
php代码如下,保存为image.php文件
/**
此程序作为绕过微信图片的防盗链机制,通过这个文件中转可以实现绕过。
文件名可随意修改,但在孤狼采集软件里,地址必须改为正确的名称。
原理就是伪造一个空的Referer来路可以绕过。从而使软件可以预览和下载微信的图片。
警告:删除本程序会导致软件无法预览和下载微信图片。
**/
function getRemoteFile($url, $refer = '') {
$option = array(
'http' => array(
'header' => "Referer:$refer")
);
$context = stream_context_create($option);
return file_get_contents($url, false, $context);
}
$url = $_GET['url'];
$url = addslashes($url);
$str = getRemoteFile($url);
header('content-type:image/jpg;');
echo $str;
?>
把以上代码存为php文件,然后上传到相应的服务器目录里,然后到软件设置选项里,勾选,并填入:
软件就会帮你把源码里的img src=的图片网址给替换成这个,http://www.domain.com/image.php?url=http://mmbiz.qpic.cn/mmbiz_jpg/ow6przZuPIFNYKqF4c7WnF5dwlZibpbsK2zYAsDHrTKOHM2T802JZiaI2xe33nc08iazDrXNMibejNb9UuvLB86LzQ/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1
其中的原理就是,把图片带空来路加载出来输出到页面上。以上代码才疏学浅,如果有更好的方法,希望会php的朋友可以指教一下。
第二种方法代码:
header("Content-Type:image/png");
$string = $_SERVER["QUERY_STRING"];
/*换一张空白图片,如果遇到错误,需要用上*/
$im = imagecreate(600, 300);
$black = imagecolorallocate($im, 100, 100, 100);//图片背景
$white = imagecolorallocate($im, 255, 255, 255);
/*获取图片的真实地址*/
$url = strstr($string, "http");
if (!$url) {
imagettftext($im, 18, 0, 200, 100, $white, "./fonts/hwxh.ttf", "Error 001");
imagettftext($im, 14, 0, 150, 150, $white, "./fonts/hwxh.ttf", "请在参数中输入图片的绝对地址。");
imagepng($im);
exit();
}
@$imgString = urlOpen($url);
if ($imgString == "") {
imagettftext($im, 18, 0, 200, 100, $white, "./fonts/hwxh.ttf", "Error 002");
imagettftext($im, 14, 0, 70, 150, $white, "./fonts/hwxh.ttf", "加载远程图片失败,请确认图片的地址能正常访问。");
imagepng($im);
exit();
}
/*如果没有错误*/
$im = imagecreatefromstring($imgString);
$white = imagecolorallocate($im, 255, 255, 255);
/*加上水印*/
//imagettftext($im, 12, 0, 20, 20, $white, "./fonts/hwxh.ttf", "水印的文字1");
//imagettftext($im, 12, 0, 5, 35, $white, "./fonts/hwxh.ttf", "水印(可以写你的网址)");
imagepng($im);
/*抓取图片*/
function urlOpen($url, $data = null, $ua = '')
{
if ($ua == '') {
$ua = 'MQQBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.7; zh-cn; MB200 Build/GRJ22; CyanogenMod-7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1';
} else {
$ua = $ua;
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, $ua);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$content = curl_exec($ch);
curl_close($ch);
return $content;
}
?>