今天在处理一个Flash上传控件时发现的。
众所周知的是,Chrome中对于Flash插件的处理模式是独立一个进程来展示插件内容以避免Flash的崩溃导致浏览器跟随崩溃。Firefox在3.6.2中也开始引入这种模式,会有一个 Mozilla-runtime.exe 的辅助进程来显示Flash内容,如下图所示:
本身这个进程的引入应该说是一件好事,但是由于这个进程目前还只是测试性质的,所以存在有严重的性能缺陷,最明显的就是Flash在Firefox中显示的性能要远远低于其它浏览器,而且CPU占用率会较高,同时对其进行操作的时候会觉得有明显的延迟(因为网络请求性能也较低)。这些应该期待Firefox后续版本中修正(我目前用的是3.7.a4的nightly版本)。
但是我遇到的一个问题就是,firefox内置的网络嗅探机制无法嗅探到独立进程中的网络请求。这应该是一件比较棘手的事情。对于依赖于firefox内置请求的插件来说,应该不是一个好消息。从目前看来,Firebug和HttpFox均无法嗅探到这个独立进程的网络请求,如下图所示:
由此可以推测:
1.至少在目前的版本中,Mozilla-runtime.exe 的网络请求是独立于主进程的;
2.内置的任何插件均无法嗅探独立进程中的网络请求,包括 Firebug、HttpFox以及类似插件;
3.firefox的代理插件对独立进程是无效的(这条并未做验证,纯属猜测)。
目前看来,要嗅探此类Flash应用的数据,只能通过独立的嗅探软件。Network Monitor、Wireshark这些专业的工具在此不提,因为他们用来嗅探普通的HTTP数据时会显得操作相当繁琐。这里使用HttpAnalyer来嗅探,附加到Firefox进程时,要注意同时选择Mozilla-runtime进程:
此时,flash提交的数据和网络请求就也能被嗅探到了:
当然这样还是很不方便的,尤其是对于习惯用Firebug来集成嗅探的我们来说。不知道后面的版本中会不会做改进修正这样的不便。
本日志备份自 QQ 空间,原文地址:http://user.qzone.qq.com/286495995/blog/1269167450。