Chrome扩展程序是否可以写入Chrome系统目录中的文件?

时间:2011-12-03 06:44:16

标签: google-chrome

我从未真正写过真正的 Chrome扩展程序。我做了一个只是一段时间的链接下拉列表,但这并不重要。无论如何,我不是首先回到编写Chrome扩展程序的大量教程中,而是想知道我的想法是否可行。

我的计划是这样的:我想在Pandora的播放器中播放当前播放的曲目,并将曲目信息发送到浏览器之外的源(在我的例子中是Python脚本)。

获取信息本身应该不是很难;他们新的HTML5界面使这一部分变得非常简单。一旦我得到它,问题就是传达这些信息。我想避免将数据上传到Web服务器并让Python从那里获取它。

显然,Chrome不会让扩展程序很容易发送DBus消息或任何东西,但是可以在某个地方写入Chrome系统目录中的文件,并让Python拿起它吗?即使提出这样的问题我是否完全荒谬?

修改 我以为我会报告我实际上为将来通过这个问题发生的任何人做了什么。由于我只需要这个扩展就可以在一台计算机上工作(我的),我只是为Apache安装了mod_python并让我的扩展将数据直接发送到我的Python脚本,等待localhost。这样做的好处是不需要从Python中轮询URL或文件,就像我原先假设的那样。它还避免了引入NPAPI所涉及的潜在安全风险。

2 个答案:

答案 0 :(得分:3)

我能想到的唯一方法就是使用NPAPI extension。 NPAPI允许您在扩展插件中包含一个本机二进制文件,然后您的插件就可以与之进行通信。你可以在二进制文件中做任何你喜欢的事情。

但是,请注意我在上面链接的警告:

  

NPAPI是一个非常大的锤子,只有在别的时候才能使用   方法将有效。

     

在NPAPI插件中运行的代码已满   当前用户的权限,不是沙箱或屏蔽   Google Chrome以任何方式进行恶意输入。你应该特别   处理来自不受信任来源的输入时要谨慎,例如何时   使用内容脚本或XMLHttpRequest。

     

因为   NPAPI给用户带来的额外安全风险,使用它的扩展   在Chrome网站上接受之前,需要进行人工审核   存储。

答案 1 :(得分:0)

这是一个老问题,但这是另一个选择:

如果您从扩展程序中写入localStorage,则可以访问Chrome的本地存储目录,其中每个网站和扩展程序都可以方便地获得自己的文件。在Linux中,该目录位于~/.config/google-chrome/Default/Local Storage,而在Windows中位于%LocalAppData%\Google\Chrome\User Data\Default\Local Storage。我没有Mac可以检查,但它应该不难找到。

数据存储在SQLite中,看起来像是JSON。我没有亲自尝试将其变成有用的东西,但信息就在那里。我刚刚做了一个快速测试,一旦你写到localStorage,文件似乎就会更新,所以你可以把文件系统监视器放在它上面并随时收到通知。