56听书网音频地址获取
有人要用来下载56听书网音频,因为有时候网络用不了,所以分析了一下,在爬虫下也有同样的需求场景。另外推荐一款免费听书APP。
地址分析
首先查看播放页,音频src
放在了一对动态生成audio标签
里:
1 | <audio id=”jp_audio_0″ preload=”metadata” src=”地址”></audio> |
在audio地址用了一个简单的加密解密处理,播放页datas
变量中调用:
1 | var datas = (FonHen_JieMa(‘*121*111*117*115*104*101*110*103*47*50*55*57*55*51*47*48*38*50*48*50*57*38*116*99’).split(‘&’)); |
解密函数在main.js里:
12345678 | function FonHen_JieMa(u){ var tArr = u.split(“*”); var str = ”; for(var i=1,n=tArr.length;i<n;i++){ str += String.fromCharCode(tArr[i]); } return str;} |
针对它写个还原就行,例如PHP还原:
1234567891011121314 | $str = “*104*116*116*112*115*58*47*47*111*100*46*113*105*110*103*116*105*110*103*46*102*109*47*109*52*97*47*53*97*100*56*51*100*51*54*55*99*98*56*57*49*52*101*49*51*49*51*53*99*50*50*95*49*48*49*48*48*52*50*57*95*54*52*46*109*52*97*38*51*52*50*38*109*52*97″;$audio = ”; $code = explode(“*”, $str); $re = ”;foreach (array_filter($code) as $v) { $re.= chr($v);} $re = explode(‘&’, $re); # $re[0]就是音频地址了。$audio = $re[0]; |
其它语言类似,比较简单不一一写了。
其实他就是把这个这个字符串(46*120*109*99*100*110*46*99*111*109*47*103)这样的,用(*)号分割之后,再将每个数字转成了字符再拼接起来的
.fromCharCode()
将 Unicode 编码转为一个字符:比如65-->A
,解密出来的真实地址主要有.m4a 和 .mp3
两种格式。
AJAX音频地址
这里需要注意的是,音频地址有两种,第一种是直接返回音频地址(解密看上面),另一种是ajax获取返回真实地址
,当数组三(格式)等于tc
时:
12345678910 | if(datas[2]===’tc’){ url = url.split(‘/’); url = url[0]+’/’+url[1]+’/play_’+url[1]+’_’+url[2]+’.htm’; console.log(‘tc’,url); ajaxLoadData(‘/player/tingchina.php’,{url:url});}else{ url=url.replace(‘:82’,”); console.log(‘else’,url); $(“#fonhen-player”).jPlayer(“setMedia”,{mp3:url,m4a:url}).jPlayer(‘play’);} |
那么操作的时候你只需要curl一下得到返回串就行:
12345678 | if ($re[2]===’tc’) { $res = explode(“/”, $re[0]); $url = ‘/fonhen_player/tingchina.php?url=’.$res[0].’/’.$res[1].’/play_’.$res[1].’_’.$res[2].’.htm’; $result = curl_file_get_contents($url); $audio = $result[‘url’];} else { $audio = $re[0];} |
提取还原真实地址步骤
- 抓取或指定url
- 获得datas
- 还原真实地址
- 下载
联系站长
友情链接
其他入口
QQ与微信加好友
粤ICP备17018681号 站点地图 www.iamdu.com 版权所有 服务商提供:阿里云 Designed by :DU
本站部分资源内容来源于网络,若侵犯您的权益,请联系删除!