dl_svr_port, "/ftn_handler", "/".$json->dl_encrypt_url, "?fname=".urlencode($json->filename),));header("Location: $songurl"); //用curl获取网页源码function curl_get_contents($url, $referer) { $curl = curl_init($url); curl_setopt($curl, CURLOPT_HEADER, 1); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_REFERER, $referer); curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us)"); curl_setopt($curl, CURLOPT_TIMEOUT, 10); $src = curl_exec($curl); curl_close($curl); return $src;}?>[/code],风一样的男孩's Blog - 创造机会的人是勇者;等待机会的人是愚者" /> [PHP]腾讯微云外链解析源码 - 风一样的男孩's Blog

[PHP]腾讯微云外链解析源码

在微云网页里点击下载按钮后,会打开这个地址下载音乐。
根据上面的信息可以推断出,服务器判断了下载地址的来路referer。
于是用curl伪造来路访问下载地址,就不会出现403错误了。
但是curl不能跳转,而音乐外链需要跳转才能实现。
用firebug监控网页请求,发现打开下载地址后,会跳转到真实的音乐地址:

<?php
//最后更新时间:2013-12-23
//构造微云分享地址
preg_match('|\/.+\/(\w+)\.|', $_SERVER['REQUEST_URI'], $res);
$key = $res ? $res[1] : exit("Url format error!");
$url = $referer = "http://share.weiyun.com/$key";

//获取源码,匹配出下载地址
$src = curl_get_contents($url, "");
preg_match('|shareInfo = (.*);|Ui', $src, $res);
$json = $res ? json_decode($res[1]) : exit("Can not get shareInfo!");

//拼接歌曲链接
$songurl = implode("", array(
    "http://".$json->dl_svr_host,
    ":".$json->dl_svr_port,
    "/ftn_handler",
    "/".$json->dl_encrypt_url,
    "?fname=".urlencode($json->filename),
));
header("Location: $songurl");

//用curl获取网页源码
function curl_get_contents($url, $referer) {
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_HEADER, 1);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_REFERER, $referer);
    curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us)");
    curl_setopt($curl, CURLOPT_TIMEOUT, 10);
    $src = curl_exec($curl);
    curl_close($curl);
    return $src;
}
?>


文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.