最近几天老在博客群看到有人讨论新浪微博的图片外链挂了。。会返回403。因为本来就是抓取的新浪接口用的,现在新浪不让用了,也不能怪人家无情无义是吧。。

这里提供一种临时处理的思路:既然新浪判断了Referer,我们伪造就是了。。
如下:

<?php

/**
 * @Author: yumu
 * @Date:   2019-04-24
 * @Email:   yumusb@foxmail.com
 * @Last Modified by:   yumu
 * @Last Modified time: 2019-04-24
 */
/**------------------------------------------------- */
/**
 * @description: curl_get 获取远程图片
 * @param  图片url
 * @return: 获取到的图片文件流
 */
function curl_get($url)
{
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Linux; U; Android 4.4.1; zh-cn; R815T Build/JOP40D) AppleWebKit/533.1 (KHTML, like Gecko)Version/4.0 MQQBrowser/4.5 Mobile Safari/533.1');
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    $content = curl_exec($ch);
    curl_close($ch);
    return ($content);
}
/**
 * @description: 对传入的URL做安全化处理 
 * @param  图片URL
 * @return: 如果不安全 则退出;反之返回原url
 */
function waf($url)
{
    if (is_array($url)) {
        return false;
    }
    $blacklist = array('file', 'dict', 'gopher', 'php', '///', './');
    foreach ($blacklist as $key) {
        if (stripos($url, $key) !== false)
            return false;
    }
    if (stripos(parse_url($url, PHP_URL_HOST), "sinaimg.cn") == false) {
        return false;
    }
    return $url;
}

@$url =  $_GET['url'];

/**判断REFERER 防止他人盗取. */
if (isset($_SERVER['HTTP_REFERER'])) {
    if (stripos($_SERVER['HTTP_REFERER'], $_SERVER['HTTP_HOST']) === false) {
        die("Error");
    }
}

    if ($url = waf($url)) {
        header("Content-Type: image/jpeg;text/html; charset=utf-8");
        echo curl_get($url);
    } else {
        die("ERroR");
    }

将以上代码保存到博客根目录下sina.php,将原来的图片地址前面加上 你的域名/?sina.php?url=

例如我的域名是blog.i5.gs,
原先的图片链接是https://wx1.sinaimg.cn/large/006tMUaegy1g2jfuir7ogj30sg0sgjup.jpg
把图片改成这样就可以咯
http://blog.i5.gs/sina.php?url=https://wx1.sinaimg.cn/large/006tMUaegy1g2jfuir7ogj30sg0sgjup.jpg

当然最好的方法把所有的图片做本地化处理,毕竟捏在手里的才算是安全。。

存图不规范,博主两行泪!


请相信你的指尖拥有改变世界的力量。