2010-01-15 18 views
44

Sto cercando di automatizzare alcune interazioni web, ovvero il download periodico di file da un sito Web sicuro. Questo in pratica comporta l'inserimento del mio nome utente/password e la navigazione verso l'URL appropriato.Firefox/Webkit su Linux senza testa e script?

Ho provato uno script semplice in Python, seguito da uno script più sofisticato, solo per scoprire questo particolare sito Web utilizza un odioso javascript e un meccanismo basato su flash per l'accesso, rendendo i miei metodi inutili.

Ho quindi provato HTMLUnit, ma non sembra che vogliano funzionare. Sospetto che l'uso di Flash sia il problema.

Non voglio davvero pensarci più, quindi mi sto proponendo per lo scripting di un vero browser per accedere e prendere il file che mi serve.

I requisiti sono:

  • Run sul server linux (cioè nessun X in esecuzione.). Se ho davvero bisogno di avere X, posso farlo, ma non sarò felice.
  • Essere affidabile. Voglio iniziare questa cosa e non pensarci più.
  • Essere scriptable. Niente di troppo sofisticato, ma dovrei essere in grado di dire al browser i vari passi da fare e le pagine da visitare.

Esistono buoni strumenti per un browser senza scrittura, senza X-less? Hai provato qualcosa di simile e se sì hai qualche parola di saggezza?

risposta

17

Ho eseguito l'attività correlata con il browser incorporato di IE (sebbene fosse un'applicazione gui con pannello componente browser nascosto). In realtà è possibile prendere qualsiasi layout engine e tagliare la logica di uscita. La navigazione deve essere effettuata tramite eventi simili a script.

È possibile utilizzare Crowbar. È la versione headless di Firefox (motore Gecko). Trasforma il browser in server RESTful che può accettare richieste ("fetch url"). Quindi analizza html, lo rappresenta come DOM, aspetta il ritardo definito per tutto lo script eseguito.

Funziona su linux. Suppongo che tu possa facilmente estenderlo per il tuo obiettivo usando JS e le ricche abilità di XULrunner.

+0

Il Crowbar supporta le richieste HTTP POST? La documentazione è molto scarsa ... – hamczu

1

Non so come fare le interazioni flash (e sono anche interessato), ma per html/javascript è possibile utilizzare Chickenfoot.

E per ottenere un browser headless + scriptable su Linux è possibile utilizzare lo Qt webkit library. Here is an example use.

+0

Grazie Richard, sembra buono, fammi provare. – Parand

38

Che dire di phantomjs?

+1

PhantomJS è di gran lunga il più semplice da integrare e sta sviluppando modalità di integrazione con i framework di test automatici. –

+2

Sì, ma se vuoi simulare qualcosa come accedere ad un sito web e usare i cookies, buona fortuna! –

+3

Phantomjs richiede un server X (http://code.google.com/p/phantomjs/issues/detail?id=33) –

8

Hai provato Selenium? Ti consentirà di registrare uno scenario di utilizzo, utilizzando un'estensione per Firefox, che può essere successivamente riprodotta utilizzando diversi metodi diversi.

Modifica: ho appena capito che si trattava di una risposta molto tardiva. :)

6

Dai un'occhiata allo WebKitDriver. Il progetto include l'implementazione headless di WebKit.

-1

iMacros per Linux consente lo scripting di Firefox e Chrome: http://wiki.imacros.net/Linux

+0

Mentre iMacros gira su Linux, le istruzioni descrivono specificamente una tecnica che richiede l'impostazione di un DISPLAY, il che significa che non è senza headless, ma ha bisogno di un ambiente con finestre. –

0

Per fare questo, ho solo scrivere estensioni di Chrome che inviano a CouchDBs (example e la sua Futon). Aggiungi il divano alle autorizzazioni nel manifest per consentire XHR tra domini.

(sono arrivato a questa discussione alla ricerca di un senza testa alternativa a ciò che ho fatto, avendo trovato questa discussione, ho intenzione di provare Crowbar ad un certo punto.)

Inoltre, considerando il bizzarro caratteristiche di questo sito, non posso fare a meno di chiedermi se puoi sfruttare qualche buco di sicurezza per aggirare il Flash e Javascript.

Problemi correlati