2009-06-05 3 views
11

Sono stato in cerca di modi per farlo per un po ', ma non sono stato in grado di trovare il modo giusto per farlo.Interpretazione ed esecuzione di Javascript arbitrario in Linux CLI

L'attività: Esegui Javascript da una riga di comando di Linux.

Ad esempio, ha il file binario o qualsiasi altra interpretazione interpreterà Javascript caricherà alcuni file .js, quindi stamperà un valore di alcune variabili.

Esempio più concreto: Vorrei ottenere la versione finale di questa pagina dopo che Javascript è stato interpretato ed eseguito http://www.vureel.com/video/2809/American-Dad. Se guardate la pagina con Firebug, si vedrà che questo 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>

trasformato in un bel codice embed

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

Questo è solo un esempio ma spero che vedere che cosa Sto guidando.

+0

Penso che la tua domanda dovrebbe essere rinominata in qualcosa come "Come posso ottenere il sorgente della pagina dopo che JS è stato eseguito". Non penso che una descrizione su come eseguire il codice con v8 ti possa aiutare, vero? –

risposta

3

Il tuo tipo di guida in due punti diversi 1) esecuzione di javascript al di fuori del browser 2) visualizzazione dei risultati di javascript su una pagina web.

Per il primo problema, mozilla rhino è un interprete javascript che viene eseguito in java. È possibile eseguire javascript tramite una riga di comando.

Per il secondo problema, guarda la scheda dom in Firebug, puoi vedere gli elementi del documento risultanti dopo l'esecuzione del javascript.

Oppure è possibile abilitare il debug degli script, salvare una copia locale della pagina e inserirla a debug(); dichiarazione.

+0

fyi - quell'ultima nota è un suggerimento win/visual studio, e hai detto che eri su linux, quindi probabilmente non si applica –

+0

Sto cercando Spidermonkey al momento perché c'è una lib di Perl che può parlarci. Rhino per quanto ho capito è praticamente la stessa cosa, ma per Java piuttosto che per C. –

+0

Per il 2 ° problema, la tua soluzione è buona come guardare l'output di Firebug, ma devo essere in grado di ottenerla sulla linea di comando, quindi usare un browser non è un'opzione. –

2

Penso che vogliate fare qualche scraping durante l'esecuzione di javascript. env.js descritto in http://ejohn.org/blog/bringing-the-browser-to-the-server/ potrebbe essere utile. Avevo intenzione di provarlo su qualche mio strumento, ma non potevo per la mancanza di tempo e sistemato con script specifici del sito.

+0

Molto interessante. Sembra molto, molto buono. –

+0

Se vai con env.js, c'è stato un po 'di lavoro dalla versione nel blog per renderlo più adatto ai browser. Il codice è disponibile all'indirizzo http://github.com/jeresig/env-js/tree/master. Ci sono anche diverse filiali con funzionalità aggiuntive. –

2

Date un'occhiata a http://phantomjs.org/

Si tratta di un browser web senza testa, così, si arriva a costruire il dom e manipolarlo come si farebbe in un vero browser . Ovviamente potresti esportare il risultato.

0

Se ti piace Python, puoi afferrare ghost.py da GitHub, che ti consente di creare un browser WebKit senza head e controllarlo dal tuo script Python. Ho usato questo in modo interattivo attraverso il Notebook IPython e ha funzionato abbastanza bene fuori dagli schemi. L'ho esteso per funzionare con BeautifulSoup, ed è stato bello.