免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3047 | 回复: 8
打印 上一主题 下一主题

如何提取FLASH中的链接 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-02-28 16:22 |只看该作者 |倒序浏览
最近想写个下载百度新歌100的脚本(有人用其他语言写了,我想自己写写练练手)。遇到的问题是:歌曲的下载地址是放在FLASH里的,下载地址倒是以文字形式直接显示出来的,如何获取这个地址?

论坛徽章:
1
摩羯座
日期:2014-12-29 15:59:36
2 [报告]
发表于 2011-02-28 16:53 |只看该作者
[i=s] 本帖最后由 ziyunfei 于 2011-02-28 16:54 编辑 [/i]

你应该这么想。flash是怎么获取歌曲地址的。而不是怎么获取flash里的歌曲地址。
例如第一首 周杰棍的 天地一斗。

访问如下地址就会返回一个xml文件。里面当然是歌曲地址。接下来就知道怎么做了


http://box.zhangmen.baidu.com/x?op=12&count=1&mtype=1&title=天地一斗$$周杰伦$$$$&url=&listenreelect=0&.r=0.289392052238324

论坛徽章:
1
摩羯座
日期:2014-12-29 15:59:36
3 [报告]
发表于 2011-02-28 16:58 |只看该作者
天地一斗 和 = 之间没有空格

论坛徽章:
0
4 [报告]
发表于 2011-02-28 16:59 |只看该作者
楼上答得好。

论坛徽章:
0
5 [报告]
发表于 2011-02-28 17:28 |只看该作者
swf反编译,看AS源码

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
6 [报告]
发表于 2011-02-28 18:27 |只看该作者
顶楼上,反编译下看 AS 直接 Ctrl+F 都能查找到了

论坛徽章:
0
7 [报告]
发表于 2011-03-01 22:34 |只看该作者
求问那个网址是如何得出来的?

论坛徽章:
1
摩羯座
日期:2014-12-29 15:59:36
8 [报告]
发表于 2011-03-02 00:00 |只看该作者
Live HTTP Headers
fiddler
HTTP Watch

论坛徽章:
0
9 [报告]
发表于 2011-03-04 15:22 |只看该作者
本帖最后由 nsnake 于 2011-03-04 15:24 编辑

注意看红色字体部分
package baidu.mp3.fm.data
{
    import baidu.mp3.fm.event.*;
    import flash.events.*;
    import flash.net.*;

    public class ChannelDataAccessor extends EventDispatcher
    {
       public static var CHANNEL_DATA_PATH:String = "http://fm.mp3.baidu.com/xml/";
        public static var CHANNEL_LIST_DATA_PATH:String = CHANNEL_DATA_PATH + "suixinting_channel.xml";


        public function ChannelDataAccessor()
        {
            return;
        }// end function

        public function loadChannelList() : void
        {
            var loader:URLStream;
            loader = new URLStream();
            loader.addEventListener(Event.COMPLETE, function (event:Event) : void
            {
                var _loc_2:* = loader.readMultiByte(loader.bytesAvailable, "gb2312");
                var _loc_3:* = new XML(_loc_2);
                var _loc_4:* = getChannelListOperated(_loc_3);
                var _loc_5:* = new DataEvent(DataEvent.LOAD_COMPLETE);
                new DataEvent(DataEvent.LOAD_COMPLETE).data = _loc_4;
                dispatchEvent(_loc_5);
                return;
            }// end function
            );
            loader.addEventListener(IOErrorEvent.IO_ERROR, function (event:Event) : void
            {
                var _loc_2:* = new DataEvent(DataEvent.LOAD_ERROR);
                dispatchEvent(_loc_2);
                return;
            }// end function
            );
            loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, function (event:Event) : void
            {
                var _loc_2:* = new DataEvent(DataEvent.LOAD_ERROR);
                dispatchEvent(_loc_2);
                return;
            }// end function
            );
            var url:* = CHANNEL_LIST_DATA_PATH;
            loader.load(new URLRequest(url));
            return;
        }// end function

        public function loadChannel(param1:String) : void
        {
            var loader:URLStream;
            var id:* = param1;
            loader = new URLStream();
            loader.addEventListener(Event.COMPLETE, function (event:Event) : void
            {
                var _loc_2:* = loader.readMultiByte(loader.bytesAvailable, "gb2312");
                var _loc_3:* = new XML(_loc_2);
                var _loc_4:* = getChannelDataOperated(id, _loc_3);
                var _loc_5:* = new DataEvent(DataEvent.LOAD_COMPLETE);
                new DataEvent(DataEvent.LOAD_COMPLETE).data = _loc_4;
                dispatchEvent(_loc_5);
                return;
            }// end function
            );
            loader.addEventListener(IOErrorEvent.IO_ERROR, function (event:Event) : void
            {
                var _loc_2:* = new DataEvent(DataEvent.LOAD_ERROR);
                dispatchEvent(_loc_2);
                return;
            }// end function
            );
            loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, function (event:Event) : void
            {
                var _loc_2:* = new DataEvent(DataEvent.LOAD_ERROR);
                dispatchEvent(_loc_2);
                return;
            }// end function
            );
            var url:* = CHANNEL_DATA_PATH + id + ".xml" + "?.r=" + Math.random();
            loader.load(new URLRequest(url));
            return;
        }// end function

        private function getChannelListOperated(param1:XML) : Object
        {
            var _loc_6:XML = null;
            var _loc_7:String = null;
            var _loc_8:String = null;
            var _loc_9:String = null;
            var _loc_10:String = null;
            var _loc_11:int = 0;
            var _loc_2:Object = {};
            var _loc_3:Array = [];
            var _loc_4:Array = [];
            var _loc_5:* = param1.channel_info;
            for each (_loc_6 in _loc_5)
            {
               
                _loc_7 = _loc_6.channel_xml.toString();
                _loc_8 = _loc_7.substr(0, _loc_7.length - 4);
                _loc_9 = _loc_6.channel_name.toString();
                _loc_10 = _loc_6.catalog.toString();
                _loc_11 = _loc_3.indexOf(_loc_10);
                if (_loc_11 == -1)
                {
                    _loc_3.push(_loc_10);
                    _loc_11 = _loc_3.length - 1;
                    _loc_4.push([]);
                }
                _loc_4[_loc_11].push({id:_loc_8, name:_loc_9});
            }
            _loc_2.type = _loc_3;
            _loc_2.list = _loc_4;
            return _loc_2;
        }// end function

        private function getChannelDataOperated(param1:String, param2:XML) : Object
        {
            var _loc_6:XML = null;
            var _loc_7:Object = null;
            var _loc_3:Object = {};
            _loc_3.id = param1;
            var _loc_4:Array = [];
            var _loc_5:* = param2.songinfo;
            for each (_loc_6 in _loc_5)
            {
               
                _loc_7 = {};
                _loc_7.name = _loc_6.song.toString();
                _loc_7.artist = _loc_6.artist.toString();
                _loc_7.extra = _loc_6.extra.toString();
                _loc_7.album = _loc_6.album.toString();
                _loc_7.cover = _loc_6.cover.toString();
                _loc_7.detailUrl = _loc_6.detailurl.toString();
                _loc_7.detailUrl = _loc_7.detailUrl.replace(/\+/g, "%2B");
                _loc_4.push(_loc_7);
            }
            _loc_3.list = _loc_4;
            return _loc_3;
        }// end function

    }
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP