4 messaggi dal 05 giugno 2013
www.miafoto.it
orrei eseguire manualmente con curl il comando:
java-script:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$SPWebPartManager1$g_bfee1d06_b90e_4116_9a45_603e7566dc51$lvsbm", "", true, "", "", false, false))

ma su un server diverso rispetto quello che ospita la pagina.

Come faccio?

Grazie,
Fabrizio
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao, benvenuto nel forum!

purtroppo il cURL non è in grado di eseguire codice javascript quindi dovrai fare in modo di simulare la richiesta web che scaturisce dall'esecuzione di quel comando.

Ti servirà un web debugger come Fiddler oppure gli strumenti di sviluppo di Internet Explorer, che andranno bene lo stesso.

Questi strumenti ti consentiranno di capire quali dati il client sta inviando al server, quando quel comando viene cliccato. In particolare, dovrai annotare le coppie chiave-valore che vengono inviate via POST.

Ricrea accuratamente una richiesta POST con il cURL, che contenga esattamente le stesse variabili e gli stessi valori.
Potrebbe non essere semplice, specie se la pagina in questione contiene controlli dinamici o è protetta da login.

La soluzione migliore sarebbe contattare l'autore dell'altro sito e chiedere la sua collaborazione affinché ti prepari un feed di dati in XML o una API in modo che sia molto più semplice per te ottenere quello che ti serve.

Se non collabora, ricorda che almeno deve essere messo a conoscenza del fatto che stai automatizzando delle operazioni destinate ad utenti in carne ed ossa.

In alternativa al cURL, se hai il controllo completo sul server su cui gira la tua applicazione, puoi installare ed usare un browser headerless come PhantomJS. Si tratta di un browser senza interfaccia grafica che puoi controllare con uno script. Con esso potrai visitare la pagina sull'altro server ed eseguire il comando javascript come da te richiesto inizialmente. Subito dopo, potrai anche leggere l'output della pagina risultante.

ciao
Modificato da BrightSoul il 08 giugno 2013 19.20 -

Enjoy learning and just keep making
4 messaggi dal 05 giugno 2013
www.miafoto.it
Naturalmente passo tutti i campi hidden come parametri del Curl; addirittura mi sono scritto una procedura che crea la lista automaticamente scrapando la pagina.
Il problema è che per accedere alla pagina giusta occorrono dei parametri get passati nell'url che vengono automaticamente aggiunti probabilmente all'esecuzione di quella funzione. In particolare generano un context che poi può essere riutilizzato liberamente, se naturalmente si riesce a creare.
Ho anche contattato l'ente il quale mi ha risposto di apprezzare i miei commenti: in pratica un risponditore automatico.
In questo ambito non so quanto potrebbe essermi utile il tuo Phantom. Piuttosto mi sto riducendo a fare sniffing sul traffico prodotto dalla loro app, ma mi sembra impossibile che un codice html non possa essere eseguito da remoto.
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,

fbartolom ha scritto:

mi sono scritto una procedura che crea la lista automaticamente scrapando la pagina.

Benissimo, così continuerà a funzionare anche se la pagina remota dovesse subire dei cambiamenti.

fbartolom ha scritto:

mi sembra impossibile che un codice html non possa essere eseguito da remoto.

E' possibile attraverso un software che sia in grado di interpretare l'html per costruire un albero logico di elementi. Deve anche possedere un motore javascript affinché il comando che hai postato possa agire su quegli elementi.
La descrizione di questo software corrisponde a quella di un browser web e la libreria cURL, da sola, non è in grado di fare tutto ciò. Può al massimo inviare le richieste web necessarie a portarti da un punto A ad un punto B in un'applicazione web.
  • Se riesci a farlo con una o due richieste web, riproducendo fedelmente i valori in querystring e del post, allora va bene il cURL.
  • Se ti accorgi invece che le richieste non si riescono a simulare facilmente o che ci sono troppi passaggi prima di arrivare a destinazione, allora è più semplice ricorrere ad un browser. Con PhantomJS sarai agevolato nell'automatizzare la navigazione nel sito remoto. Vedi gli esempi al paragrafo "Page automation". Però devi avere il controllo del server per poterlo installare.


buona domenica!
Modificato da BrightSoul il 09 giugno 2013 14.10 -

Enjoy learning and just keep making
4 messaggi dal 05 giugno 2013
www.miafoto.it
Il mio problema è che quella chiamata, come puoi anche tu vedere su http://www,atm.it nel giramilano, genera un codice alfanumerico che poi si passa come parametro get nei campi lvid e context. E senza di questi non funziona. Quindi è tale il dato che vorrei ricavare, non tanto la pagina che una volta conosciuto il dato me la carico e parso da solo.
Ho dato un'occhiata alla tua soluzione, ma intanto è JS mentre il mio parser gira su PHP, inoltre tra tutti gli esempi non ho trovato uno che faccia al caso in oggetto che è, ricordo, invocare quel benedetto WebForm_DoPostBackWithOptions per ottenere l'url giusto da chiamare.
Ciò ovviamente se non ho capito male: sono esperto di Mac e Linux; di backoffice Windows ne capisco pochino.
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,
lascia perdere, non è fattibile per motivi legali. Nel loro sito è scritto esplicitamente che non puoi rielaborare e condividere i contenuti del sito.
Contattali all'indirizzo email che è nella pagina delle condizioni di utilizzo per sapere se hanno a disposizione una API o un Webservice che puoi usare.

In alternativa, se ti occorre ottenere delle indicazioni per i mezzi pubblici, prova Google Maps API. Da qualche tempo sono state incluse anche le informazioni per i tragitti sui mezzi pubblici ma non sono tanto sicuro che includano i dati della metro. Qui trovi la documentazione.
https://developers.google.com/maps/documentation/directions/

ciao
Modificato da BrightSoul il 11 giugno 2013 23.26 -

Enjoy learning and just keep making
4 messaggi dal 05 giugno 2013
www.miafoto.it
Una volta che le cose sono in linea sono automaticamente condivise. Se non si vuole che lo siano si farebbe bene a tenerle riservate. Non si tratta di lasciare perdere, l'app è in produzione e funzionante, ma per questo problema la posizione della paline e la loro composizione non si aggiorna e quindi i suoi utenti milanesi potrebbero incorrere in disservizi rispetto quelli romani - che tra l'altro hanno problemi duali, paline aggiornate, ma tempi di attesa che ogni tanto si bloccano e vanno sbloccati. Uscendo dal tema tecnico direi sia una raffigurazione plastica dell'Italia attuale in un'ottica di open data e di valorizzazione dei big data in tutto il mondo: quando le uniche informazioni utili disponibili - gli orari dei bus - vengono trattati come una moglie siciliana.

Come ho fatto con l'Atac, ribalto la questione su di loro anche per l'ATM; spiace per l'immagine dell'Italia nei confronti dei turisti, ma ci posso fare davvero poco.
La scheda è quella a:
http://www.miafoto.it/refreshIA.html
Modificato da fbartolom il 12 giugno 2013 15.26 -

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.