区分插件HTTP请求和JavaScript HTTP请求

时间:2013-09-26 21:13:12

标签: flash plugins xul xulrunner

我正在编写一个XUL应用程序,它记录使用<browser>标记创建的浏览器实例中发生的所有网络通信。

我可以使用http-on-modify-request来跟踪所有正在发出的请求并相应地修改标题,但是我无法区分Flash之类的插件或者是由JavaScript制作的请求。

有没有办法区分这些请求?

1 个答案:

答案 0 :(得分:1)

警报,讨厌的黑客传入!

您绝对无法区分Flash与Javascript的请求,因为它们实际上使用相同的Mozilla平台API。

然而,在http-on-modify-request实现中检查时,没有什么能阻止使非Flash请求看起来不同 - 您需要做一些事情来使所有非Flash请求看起来不同。

我能想到的最简单的方法是添加(然后在http-on-modify-request处理程序中删除)QueryString参数。

基本上,只需在每个请求URI中添加?___NONFLASH__=897123487&___NONFLASH__=897123487之类的内容即可。 (在初始化时随机生成令牌897123487,以便JavaScript / Flash试图“逃离”此“沙箱”时无法猜到它。

您需要在浏览器content.contentDocument中影响以下内容:

     
  • 链接 - 更改其href属性
  •  
  • 表单 - 更改其action属性
  •  
  • window.XMLHttpRequest - 将此替换为您自己制作的版本(确保在任何客户端脚本运行之前替换它!)

这只是留下客户端脚本启动的window级导航(例如:window.location.href更改)。您可以使用NSIObserverNSIProgressListener来监控网址更改/重新加载。

编辑:所有这些都假设Flash内容没有使用Flash&lt; - &gt; JavaScript桥接器并在JavaScript端执行所有请求(不太可能! - 但可能)