2013-09-26 74 views
1

我正在編寫一個XUL應用程序,它記錄使用<browser>標記創建的瀏覽器實例內發生的所有網絡通信。區分插件HTTP請求和JavaScript HTTP請求

我可以使用http-on-modify-request來跟蹤所有正在進行的請求並相應地修改標頭,但是我無法區分哪個請求是由Flash之類的插件製作的,或者是由JavaScript製作的。

有沒有一種方法可以區分這些請求?

回答

1

警報,討厭的黑客傳入!

你絕對不能區分Flash和Javascript的請求,因爲它們實際上使用相同的Mozilla平臺API。你需要做的事,使那些非Flash requets看起來不同 - 在http-on-modify-request實施檢查時

然而,沒有什麼能阻止你使非Flash請求時看起來不同。

我能想到的最簡單的方法是在你的http-on-modify-request處理程序中添加一個QueryString參數。

因此,基本上,只需在每個請求URI中添加諸如?___NONFLASH__=897123487&___NONFLASH__=897123487之類的內容即可。 (在初始化過程中你隨機生成令牌897123487,這樣它就不會被JavaScript/Flash試圖從這個「沙箱」中'逃脫')猜出。

你需要影響瀏覽器的content.contentDocument如下:

  • 鏈接 - 改變自己href屬性
  • 形式 - 改變自己的action屬性
  • window.XMLHttpRequest - 一個版本的自己製造的替換此(使確保所有客戶端腳本運行之前更換!)

這只是離開客戶端腳本啓動window -Level吶(例如:window.location.href更改)。您可以使用NSIObserverNSIProgressListener來監視URL更改/重新加載。

編輯:所有這些都假設Flash內容未使用閃存<→JavaScript橋接並在JavaScript端執行所有請求(不太可能! - 但可能)。