2009-06-05 4 views
11

He estado buscando maneras de hacer esto por un tiempo pero no he podido encontrar la forma correcta de hacerlo.Interpretar y ejecutar Javascript arbitrario en Linux CLI

La tarea: Ejecutar Javascript desde una línea de comandos de Linux.

Por ejemplo, tiene el binario o lo que sea que va a interpretar Javascript carga algunos archivos .js, luego imprime un valor de alguna variable.

Más ejemplo concreto: me gustaría obtener la versión final de esta página después de Javascript se ha interpretado y ejecutado http://www.vureel.com/video/2809/American-Dad. Si nos fijamos en la página con Firebug, se verá que este oscuro Javascript

<script language="JavaScript" type="text/javascript">/*<![CDATA[*/var a,s,n;function a8bcb4f34dfd6e81cfdb9c115d1671582(s){r="";for(i=0;i<s.length;i++){n=s.charCodeAt(i);if(n<128){n=n ... etc ...</script>

se convirtió en un buen código de inserción

<embed height="390" width="642" flashvars="file=http://vureel-cdn-2.vureel.com/leechingisillegal/537c69afbcaf4c7cf416f30077bbe9d1/4a29621d/here/2809.flv ...etc .../>

Esto es sólo un ejemplo, pero esperamos que pueda ver lo Estoy manejando en.

+0

Creo que su pregunta debe renombrarse a algo así como "¿Cómo puedo obtener el origen de la página después de que se haya ejecutado JS". No creo que una descripción de cómo ejecutar el código con v8 te ayude, ¿o sí? –

Respuesta

3

Su tipo de conducción en dos puntos diferentes 1) ejecución de javascript fuera del navegador 2) visualización de resultados de javascript en una página web.

Para el primer problema, mozilla rhino es un intérprete de JavaScript que se ejecuta en Java. Puede ejecutar javascript a través de una línea de comando.

Para el segundo problema, mira la pestaña dom en Firebug, puedes ver los elementos del documento resultante después de que javascript se haya ejecutado.

O podría habilitar la depuración de scripts, guardar una copia local de la página e insertar una depuración(); declaración.

+0

fyi - esa última nota es una sugerencia de win/visual studio, y dijiste que estabas en linux, por lo que probablemente no aplique –

+0

Estoy buscando en Spidermonkey por el momento ya que hay una lib de Perl que puede hablar con ella. Rhino, por lo que yo sé, es prácticamente lo mismo, pero para Java en lugar de C. –

+0

Para el segundo problema, su solución es tan buena como mirar la salida de Firebug, pero necesito poder obtenerla en la línea de comando. entonces usar un navegador no es una opción. –

2

Creo que quieres hacer algo de scratching mientras ejecutas javascript. env.js descrito en http://ejohn.org/blog/bringing-the-browser-to-the-server/ puede ser útil. Estaba destinado a probarlo con alguna herramienta mía, pero no pude por la falta de tiempo y resolví con scripts específicos del sitio.

+0

Muy interesante. Se ve muy, muy bien. –

+0

Si va con env.js, ha habido algún trabajo desde la versión en el blog para hacer que coincida mejor con los navegadores. El código está en http://github.com/jeresig/env-js/tree/master. También hay varias ramas con funcionalidad adicional. –

2

Tome un vistazo a http://phantomjs.org/

Es un navegador web sin cabeza, por lo que, se llega a construir el DOM y manipular como lo haría en un navegador real . Obviamente, podrías exportar el resultado.

0

Si te gusta Python, puedes obtener ghost.py de GitHub, que te permite crear un navegador WebKit sin cabeza y controlarlo desde tu script de Python. Lo he usado de forma interactiva a través del Portátil IPython y funcionó bastante bien. Lo extendí para trabajar con BeautifulSoup, y fue agradable.

Cuestiones relacionadas