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

时间::2013-10-20 栏目: 技术分享 作者: ↗℡ 浮华 青春 评论: 7 点击: 9355 次

最近有人问怎么解析微云的音乐外链,于是我花了点时间看了一下。
音乐分享地址:
http://share.weiyun.com/0ce9b9d5738a5928a4ffed3e3dce9df5

查看网页源码,源码里面没有音乐的下载地址,只有一个加密过的地址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
//构造微云分享地址
preg_match('|\/.+\/(\w+)\.|', $_SERVER['REQUEST_URI'], $res);
$key = $res ? $res[1] : exit("Url format error!");
$url = $referer = "http://share.weiyun.com/$key";
$useragent = "BlackBerry/3.6.0";
 
//获取源码,匹配出下载地址
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_USERAGENT, $useragent);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
$src = curl_exec($curl);
curl_close($curl);
preg_match('|http://.+sharekey[^"]+|', $src, $res);
$url = $res ? $res[0] : exit("Unable to get source code!");
 
//访问下载地址,获取返回的响应头信息
$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, $useragent);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
$src = curl_exec($curl);
curl_close($curl);
 
//从响应信息头匹配出真实的音乐地址并跳转
preg_match('|Location: (.+)\r|', $src, $res);
$songurl = $res ? $res[1] : exit("Can not get song url!");
header("Location: $songurl");
?>

如果分享地址为:
http://share.weiyun.com/0ce9b9d5738a5928a4ffed3e3dce9df5
则外链地址为:
http://www.yourdomain.com/weiyun.php/0ce9b9d5738a5928a4ffed3e3dce9df5.mp3

转载自破博客 http://www.poboke.com/study/the-source-code-of-tencent-weiyun-music-outside-link.html

声明: 本文由(↗℡ 浮华 青春)原创编译,转载请保留链接: 腾讯微云音乐外链解析源码

(选择后可查看结果)阅读本文后,您的心情是:
 
恶心
愤怒
强赞
感动
路过
无聊
雷囧
关注
et_highlighter51

腾讯微云音乐外链解析源码:目前有 7 条留言

  1. # 6楼
    pang:

    失败了。

    2013-12-28 18:50 [回复]
  1. # 5楼
    该昵称已屏蔽:

    先收藏起来

    2013-10-25 13:43 [回复]
  1. # 4楼
    该昵称已屏蔽:

    不错,我是第一个沙发。支持一下。。。

    2013-10-23 15:05 [回复]
  1. # 地板
    爱浮夸:

    哇,牛人啊!

    2013-10-22 20:51 [回复]
  1. # 板凳
    才子城:

    哈哈,谢谢奉献,回去可以试一试、

    2013-10-21 16:21 [回复]
  1. # 沙发
    mooc:

    哈~又一个直链获取方法。。

    2013-10-20 15:42 [回复]

发表评论

------====== 本站公告 ======------
博主大学蜕变期间,更新量应该骤减,表示十分可怕。2016,一起加油!

北京时间

    敢于浪费哪怕一个钟头时间的人,说明他还不懂得珍惜时间的全部价值。

    ——达尔文