新浪图片外链失效使用远程图片解决方案

访客3年前黑客文章623

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

最后用API方式调用,例如:api.php?url=新浪外链地址

远程图片

<?php/**
 * @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 M *** Browser/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");}

转载于蓝优博客 https://umqun.com/Code/16.html

相关文章

抖音无水印解析PHP源码

抖音无水印解析PHP源码 仅限学习使用 输出为标准的格式化json数据 ajax直接调用即可  原生的ajax的调用方法看底部 <?php $url = @$_GET['url'];...

在线自动播放快手小姐姐可运行源码无需api本地视频库

本文是分享:在线自动播放快手小姐姐可运行源码 源码需要放到支持php的服务器或者虚拟主机 非API,自动连续播放,将视频链接放入ks.txt即可,已自带6000+视频地址,也可以自己增加。 演示地址:...

实战PHP皮皮虾无水印解析接口

目标接口:https://h5.pipix.com/bds/webapi/item/detail/?item_id= id根据301跳转后截取item/ 和?中间的值 curl模拟设备获取数据 然...

emlog实现统计在线人数及访问量

<?php //首先你要有读写文件的权限 //本程序可以直接运行,第一次报错,以缶涂梢? $online_log = "count.dat"; //保存人数的文件, $timeout = 30;...

Emlog今日文章时间加红 今日未发文则显示昨日时间加红

Emlog今日文章时间加红 只需要写一个判断,那如果今日未发文则显示昨日时间加红怎么实现呢? 首先我们需要判断一下今日是否发文 把代码放到模板下module.php中 &l...

PHP发短信实现方法

1要拼接接收的手机号和短信 public function sendcode()     {         $parpm = input();         $valist = $this-&g...