碰到郁闷的事情,在别人sina blog上听到感觉很nice的歌,但是新浪貌似允许blog用户任意修改歌曲显示名字,结果不知道歌名,决定,小逆下那个swf,印象中sina的播放器最终是调用一个xml作为源来获得歌曲list的。
简单的反出sina_music.swf,主要是其中的as代码。
调用的时候是类似以下的形式:sina_music.swf?uid=×××××××
直接去as里面找_root.uid
找到以下地方:
interfaceData.userid = !_root.uid ? (null) : (_root.uid);
_root.uid的值最后被传递到interfaceData.userid中。
再找下interfaceData.userid最终在哪里被调用的。见以下语句:
this.getUserInfoList(interfaceData.userid);
继续,在该函数内部找到以下调用:
this.loadList(interfaceData.info + id);
查看LoadList方法知道是获取传入的url来生成list。问题就变成了interfaceData.info的来源:
var _blogAlbumList = "http://music.sina.com.cn/shequ/port/blogmofun/getuser080225.php?id=";
interfaceData.info = fToP.blogAlbumList;
OK,搞定,替换页面得到的uid后访问得到一个xml里面文件,心爱的url就在其中。
<item id="0">
<INTRO></INTRO>
<NAME>***
<URL>
http://www.***********.com/stuff/musikk/slow/Maria%20Arredondo%20-%20Burning.mp3
</URL>
<ID>BKbd031bd9</ID>
</item>
