腾讯微云音乐外链解析源码

时间:2013-09-29 | 分类:个人日志,学习园地 | 浏览:30660 | 评论:60 | 发表评论

最近有人问怎么解析微云的音乐外链,于是我花了点时间看了一下。
音乐分享地址:http://share.weiyun.com/37b92875f407f6d595c6eab92792d41a
查看网页源码,源码里面没有音乐的下载地址,只有一个加密过的地址dl_encrypt_url。
用firebug调试了下,发现js的解密函数太麻烦,所以放弃另寻他法。

先用firefox的插件User Agent Switcher伪装成手机浏览器:

然后再访问页面,可以发现微云的手机版网页源码里有下载地址:

<a class="ui-btn-open" href="http://sync.box.qq.com/share_dl.fcg?sharekey=37b92875f407f6d595c6eab92792d41a&uin=1989052999&skey=&fid=0ef59818-982c-42e6-96ef-85460737055c&dir=&pdir=478a8e765ccd740aa7b6436361a4fccb&zn=%E5%A4%A9%E4%B9%8B%E7%97%95%E5%A6%82%E5%BF%86%E7%8E%89%E5%84%BF%E6%9B%B2.mp3&os_info=iphone&browser=webkit&ver=11">打 开</a>

于是匹配出这个地址并跳转,发现不成功。
复制这个地址在浏览器中打开,会发现网页返回403错误,禁止访问:

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

用firebug监控网页请求,发现打开下载地址后,会跳转到真实的音乐地址:

那么可以从下载地址的响应头信息里匹配出Location的地址。

把下面的代码保存为weiyun.php文件,放在网站根目录:

<?php
//最后更新时间:2013-12-12
//构造微云分享地址
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;
}
?>

如果分享地址为:
http://share.weiyun.com/37b92875f407f6d595c6eab92792d41a
则外链地址为:
//www.poboke.com/weiyun.php/37b92875f407f6d595c6eab92792d41a.mp3

音乐外链试听:
http://poboke.duapp.com/weiyun/37b92875f407f6d595c6eab92792d41a.mp3

.

标签: ,
本文链接: 腾讯微云音乐外链解析源码
版权所有: 破博客, 转载请注明本文出处。

60个评论

  1. 来看才哥
    2014/01/04 15:34:50

    :grin: 怪哥~ 微云的又失效了…怎么破,,

  2. QQ419429714
    2013/12/28 23:27:32

    还微云 ,微云连个sdk包都没有 就有api,

  3. […] 代码来自破博客 […]

  4. BOBO
    2013/12/28 10:09:02

    :mad: :mad: LZ 微云又失效了,什么时候更新一下呢~

  5. cc
    2013/12/26 22:35:56

    才怪哥有空再看下 还能连不 哎

    • admin
      2013/12/28 23:07:38

      微云也加了验证码了

  6. 过客
    2013/12/26 21:51:55

    微云又不可以用了

  7. NEUQ
    2013/12/23 11:07:14

    nginx的伪静态怎么写啊

  8. QQ419429714
    2013/12/18 02:43:13

    :razz: 有没有简单的api上传的腾讯微云源码

  9. chkan
    2013/12/11 19:11:15

    是哦,微云今天失效了,腾讯搞什么飞机,博主能修复一下不。

    • admin
      2013/12/12 00:07:14

      已修复,最近一直要加班

      • 楚缘
        2013/12/13 08:36:38

        我用这修改了的怎么不行啊 :???:

  10. limper
    2013/12/11 10:14:19

    微云又失效了 :???: 希望博主修复一下!

  11. www.eyy9.com
    2013/12/07 16:50:23

    腾讯微云网盘外链解析失败了。
    求最新代码

    • admin
      2013/12/08 18:45:49

      微云已经修复了

      • ggg
        2013/12/11 11:41:45

        是的,微云从多天开始又无法使用了,请站长修复一下吧

  12. array
    2013/12/05 18:44:24

    :cry: 微云的腾讯更新了。。失效了= =

    • QQ419429714
      2013/12/07 02:27:55

      :?: 和谐了吗 为什么我的好使呢 :?:

      • array
        2013/12/07 05:54:17

        :?: 奇怪了。。现在又可以了耶。。

        • cc
          2013/12/08 02:32:09

          不行啊? 你们是用的这个吗?

  13. KANGOD
    2013/11/22 22:15:00

    好顶赞~

  14. 汉青
    2013/11/15 19:08:08

    感谢大神提供分享

    以前一直用咕咕网盘和百度云外链的,这几天基本连不上,请问楼主,是不是百度他们有动作了?

    另外,请问楼主这个微云转换的程序会一直有效吗?

    谢谢!

    • admin
      2013/11/16 00:14:15

      现在百度应该开始和谐了,腾讯以后可能也会和谐

评论分页: 1 2

发表评论

您的昵称: *

您的邮箱: * (显示gravatar头像)

联系方式: