Automatizzare Firefox con iMacros

settembre 1, 2009 Scripting e dintorni

Oggi cercavo una soluzione rapida per automatizzare alcune operazioni in Firefox. Tipicamente questo genera di cose le faccio attraverso uno script in PERL ma stavolta la situazione era un po’ più complessa del solito e sinceramente volevo anche provare qualcosa di nuovo. Lì per lì ho cercato in lungo e in largo un modo per “scriptare” Firefox che fosse il più completo possibile ma senza dover andare a scrivere un’estensione ad-hoc. Dopo lunghe peripezie sono giusto a iMacros, un’estensione che dota il nostro amato browser di un sistema di macro.

imacros

Le macro possono essere registrate e successivamente editate. Ad esempio questa è una macro che ho registato per prova:

TAB T=1
URL GOTO=www.google.it
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:f ATTR=NAME:q CONTENT=test
TAG POS=1 TYPE=TD ATTR=TXT:
TAG POS=1 TYPE=INPUT:SUBMIT FORM=NAME:f ATTR=NAME:btnG&&VALUE:Cerca<SP>con<SP>Google

Questa macro apre la pagina iniziale di Google nella prima scheda della finestra, inserisce la scritta test nel campo di ricerca e preme il pulsante per avviare la ricerca.

Le macro create possono essere modificate così da ottenere esattamente quello che vogliamo come riempire un form velocemente, aprire una serie di tab con i siti specificati, seguire dei link o anche estrarre dei dati. Per scoprire tutte le potenzialità di questa estensione vi invito a consultare la wiki ufficiale che offre una buona documentazione. Vi segnalo inoltre che esistono anche delle versione a pagamento di questa estensione che sono ancora più flessibili e consentono anche di interfacciare iMacros con il WSH ( Windows Script Host ) per scrivere dei veri e propri programmi che si appoggiano sulle macro.

E ora, per non rimanere troppo sul vago, ecco il motivo per cui ho voluto avere a disposizione queste potenzialità. Il mio obiettivo era di raccogliere velocemente e in modo del tutto automatico una buona quantità di CAPTCHA dal sito di Vodafone Italia per una mia personalissima ricerca sulla difficoltà di decifrare automaticamente con un programma tali immagini. Per portare avanti la ricerca mi servivano ovviamente tanti campioni per cui ho approntato un sistema per salvarli automaticamente da Firefox grazie a iMacros.

Ecco la macro che ho scritto:

VERSION BUILD=6240709 RECORDER=FX
ONDOWNLOAD FOLDER=* FILE=captcha_{{!NOW:yyyymmdd_hhnnss}}.jpg
TAG POS=1 TYPE=IMG ATTR=HREF:http://*generateimg.do CONTENT=EVENT:SAVEPICTUREAS
REFRESH

Vi spiego brevemente cosa fa di preciso. Prima di tutto manualmente io apro la pagina del sito della vodafone, effettuo il login e vado nella sezione per l’invio gratuito dei messaggi. Compongo un messaggio di prova e clicco sul pulsante per inviarlo fintanto che arrivo ad una pagina come quella nella foto seguente.

Pagina del CAPTCHA Vodafone

Pagina del CAPTCHA Vodafone

A questo punto è possibile attivare la macro. Per farlo occorre premere il pulsante F8, selezionare la macro desiderata dall’elenco, settare il valore Max al numero di immagini CAPTCHA desiderate e cliccare su Eseguire (Loop). In questo modo la macro verrà eseguita ciclicamente per il numero di volte che desideriamo, implementando una sorta di ciclo for.

Ora quello che fa la macro è impostare una cartella e un nome file per l’immagine da scaricare ( grazie al comando ONDOWNLOAD ). La variabile speciale {{!NOW:yyyymmdd_hhnnss}} serve proprio per dare un nome diverso ad ogni immagine che salviamo. La linea successiva cerca il tag IMG ( un tag immagine ) con l’attributo sorgente specificato ( generateimg.do è il nome del file immagine del CAPTCHA ) e provvede a salvare l’immagine in esso contenuta.

Fatto il ciclo riparte effettuando come prima operazione un refresh della pagina con il CAPTCHA così che quest’ultimo sia nuovamente generato con una nuova immagine. E qui c’è una prima difficoltà che a prima vista potrebbe rovinare tutto il bel lavoro fatto finora. Quando viene fatto il refresh infatti Firefox mostra una finestra di dialogo che chiede la conferma per re-inviare i dati POST della pagina ed è necessario confermare cliccando su OK per proseguire con il salvataggio dei nuovi CAPTCHA.

La finestra di dialogo per la conferma della ritrasmissione

La finestra di dialogo per la conferma della ritrasmissione

Cliccare manualmente vorrebbe dire ancora una volta reinserire il componente umano nel progetto, cosa che io voglio evitare a tutti i costi ;-) Per questo mi è venuto in aiuto questo ottimo programma, AutoMouseClicker, un software gratuito di pochissimi kilobyte che però fa tutto quanto gli è richiesto.

La finestra principale di AutoMouseClicker

La finestra principale di AutoMouseClicker

Dalla finestra principale è sufficiente cliccare su “Locate” per decidere, attraverso il puntatore del mouse, il punto in cui volete che il software simili i click del vostro topo elettronico, impostate poi un intervallo in millisecondi nella casella di testo “Click Interval in ms:” ( io ho lasciato 1000 ms ) e premete su START per avviare il processo. A questo punto il software continuerà a cliccare nel punto in cui appare il pulsante OK della finestra di dialogo per la ritrasmissione rendendo completamente automatico il processo di download delle immagini CAPTCHA. That’s the way I like it ;-)

Dopo aver scaricato 50 CAPTCHA in circa 2 minuti sono andato nella cartella dove iMacros salva i file scaricati ( C:\Users\<MIO_NOME_UTENTE>\Documents\iMacros\Downloads in Windows 7 ) ed eccoli li!

Spettacolo!

Spettacolo!

E questo è solo un esempio di quello che potete fare, buon divertimento!

Tags: , , ,

Comments (3)

 

  1. [...] il codice, non voglio dire che ci troviamo allo stesso livello di semplicità d’uso di iMacros, ma in questo caso le possibilità sono praticamente infinite e i limite veramente pochi. Abbiamo [...]

  2. Andrea scrive:

    Notevole … davvero notevole.
    Grazie per il bellissimo articolo, spero ne seguiranno altri. ;)

  3. Peeez scrive:

    ..Oppure… Prendere qjacksms e modificare 2 righe di sorgente per fare la stessa cosa :)

Leave a Reply

*