作者:matrix
发布时间:2015-05-20
分类:兼容并蓄
豆瓣音乐 的mp3链接没法外链 播放,只有下载用。
例如http://music.douban.com/programme/1312655?sid=2135789#play
打开地址会播放袁惟仁的木吉他。
右键点击“4.木吉他- 袁惟仁”审查元素
如图:
可以看到
<div class="song-item" data-index="3" data-title="木吉他" data-performer="袁惟仁" data-songid="2135789" data-plength="241" data-ssid="1b59">
其中2135789和1b59是下一步需要的
打开http://music.douban.com/j/songlist/get_song_url?sid=2135789 &ssid=1b59
看到{"r":"http:\/\/mr3.douban.com\/201505162003\/579f892209df60970f186024b25c9dee\/view\/song\/small\/p2135789.mp4"}
其中r对应的键值就是这首歌的链接地址(请去掉反斜杠)。
其实也可以简单点,直接审查元素打开后点击NetWork,只要该页面有歌曲播放就会显示出歌曲的地址。
PS:只需要音乐ID就能拼接出音乐地址
http:/ /mr5.douban.com/{任意12位\d,即日期:20150515}/{任意32位\w}/view/song/small/{音乐ID}.mp3
作者:matrix
发布时间:2015-05-18
分类:零零星星
MP3接口
http://tsmusic24.tc.qq.com/{音乐ID}.mp3
http:/ /stream.qqmusic.tc.qq.com/{音乐ID}.mp3
http:/ /stream{1-30都可以}.qqmusic.qq.com/{音乐ID}.mp3
http://tsmusic128.tc.qq.com/{音乐ID+30000000}.mp3 (请计算出结果)
QQ音乐高品质ogg
http://tsmusic128.tc.qq.com/{音乐ID+40000000}.ogg (请计算出结果)
M4A接口
http://tsmusic24.tc.qq.com/{音乐ID}.m4a
http://thirdparty.gtimg.com/{音乐ID}.m4a?fromtag=38
http://thirdparty.gtimg.com/C100{音乐MID}.m4a?fromtag=38
http://cc.stream.qqmusic.qq.com/C200{音乐MID}.m4a?vkey={VKEY的值}&guid=1830679348
过程
示例获取单曲页面的MP3或M4A文件链接
http://y.QQ .com/#type=song&mid=002G0sJY2wThyx
其中的002G0sJY2wThyx就是歌曲的mid
打开上面的URl浏览器会加载iframe框架http://s.plcloud.music.QQ .com/fcgi-bin/fcg_yqq_song_detail_info.fcg?songmid=002G0sJY2wThyx
Ctrl +U查看源码
var g_SongData = { id: 7168586, songmid: '002G0sJY2wThyx', songname: '喜欢你', singer:'G.E.M. 邓紫棋', singerid:13948,singermid:'001fNHEf1SFEFN',albumname:'喜欢你', albumid:654246,albummid:'000cFPKx3ZGzks', status:31, fnote:0};/*status:非0(true)表示正常歌曲,0(false)表示下架歌曲或者歌曲不存在*/
说明:其中的7168586就是对应歌曲的id,而002G0sJY2wThyx是歌曲的mid,每首歌曲的信息都不同,这需要使用正则匹配数据
php代码:
<?php
$u = $_GET['u'];
$type = $_GET['t']?$_GET['t']:'mp3';
$con = 'http://s.plcloud.music.qq.com/fcgi-bin/fcg_yqq_song_detail_info.fcg?songmid='.$u;
preg_match('|var g_SongData = ({.*});|',file_get_contents($con),$data);
$obj = json_decode(format_ErrorJson(iconv('GBK', 'UTF-8', $data[1])));
$id = $obj->id;
//$mid = $obj->songmid;
$url = 'http://tsmusic24.tc.qq.com/'.$id.'.'.$type;
header('Location: '.$url);
function format_ErrorJson($data)
{
$con = str_replace('\'','"',$data);//替换单引号为双引号
$con = preg_replace('/(\w+):[ {]?((?<YinHao>"?).*?\k<YinHao>[,}]?)/is', '"$1": $2',$con );//若键名没有双引号则添加
return $con;
}
说明:
上面代码只是用了MP3和M4A的第一种接口
代码保存为php 文件,调用/xxx.php?u=音乐ID&t=格式
例如001yJypt4E8GW0歌曲的m4a地址
/xxx.php?u=001yJypt4E8GW0&t=m4a
阅读剩余部分 »
作者:matrix
发布时间:2014-03-30
分类:兼容并蓄 零零星星
接口一:http://ting.hotchanson.com/detail.do?neid=音乐 ID &size=0
接口二:http://ting.hotchanson.com/website/ting?song_id=音乐ID &code=音乐ID的KEY &from=search
使用接口二较为费劲,需要得到key。
以接口一示例:
打开http://ting.hotchanson.com/detail.do?neid=574285&size=0可以看到
{"code":1,"msg":"OK","data":{"hotList":[],"num":79230,"singerId":4140,"albumName":"Versus","source":"http://lty.bla.enligner.com","count":79095,"singerName":"Usher","itemList":[{"fileType":"压缩品质","dType":1,"downUrl":"http://ws.cs.hotchanson.com/mp3_64_5/52/d4/52ca1c3dcb8e4895de7024b115e45ed4.mp3?k=347f92be0b97ffb3&t=1396579062","size":"1.70M","duration":"03:42"},{"fileType":"标准品质","dType":2,"downUrl":"http://jdlbqc.tgg.yymommy.com/m4a_96_5/52/d4/52ca1c3dcb8e4895de7024b115e45ed4.m4a?k=347f92be0b97ffb3&t=1396579062","size":"2.55M","duration":"03:42"},{"fileType":"标准品质","dType":3,"downUrl":"http://nie.dfe.yymommy.com/mp3_128_5/52/d4/52ca1c3dcb8e4895de7024b115e45ed4.mp3?k=347f92be0b97ffb3&t=1396579062","size":"3.39M","duration":"03:42"}],"publish":"","songName":"DJ Got Us Fallin' In Love","neid":574285}}
之后再从中匹配到需要的mp3链接跳转下载,这就做到外链 了。
php代码: 150323修改
<?php
if ($_GET['u']) {
$id = (is_numeric($_GET['u'])) ? $_GET['u'] : die('Do not see the expected value');//如果没有数字型的GET参数则退出
$url = "http://ting.hotchanson.com/detail.do?neid=$id&size=0";//拼接数据地址
$con = file_get_contents($url);//获取音乐ID的数据
$obj = json_decode($con);//准备提取json数据
$d = ($obj->data->itemList) ? $obj->data->itemList : die('Not Found "itemList"');//如果没有mp3的数据则退出
foreach ($d as $a) {//开始foreach循环遍历每个MP3链接
if (strpos($a->downUrl, ".mp3") && ($a->fileType == '压缩品质' || '标准品质'))//如果有.mp3且为'压缩品质' || '标准品质'则302跳转,否则继续找
{
header('Location: ' . $a->downUrl);
break;
} else {
continue;
}
}
}
说明:
上面代码保存为.php文件。
调用格式:http://XXXX/*.php?u=音乐ID
各行都有注释,不再细说。
再说接口二:
这接口二的玩意有些麻烦,不建议使用。
需要的话只是多一个步骤,得到key。
之前我也没注意这key是哪里来的,后来才晓得是js函数算出来的。
var u = {
song_id: t.song_id,
code: $.CRC32(t.song_id),
from: "search"
};
上面的第三行的CRC32()就是获取key的相关函数,里面的t.song_id是音乐ID
又从他页面上的其他js里找到这个代码,看来没错:
CRC32: function(f) {
var d = new Array(256);
var e, c;
var b;
for (e = 0; e < 256; e++) {
b = e;
for (c = 0; c < 8; c++) { if (b & 1) { b = ((b >> 1) & 2147483647) ^ 3988292384
} else {
b = ((b >> 1) & 2147483647)
}
}
d[e] = b
}
if (typeof f != "string") {
f = "" + f
}
b = 4294967295;
for (e = 0; e < f.length; e++) { b = ((b >> 8) & 16777215) ^ d[(b & 255) ^ f.charCodeAt(e)]
}
b ^= 4294967295;
return (b >> 3).toString(16)
},
这就是获取key的 CRC32函数。
然后再依葫芦画瓢翻译成php代码,Bingo!
function co($f) {
$d = Array();
$e = '';
$c = '';
$b = '';
for ($e = 0; $e < 256; $e++) {
$b = $e;
for ($c = 0; $c < 8; $c++) {
if ($b & 1) {
$b = (($b >> 1) & 2147483647) ^ 3988292384;
} else {
$b = (($b >> 1) & 2147483647);
}
}
$d[$e] = $b;
}
if (!is_string($f)) {
$f = "" + $f;
}
$b = 4294967295;
for ($e = 0; $e < strlen($f); $e++) {
$b = (($b >> 8) & 16777215) ^ $d[($b & 255) ^ get_bianma(substr($f, $e, 1))];
}
$b ^= 4294967295;// $b = $b ^ 4294967295;
$fuhao = (!is_numeric(substr($b >> 3, 0, 1))) ? substr($b >> 3, 0, 1) : '';
return $fuhao.base_convert($b >> 3, 10, 16);//base_convert会去掉($b >> 3)的负号,这里不要用dechex()转换为16进制
}
function get_bianma($str)//等同于js的charCodeAt()
{
$result = array();
for ($i = 0, $l = mb_strlen($str, 'utf-8'); $i < $l; ++$i) {
$result[] = uniord(mb_substr($str, $i, 1, 'utf-8'));
}
return join(",", $result);
}
function uniord($str, $from_encoding = false) {
$from_encoding = $from_encoding ? $from_encoding : 'UTF-8';
if (strlen($str) == 1)
return ord($str);
$str = mb_convert_encoding($str, 'UCS-4BE', $from_encoding);
$tmp = unpack('N', $str);
return $tmp[1];
}
说明:代码放到php文件的<?php 和?>之间
echo co('1757517');//显示出音乐id为1757517的KEY
之后再拼接接口二的地址,与接口一的代码同理获取MP3链接。
MP3外链测试:
阅读剩余部分 »
作者:matrix
发布时间:2014-03-04
分类:兼容并蓄 零零星星
优酷 的广告 很烦人,还好有些脚本可以搞定。
譬如:http://userscripts.org/scripts/show/119622 效果很不错!
chrome的使用说明:https://www.hhtjim.com/to-youku-ad-script.html
此页面的源码已失效 ,最新>>php源码优酷视频解析 更新
解析优酷视频过程:
例:http://v.youku.com/v_show/id_XNjc1MDI4Nzg0 .html
1.获取视频信息
http://v.youku.com/player/getPlayList/VideoIDS/XNjc1MDI4Nzg0
打开后可以看到视频相关信息。
需要其中的seed值、streamfileids里面hd2,mp4或者flv的值以及segs里对应k的值。
hd2、mp4、flv分别代表超清,高清以及标清。
2.拼接下载地址
最终形式:http://f.youku.com/player/getFlvPath/sid/00_00/st/$P0/fileid/$P1?k=$P2
$P0:如果选择mp4(即高清)则为mp4,其余为flv。
$P1:由解密函数getFileID()得到:(php版本)
function getFileIDMixString($seed)
{
$source = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/\\:._-1234567890";
$len = strlen($source);
for ($i = 0; $i < $len; $i++)
{
$seed = ($seed * 211 + 30031) % 65536;
$index = floor($seed / 65536 * strlen($source));
$mixed .= $source[$index];
$source = str_replace($source[$index],'',$source);
}
return $mixed;
}
function getFileID( $fileid, $seed )
{
$mixed = getFileIDMixString($seed);
$ids = explode("*",$fileid);
for ($i = 0; $i < count($ids) - 1; $i++)
{
$idx = $ids[$i];
$realId .= $mixed[$idx];
}
return $realId;
}
说明:此为解密的关键函数,不是我写的,完全是依葫芦画瓢按照下面的C#代码而来:(解密函数getFileID()C#版本)
public static String getFileID(String fileid, double seed)
{
String mixed = getFileIDMixString(seed);
String[] ids = fileid.Split('*');
StringBuilder realId = new StringBuilder();
int idx;
for (int i = 0; i < ids.Length - 1; i++)
{
idx = int.Parse(ids[i]);
realId.Append(mixed[idx]);
}
//Console.Write(realId.ToString());
return realId.ToString();
}
public static String getFileIDMixString(double seed)
{
StringBuilder mixed = new StringBuilder();
StringBuilder source = new StringBuilder("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/\\:._-1234567890");
int index, len = source.Length;
for (int i = 0; i < len; ++i)
{
seed = (seed * 211 + 30031) % 65536;
index = (int)Math.Floor(seed / 65536 * source.Length);
mixed.Append(source[index]);
source.Remove(index, 1);
}
return mixed.ToString();
}
$P2:这个是segs里对应k的值。
如果选择flv(即标清)那么可以找到
"flv":[{"no":0,"size":"9932910","seconds":"277","k":"4be592cfae8eea21282826e4","k2":"167f8074bfb7bdca7"}]}
其中的4be592cfae8eea21282826e4就是$P2。
得到de $P0 、$P1和 $P2,拼接为视频地址:http://f.youku.com/player/getFlvPath/sid/00_00/st/$P0/fileid/$P1?k=$P2
如果视频有很多分段,变更一下$P2就行。
到这里就给个获取优酷地址的php源码:
源码[已经失效 ]:
提示: 此处内容需要评论本文 后才能查看.
调用说明:/XXX.php?id=优酷视频的ID?d=1
d=1表示标清(flv),2表示高清,3表超清.若不写?d=*则默认输出FLV的画质
有些细节处的修改没有写出来,不过php里都是搞好了的。
标清测试:
高清测试:
超清测试:
另附接口:
优酷外链 接口(wap地址),这个很简单:
视频:http://v.youku.com/v_show/id_XNjc1MDI4Nzg0.html
外链:
http://m.youku.com/wap/pvs?format=3gphd&id=XNjc1MDI4Nzg0
56网:
视频:ht tp://www.56.com/u30/v_MTA3MDk0Nzg3.html
外链:
http://vxml.56.com/html5/MTA3MDk0Nzg3/ (算的上高清)
http://vxml.56.com/html5/MTA3MDk0Nzg3/?src=3g&res=qvga (也就是手机上用的)
参考:http://blog.csdn.net/feige2008/article/details/8198434
作者:matrix
发布时间:2014-02-04
分类:零零星星
感觉 以前的界面按钮有些小,正好改成3.0.3的css前端 框架 试试~。
资源 :
Bootstrap中文网: http://www.bootcss.com/ 里面各种开源,各种介绍~
百度CDN公共库:http://developer.baidu.com/wiki/index.php?title=docs/cplat/libs
用的其中Bootstrap v3.0.3:http://libs.baidu .com/bootstrap/3.0.3/css/bootstrap.min.css
UI变动: 阅读剩余部分 »
作者:matrix
发布时间:2014-01-15
分类:零零星星
参考凉手抚温柔的代码 修改此>>外链转换工具
变动:
添加ajax post数据提交,不支持js的浏览器是扛不动了。
度娘网盘 :遍历 3层 文件夹的文件信息。 最多 显示第二层300个,第三层200个文件,第一层就没试过。太多了的话那没法了。此功能出于本人某些情况下片考虑,无实际意义。:)
文件夹结构太复杂的,遍历起来那就真心慢。
度娘网盘的外链就只能下载,干其他没法的。
微云:解决BAE上没法下载多文件打包的问题。
微云 解析源码 >>微云网盘php解析源码_更新
ajax 代码参考至凉手抚温柔:http://www.ifoouu.com/note/73.html,在此感谢!
他的站已经熄火,这里给个他的外链 工具源码(BAE2.0):
http://pan.baidu.com/s/1nt9J5bV
MP3:TEST 阅读剩余部分 »
作者:matrix
发布时间:2014-01-06
分类:零零星星
应小伙伴的留言放出源码 ,并考虑多文件的情况。
这代码弄了好几天才搞出来的,100多行不容易。 🙄
本人菜鸟,代码上有问题的地方欢迎指正 互相学习!! 爱好php ~
版本说明:
大于100MB,有提取密码的文件外链 会失败。
放到BAE上不知道啥原因 总是403 503 错误,不过我在本地测试是成功的。其他未知
解决:
bae 403错误,正如Lostape所说,正则匹配的问题。
preg_match('|\.php\??\/(.*)\.\w+|',$_SERVER["REQUEST_URI"],$ur);
大部分的bae 503错误,应该是有太长的& or ?& 导致的。具体不详
更多BUG中~
使用说明:
微云 :http://share.weiyun.com/eec279cd08578598b84e92403b3d5e99
普通下载:http://localHOST/weiyun.php /eec279cd08578598b84e92403b3d5e99 .flv
BAE调用下载:http://ฏ๎๎๎๎๎๎๎๎๎ฏ ้้้ฏด้้้้้็็็็็้้้้้็็.duapp.com/t.php?/ eec279cd08578598b84e92403b3d5e99 .flv(尝试兼容bae)
http://ฏ๎๎๎๎๎๎๎๎๎ฏ ้้้ฏด้้้้้็็็็็้้้้้็็.duapp.com/t.php?u=eec279cd08578598b84e92403b3d5e99 (再度尝试兼容bae)
技术问题,BAE上常出现503错误。不保证绝对可用,欢迎测试!!
源码(已失效 ):
http://pan.baidu.com/s/1c05TCK4 #密码: kh0e(再度尝试兼容bae)
http://pan.baidu.com/s/1jGt6bSa #密码: t5t1 (尝试兼容bae)
http://pan.baidu.com/s/1EeYiq%20 #密码:32my
再来mp3测试: 阅读剩余部分 »
作者:matrix
发布时间:2013-12-28
分类:零零星星
26号发现以前的微云 网盘 外链 失效,微云 的菊花被捅的也差不多了。
下载大于100MB的文件要求输入验证码。
26号,使用手机浏览器登陆都不能下载。今天一看貌似又好了
上面的情况,以前的肯定没法了。手动下载,尝试用Fiddler抓取各类响应头,或者用火狐的firebug插件查看网络。
看到每次下载都是请求的http://web.cgi.weiyun.com/share_dl.fcg这个地址。 阅读剩余部分 »
1 2 3