Script per interagire con HTTPS

Ciao a tutti, ho un problemino e volevo un vostro consulto.
Mi piacerebbe riuscire a fare uno script che si loggi sul sito della
vodafone e che vada a “simulare” l’interazione al fine di scaricarmi
in automatico la lista delle mie telefonate.
Secondo voi è fattibile ? Difficoltà ? Semplice ? Medio ? Difficile ?
Suggerimenti su dove reperire documentazione o esempi ?

senza alcun dubbio ruby-mechanize e’ quello che fa al caso tuo:

gem install mechanize

per gli esempi cerca su google qualcosina si trova,
la cosa migliore e’ che ti vedi i tester nella distribuzione.

trovi parecchi esempi.

:tele

adesso ci do un occhiata e mi riservo di porre altre domande se e/o
quando non capiro un tubo :wink:
Intanto grazie mille

2006/7/26, tele [email protected]:

Dopo aver seguito qualche esempio (con grande soddisfazione) ho
provato a scrivere il codice per loggarmi sul sito vodafone ma la form
non ha un button per il submit ma ha un immagine (sfruttando …
<input type=“image” name=“login_button” …) e quando provo a dare il
submit della query con agent.submit(form) ottengo uno scoraggiante
ArgumentError: wrong number of arguments (1 for 2)

Io ipotizzo che sia a causa della mancanza di un bottone per il submit
ma non ho idea di come fare a dirgli di usare l’immagine …
Qualche dritta ? Io intanto non demordo e proseguo nelle mie prove.

2006/7/26, Federico G. [email protected]:

yep quella e’ la via meccanica :wink:
in casi particolare ti conviene fare dei post diretti alle pagine
interessate,
quello che ti posso consigliare cerca di capire qual’e’ la pagina che
esegue la login e poi fai semplicemente un post diretto:

un esempio:

@agent.post("#{@base_url}/npts/lib/checkuser.jsp",{“uname”=>"#{user}",“pwd”=>"#{password}"})

dove uname e’ il campo username e pwd il campo password.
giusto per farti capire.

ok, è decisamente la strada da seguire, i prototipi in irb hanno dato
risultati fantastici, grazie mille :wink:

2006/7/26, tele [email protected]:

Ok, adesso purtroppo ho incontrato un altro scoglio … arrivo ad una
form dove facendo il submit parte il download del file. Io provo anche
a chiamare agent.submit con tutti i parametri necessari ma non ho idea
di come recuperare il file (sempre che lo scarichi) …

2006/7/26, Federico G. [email protected]:

Ok, adesso purtroppo ho incontrato un altro scoglio … arrivo ad una
form dove facendo il submit parte il download del file. Io provo anche
a chiamare agent.submit con tutti i parametri necessari ma non ho idea
di come recuperare il file (sempre che lo scarichi) …

mumble se sai che fai il get/post e ti scarica il file potresti
fare qualcosa del genere:

File::open("#{mk_path(data)}/MNP#{data}.csv",“w+”) do |f|
f << @agent.get("#{@base_url}/npts/estrattiDR/#{$1}").body
end

Adesso la logica mi è più chiara, grazie mille.
Purtroppo le pagine del sito vodafone sono una vera giungla e temo che
ci sia qualche problema visto che con il tuo metodo (ovviamente
adattato con i miei parametri) mi crea un file contenente solo

mentre se da browser immetto lo stesso indirizzo (ovviamente dopo
essermi loggato e aver fatto tutti i passaggi) parte il download del
file.
Probabilmente ho smarrito qualche parametro o ne ho messo qualcuno
sbagliato :frowning:
Sapete se esiste un modo veloce (magari un estensione per FF) che
permetta di vedere i parametri passati dal browser ? così magari mi
aggorgo di cosa ho sbagliato …

Il 26/07/06, [email protected][email protected] ha scritto:

Mi aggancio anch’io al thread.

Giusto ieri sera stavo cercando di “interagire” con il sito delle
poste per recuperare le informazioni sui buoni postali in maniera
agevole.
Dopo alcune scaramucce con la Net::HTTP, ho letto qui di
WWW:Mechanize, provato e visto che con il post diretto (il link della
pagina che mi interessa attiva una funzione javascript e mechanize,
si perde) ottengo esattamente quello che mi serve.

Un pò di regex ha fatto il resto per recuperare il valore che mi
interessava.

Questo per dire che WWW:Mechanize è una potenza (quasi come questa la
mailing list)!

Se a qualcuno interessa è a disposizione.

Ciao
Pietro

P.S. L’evoluzione successiva sarebbe quella di agganciarsi ad Excel
per prendere i dati dei buoni postali e inserire poi i valori
ritornati dal sito… ma questa è un’altra storia.

2006/7/27, Federico G. [email protected]:

