Adobe Flex是基于Flash平台,涵盖了支持RIA(Rich Internet Applications)的开发和部署的一系列技术组合。有很多基于Web的网络游戏都是采用Flex技术开发的,java。
Flash(客户端)与服务器之间通信既支持HTTP协议(具体的正文消息格式可以是text、XML、JSON、AMF等)也支持原始的Sockets,以HTTP协议较为常见。
对于使用text,XML或JSON形式消息格式的Flex应用来说,对其的分析和抓取方法与基于Ajax的网站一样:
通过HTTP协议抓包工具(例如,Fiddler,Firebug)分析请求的结构(请求方法、URL、相关参数)和步骤,然后用程序模拟发出同样格式的请求,再对返回的数据进行解析和提取。
抓取flex技术网站的数据需要依赖第三方工具charles,charles可辅助分析请求,百度自行下载。java抓取还需要下载Adobe 提供的blazeds-core-3.2.0.3978.jar,jar包提供了AMFConnection类,该类提供了connect(String url),call(String command,Object... args)模拟发送请求和远程调用函数的方法,connect不做解释,主要解释一下call方法,command指模拟请求时远程调用的方法,根据对charles的分析,command="destination.operation",两者结合使用。args指operation方法的参数,这我们怎么知道呢,个人总结指发送请求时body里面的参数,可自行测试,如若不对,请指正。
打开charles,在浏览器中访问目标网址,分析数据包,如图
截图左侧为charles捕获到的请求网址,右侧上半部分是发送请求时的参数,下半部分是捕获到的返回数据,代码如下: