2014-02-12 21 views
1

有人可以驗證以下關於PPAPI的假設嗎?關於PPAPI的問題

  1. PPAPI插件需要使用Nacl編譯器進行編譯,該編譯器會對其施加API限制。
  2. 此外PPAPI插件的加載似乎是唯一可能的,如果他們是通過Chrome網上應用店
  3. PPAPI公佈將支持今後像本地消息按https://developers.google.com/native-client/devguide/coding/message-system並按照以下頁面,同步通信使用PPAPI已經氣餒異步通信。 http://code.google.com/p/ppapi/wiki/InterfacingWithJavaScript

我們必須攔截鉻流量,發送它分析本地應用程序,並根據分析的結果,阻止它的實時性的要求。嘗試瞭解本地消息,但問題在於它只支持異步通信,不支持以下用例。

interceptHeader是使用[「blocking」,「requestHeaders」]規範添加到chrome.webRequest.onBeforeSendHeaders的監聽器。

interceptHeaders: function(details) 
{ 
    var verdict = false; 

    //send request for scanning only if it is a POST request       
    if (details.method == "POST") 
    { 
     //create new responseObject 
     var responseObject = new ResponseObject(); 

     /use native messaging to send request for scanning 
     chrome.runtime.sendNativeMessage('com.my_company.my_application', 
              requestObject, 
              responseObject.Callback 
             ); 

     // wait for response - how to efficiently wait unitl responseObject.Callback is processed 
     // so that responseObject.verdict can be used as a return value of interceptHeaders as shown below 
     ??????????????   

     //update the verdict (true or false) 
     verdict = responseObject.verdict; 

     console.log ("verdict " + verdict + "for RequestId " + details.requestId); 

     //delete the responseObject 
     delete responseObject; 
    } 

    return {cancel: verdict}; 
} 

回答

1

這是不可能同步阻塞插件。該API專門針對此需求而設計,無論是出於性能還是穩定性原因(支持進程之間的同步調用意味着從阻塞的內部進行可重入調用,這幾乎可以確保崩潰或嚴重混淆代碼)。

+0

那麼有沒有什麼辦法可以實時分析chrome中的流量?從下面看來,webpagetest似乎用來從chrome dll鉤住內存中的ssl_Write方法來攔截流量(與Firefox公開的PR_WRITE方法一樣),但是這種方法並未出現在最近的chrome版本中。 http://code.google.com/p/webpagetest/source/browse/trunk/agent/wpthook/hook_nspr.cc?r=715 如果上述不可行,是否還有其他方法可用於鍍鉻? – user3296810