esatto se nel codice javascript ritornato hai la location corretta a
quel punto vai di regexp senza bisogno di salvare il risultato farai un

page = agent.get(’…’)
page.sub(/…

vai di regexp per prenderti la location corretta
e poi un bel get diretto alla pagina giusta

Scusa, non mi sono spiegato bene.

La action del submit, all’interno della form, richiama un javascript
tramite un href,
così:
Calcola Calcola

A mechanize sono riuscito ad agganciare il link (usando la stringa
“calcola”) ma ricevo poi un errore che fa riferimento all’href.

La mia soluzione è stato verificare cosa facesse il codice javascript
(controllo dati e poi il submit) per poi costruire a mano la post
sull’url a cui veniva fatto il submit come descritto in precedenza in
questo thread.

Il regex mi è servito poi per estrarre dal body della risposta quanto
mi interessava: gli importi (nel formato X.XXX,XX):

numbers = page.body.scan( /\d*\.?\d+\,\d{2}/ )

Solo questo, nulla di così complesso come dicevi tu…

Ciao
Pietro

2006/7/27, tele [email protected]:

On 26/07/06, Federico G. [email protected] wrote:

Ciao a tutti, ho un problemino e volevo un vostro consulto.
Mi piacerebbe riuscire a fare uno script che si loggi sul sito della
vodafone e che vada a “simulare” l’interazione al fine di scaricarmi
in automatico la lista delle mie telefonate.

Ciao,

Una via del tutto diversa da quella che stai provando a seguire
potrebbe essere watir. E’ stato pensato per fare testing di
applicazioni web (cosa per la quale funziona benissimo peraltro…) ma
in uno scenario tipo il tuo, invece di pensare in termini di
“costruisco una request su questa url con questi parametri (astrusi)”
potresti pensare in termini di “scrivo foo nel textfield bar e clicco
sul pulsante invia”

…che e’ meglio!

A quanto ho visto si può fare tranquillamente con mechanize solo che
ho problemi ha dirli di premere sul pulsante per il submit visto che
il pulsante in realtà è un elemento immagine di tipo input (ed
evidentemente non è supportato).
Grazie cmq per il consiglio.

2006/7/27, Luca de Marinis [email protected]:

Il 26-07-2006 Federico G. ha scritto:

Io ipotizzo che sia a causa della mancanza di un bottone per il submit
ma non ho idea di come fare a dirgli di usare l’immagine …
Qualche dritta ? Io intanto non demordo e proseguo nelle mie prove.

Probabilmente non lo trova da solo. Specificaglielo.


blog: http://www.akropolix.net/rik0/blogs | Enrico F.
site: http://www.akropolix.net/rik0/ | RiK0
forum: http://www.akropolix.net/forum/ | Linux Counter: #299198

Si ma o non ho capito un cavolo dalla documentazione o c’è qualcosa
che mi sfugge …
Magari sbagliavo nel tentare di assegnare l’ImageButton alla query …

2006/7/28, Enrico F. [email protected]:

Federico G. wrote:

A quanto ho visto si può fare tranquillamente con mechanize solo che
ho problemi ha dirli di premere sul pulsante per il submit visto che
il pulsante in realtà è un elemento immagine di tipo input (ed
evidentemente non è supportato).

Hai provato a leggere la documentazione e a fare come suggerivo?


blog: http://www.akropolix.net/rik0/blogs | Enrico F.
site: http://www.akropolix.net/rik0/ | RiK0
forum: http://www.akropolix.net/forum/ | Linux Counter: #299198

Al momento non ho ancora scritto un file con lo script ma ho fatto
solo delle prove con irb e dovrei ricostruire i miei tentativi.
Magari quando ho più tempo mi metto a scriverli (per adesso ti
ringrazio per la disponibilità).

Per adesso aggiro il problema creando direttamente l’url con tutti i
parametri, il risultato finale è quello …

2006/7/28, Enrico F. [email protected]:

Federico G. wrote:

Si ma o non ho capito un cavolo dalla documentazione o c’è qualcosa
che mi sfugge …
Magari sbagliavo nel tentare di assegnare l’ImageButton alla query …

Se posti il codice funzionate, posso anche provare a darti una mano.
Non conosco mechanize, ma se leggi la doc, c’è scritto che il metodo che
a te da errore prende due parametri, di cui uno è di default nil.

Immagino che quando è a nil lui prende come invio il classico bottone di
“submit”. Se invece c’è un’altro bottone, lo devi specificare
manualmente (a senso). Il “modo” in cui lo specifichi, dipenderà dal
resto della documentazione (che non ho un’immensa voglia di leggere :slight_smile: )


blog: http://www.akropolix.net/rik0/blogs | Enrico F.
site: http://www.akropolix.net/rik0/ | RiK0
forum: http://www.akropolix.net/forum/ | Linux Counter: #299198