2011-12-03 21 views
6

Nunca he escrito realmente una extensión de real de Chrome. Hice uno que era simplemente una lista desplegable de enlaces hace un tiempo, pero eso realmente no cuenta. De todos modos, en lugar de sumergirme de cabeza en la enorme colección de tutoriales sobre la escritura de extensiones de Chrome, pensé que me aseguraría de que mi idea fuera posible primero.¿Es posible que una extensión de Chrome escriba en un archivo en el directorio del sistema de Chrome?

Mi plan es este: quiero tomar la pista actualmente en reproducción en el reproductor de Pandora, y enviar la información de la pista a una fuente fuera del navegador (en mi caso, una secuencia de comandos de Python).

Obtener la información en sí no debe ser difícil en absoluto; su nueva interfaz HTML5 hace que esa parte sea súper simple. El problema es comunicar esa información una vez que la tengo. Me gustaría evitar tener que subir los datos a un servidor web y hacer que Python lo saque de allí.

Obviamente, Chrome no hará que sea muy fácil para las extensiones enviar mensajes DBus ni nada, pero ¿es posible escribir en un archivo en el directorio del sistema de Chrome en alguna parte y que Python lo recoja? ¿Estoy siendo completamente ridículo al hacer semejante pregunta?

EDIT: pensé que informar acerca de lo que en realidad terminó haciendo para cualquier persona que pasa por esta cuestión en el futuro. Como solo necesitaba esta extensión para trabajar en una única computadora (la mía), acabo de instalar mod_python para Apache y mi extensión envió sus datos directamente a mi script de Python que esperaba en el host local. Esto tiene la ventaja de no necesitar sondear una URL o un archivo de Python, como originalmente había supuesto que sería necesario. También evita introducir los posibles riesgos de seguridad relacionados con NPAPI.

Respuesta

3

La única manera de hacer esto, que se me ocurre, sería con un NPAPI extension. NPAPI te permite incluir un binario nativo con tu extensión con el que tu complemento se puede comunicar. Puedes hacer prácticamente todo lo que quieras en ese binario.

Sin embargo, prestar atención a la advertencia de la página he vinculado anteriormente:

NPAPI es realmente un gran martillo que sólo debe utilizarse cuando no hay otra enfoque de trabajo.

código que se ejecuta en un plugin NPAPI tiene los plenos permisos del usuario actual y no es un recinto de seguridad o protegidos de entrada maliciosa por parte de Google Chrome en modo alguno. Debe ser especialmente cauteloso al procesar entradas de fuentes que no sean de confianza, como cuando trabaja con scripts de contenido o XMLHttpRequest.

Debido a la seguridad adicional NPAPI riesgos supone para los usuarios, extensiones que lo utilizan requerirá revisión manual antes de ser aceptado en la Chrome Web Store .

0

Esta es una vieja pregunta, pero aquí es otra opción:

Si se escribe a localStorage desde su extensión, puede acceder al directorio de almacenamiento local de Chrome, donde cada sitio y la extensión está convenientemente dan su propio archivo. En Linux, el directorio se encuentra en ~/.config/google-chrome/Default/Local Storage, y en Windows está en %LocalAppData%\Google\Chrome\User Data\Default\Local Storage. No tengo una Mac para verificar, pero no debería ser difícil de encontrar.

La información se almacena como lo que parece a simple vista en JSON dentro de SQLite. No he intentado personalmente convertirlo en algo útil, pero la información está allí. Acabo de hacer una prueba rápida, y el archivo parece actualizarse tan pronto como escriba al localStorage, por lo que podría poner un vigilante del sistema de archivos y recibir una notificación cada vez que cambie.

Cuestiones relacionadas