2011-12-03 82 views
6

我從來沒有真正寫過真實 Chrome擴展。我做了一個只是一個鏈接的下拉列表,但這並不算真正。無論如何,我不會首先回顧編寫Chrome擴展的大量教程,而是想先確定我的想法是否可行。Chrome擴展程序可以寫入Chrome系統目錄中的文件嗎?

我的計劃是這樣的:我想在潘多拉的播放器當前播放的曲目,併發送曲目信息到瀏覽器之外的源文件(在我的情況下,Python腳本)。

獲取信息本身不應該是不難的;他們新的HTML5界面使得這部分非常簡單。問題是一旦我得到它,就傳達這些信息。我想避免必須將數據上傳到Web服務器,並讓Python從那裏獲取數據。

顯然,Chrome不會讓擴展發送DBus消息或任何東西變得很容易,但是可以在Chrome的系統目錄中寫入某個文件並讓Python讀取它?即使提出這樣的問題,我是否完全荒謬?

編輯: 我想我會報告什麼,我真的結束了爲將來發生這個問題的人做了什麼。由於我只需要這個擴展在一臺計算機(我的)上工作,所以我剛剛爲Apache安裝了mod_python,並讓我的擴展將其數據直接發送到等待本地主機的Python腳本。這具有無需輪詢Python中的URL或文件的優點,正如我原本以爲我需要的那樣。它還避免了引入與NPAPI相關的潛在安全風險。

回答

3

做到這一點的唯一方法,我能想到的,是有NPAPI extension。 NPAPI允許您在您的擴展中包含一個本地二進制文件,然後您的插件可以與之通信。你可以在那個二進制文件中做任何你喜歡的事情。

然而,注意頁面上我掛到上面的警告:

NPAPI是一個非常大鐵錘只應使用時沒有其他 方法會奏效。在NPAPI插件運行

代碼當前用戶的充分 權限,而不是沙盒或 惡意輸入通過谷歌瀏覽器以任何方式屏蔽。在處理來自不受信任來源的輸入時,例如 使用內容腳本或XMLHttpRequest時,您應該特別小心 。

由於 額外的安全風險NPAPI帶來用戶,使用它 需要人工審覈Chrome網上應用店 被接受之前擴展。

0

這是一個老問題,但這裏的另一種選擇:

如果您從您的分機寫信給localStorage,您可以使用Chrome瀏覽器的本地存儲目錄中,其中每一個網站和擴展方便給它自己的文件。在Linux中,該目錄位於~/.config/google-chrome/Default/Local Storage,並在Windows它在%LocalAppData%\Google\Chrome\User Data\Default\Local Storage。我沒有Mac來檢查,但它不應該很難找到。

數據存儲爲SQLite內部一目瞭然的JSON。我沒有親自嘗試將它變成有用的東西,但信息都在那裏。我只是做了一個快速測試,當您寫入localStorage時,該文件似乎會立即更新,因此您可以將一個文件系統觀察器放在它上面,並在其發生更改時收到通知。

相關問題