PDA

View Full Version : [CasperJS]Scaricare automaticamente bollette Telecom Italia?


skazzo
30-10-2014, 11:53
Ciao a tutti!
spero che d queste parti ci sia ancora qualche cliente telecom, che come me è stufo di visitare il loro sito ogni bimestre per scaricare un semplice pdf (ho già chiesto/proposto in precedenza di ottenere la bolletta via mail per risparmiare banda sia a me che a loro, ovviamente non ho mai ricevuto risposta).
All'inizio stavo cercando di usare un semplice curl o wget ma ovviamente l'uso massivo di javascript e redirect del sito 187 rendono impossibile questa strada.
Cercando in giro ho trovato casper, una libreria JS che siede sopra PhantomJS e permette di automatizzare la navigazione internet, utile per i test sui propri siti ma anche per fare dello scraping.
Grazie a casper sono riuscito ad arrivare alla schermata in cui dovrei ottenere il PDF, ma tra popup e redirect non ci sto capendo nulla... ecco qui quello che ho fatto fino ad ora:


// usare casperjs --ignore-ssl-errors=yes bolletta.js

var casper = require('casper').create();

var url = 'http://www.telecomitalia.it';
var user = 'NOMEUTENTE';
var pwd = 'PASSWORD'

// login automatico
casper.start(url, function() {
this.fill('form#ti-auth-login1-form', {
username: user,
password: pwd
}, true);
});

// mi sposto sull'elenco fatture
casper.then(function(){
this.clickLabel('Elenco fatture','a');
});

// clicco sul primo pulsante per scaricare il pdf
casper.then(function(){
this.clickLabel('SCARICA/STAMPA PDF','a');
});

// aspetto che si carichi il popup, dovrebbe essere una pagina asp
casper.waitForPopup(/asp/, function(){
console.log("popup found");
});

casper.withPopup(/asp/, function() {
console.log(this.getHTML());
});

casper.run();

(ovviamente in questo momento non è possibile accedere all'area clienti per problemi al server, vediamo quando ritorna su...)

L'ultimo step mi restituisce una pagina asp con una funzione "onload" nel body che non fa altro che eseguire il comando submit presente nelle poche righe di codice, ma non riesco a capire se casper lo interpreta, e se sì come ottenere la pagina risultante (che dovrebbe essere il pdf che voglio scaricare).
Google non mi aiuta molto nella risoluzione di questo quesito, forse un waitForResource potrebbe funzionare, ma non so cosa mi devo aspettare, sopratutto perché quando uso un browser normale il pdf visualizzato ha comunque una url che termina con .asp...
qualcuno riesce a illuminarmi?
grazie per l'attenzione!

Don[ITA]
30-10-2014, 12:05
Ma non fai prima a pressare telecom per mandartele via mail?
Non è che stai chiedendo la luna eh :D
E mi pare strano che non ti abbiano risposto, quando la richiesi per i miei genitori non ebbi problemi di sorta, anzi fu semplice, veloce e indolore (stranamente :Prrr: )!

skazzo
30-10-2014, 14:12
;41716183']Ma non fai prima a pressare telecom per mandartele via mail?
Non è che stai chiedendo la luna eh :D
E mi pare strano che non ti abbiano risposto, quando la richiesi per i miei genitori non ebbi problemi di sorta, anzi fu semplice, veloce e indolore (stranamente :Prrr: )!
Grazie don, non credevo fosse possibile chiedere questo a Telecom. La mia mail a Telecom era un suggerimento in generale e non per il mio caso specifico, quindi forse è per quello che non è stato preso in considerazione.
Li contatto subito, però sarebbe comunque educativo riuscire ad ottenere la soluzione al mio problema ;)

brubaker
30-10-2014, 14:24
WOWW io stavo pensando il modo da far risultare pagate le bollette sul loro server senza averle pagate realmente...era molto piu' interessante....:D :D :D