Estrarre dati da pagine web con accesso login e password

Brevi guide create dagli utenti, per gli utenti
Rispondi
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Estrarre dati da pagine web con accesso login e password

Messaggio da unlucky83 »

ESTRARRE DATI IN CALC DA UNA PAGINA WEB CHE RICHIEDE ACCESSO CON LOGIN E PASSWORD

L'accesso ad una pagina che è visibile dopo aver effettuato il login, richiede la gestione dei cookie.
Al momento la funzione:
Inserisci>Collegamento a dati esterni
Non consente di gestire i cookie (infatti non c'è alcuna opzione per impostare i valori di login e password)

Per ovviare a questo inconveniente propongo di dividere il problema in due problemi, per i motivi che vi esporrò in seguito:
1- Scaricare la pagina desiderata sul proprio pc
2- Estrarre i dati dalla copia della pagina in locale, non quindi direttamente dalla pagina sul web.

Affrontiamo il primo punto
1- Scaricare la pagina desiderata sul proprio pc
È possibile farlo, istallando sul proprio pc un software leggero ma potente, chiamato “wget”.
wget è un programma da linea di comando (ovvero viene eseguito dal prompt dei comandi o dal terminale) che consente di scaricare anche interi siti web.
Le opzioni più interessanti, per il nostro scopo sono:
--save-cookies
Consente di salvare i cookies
--keep-session-cookies
Mantiene la sessione di cookies attiva
--post-data
Consente di passare i parametri del metodo POST. I riquadri di inserimento di login e password nelle pagine web, usano proprio il metodo POST.
--load-cookies
Carica i cookies salvati
--output-document
Percorso e nome del documento di output, ovvero il percorso e nome della nostra pagina scaricata sul pc.

Se usassimo direttamente un terminale linux dovremmo dare i seguenti due comandi:
comando1: wget -nv –save-cookies nomefilecookies --keep-session-cookies --post-data 'id=username&pwd=password' -O - paginawebdilogin
comando2: wget -nv --load-cookies nomefilecookies --keep-session-cookies ' --output-document=nomefileoutput paginawebdascaricare

Invece usando il prompt dei comandi di Windows
comando1: C:\Program Files\GnuWin32\bin\wget -nv –save-cookies nomefilecookies --keep-session-cookies --post-data 'id=username&pwd=password' -O - paginawebdilogin
comando2: C:\Program Files\GnuWin32\bin\wget -nv --load-cookies nomefilecookies --keep-session-cookies ' --output-document=nomefileoutput paginawebdascaricare

Vi spiego alcune voci:
-nomefilecookies
Nome del file di salvataggio dei cookies es: “C:\percorso\mycookies.htm”
-nomefileoutput
Nome della pagina web scaricata sul nostro pc es: “C:\percorso\Dati.htm”
-paginawebdilogin
Url della pagina di login es: “http://bongo4ever.altervista.org/index.php
-paginawebdascaricare
Url della pagina contenente i dati es: “http://bongo4ever.altervista.org/user.php
-username
Vostro nome di login es: “Pippo”
-password
Vostra password es: “Pluto”
-C:\Program Files\GnuWin32\bin\
Questo è il percorso di istallazione del programma wget predefinito per windows 7. Per altre versioni di windows o per altre release del programma wget, questo percorso può variare.
-id e pwd
Questi due elementi, sono i nomi, in genere, delle variabili usati nella pagina web per identificare login e password.
Bisogna verificare i nomi corretti guardando il file sorgente della pagina di login o se il browser ha la funzione “ispezionare l'elemento”, usarla nei campi di inserimento.
Prendendo per esempio:
http://bongo4ever.altervista.org/index.php
è un vecchio sito che ho aperto ai tempi in cui partecipavo ad un gioco online
Premiamo ctrl+u per visualizzare il file sorgente e facendo delle ricerche (login e password), si scopre che i nomi usati sono
name al posto di id
pass al posto di pwd

Per comodità, i valori di tutte queste variabili le inserisco in delle celle e userò nu pulsante che avvierà la macro che effettuerà il download della pagina.
La macro preleverà il contenuto delle celle e tramite al comando “Shell”, eseguirà le due righe di comando, senza la necessità di dover aprire alcun terminale o prompt dei comandi.
Sempre per comodità, i due file scaricati (il file cookies e la pagina desiderata), verranno salvati nella stessa directory in cui avete salvato il seguente file.
Quando aprirete il file in locale con il vostro browser, se tutto è andato a buon fine, vedrete la pagina desiderata tale e quale a quella del sito (priva delle immagini).
In allegato, trovate il file che fa quanto detto, con username e password valide per accedere al sito che ho preso come esempio

Provate anche voi:
-paginawebdiloginhttp://bongo4ever.altervista.org/index.php
-paginawebdascaricarehttp://bongo4ever.altervista.org/user.php
-username “Pippo”
-password “Pluto”
-name al posto di id
-pass al posto di pwd
Allegati
EstrarreDalWeb.ods
(26.01 KiB) Scaricato 795 volte
Ultima modifica di unlucky83 il giovedì 16 ottobre 2014, 21:03, modificato 2 volte in totale.
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Estrarre dati da pagine web con accesso login e password

Messaggio da unlucky83 »

unlucky83 ha scritto: Quando aprirete il file in locale con il vostro browser, se tutto è andato a buon fine, vedrete la pagina desiderata tale e quale a quella del sito (priva delle immagini).
E quando questo non succede??
Se la pagina non è quella desiderata, o per meglio dire, avete scaricato la pagina che visualizzerebbe un utente senza aver fornito le credenziali di accesso, dovete sapere che la causa sono i cookie sbagliati.
Potrebbero essere sbagliati per vari motivi:
1)non si è sufficientemente competenti nell'osservare il file sorgente della pagina web di login e quindi si passano nomi di variabili errati o insufficienti per il sito specifico
2)il sito non è un sito http, ma uno più sicuro, un https
3)altre cause misteriore

Quindi che si fà? Si rinuncia al progetto?
Io di solito scendo ad un compromesso e vi spiego in cosa consiste.
1)Esporto i cookies del mio browser in un file (Firefox ha più di un'estensione da poter istallare per tale scopo)
2)invece di mettere nella mia macro, i due comandi di "wget" (denominati nel precedente post "comando1" e "comando2"),adopero solo il secondo comando, facendo caricare a wget i cookies che mi sono esportato manualmente dal browser.
Tutto così funzionerà a meraviglia, fino a che i cookies non scadranno e/o non si cambia la password per l'accesso al sito.
Prossimamente fornirò un allegato idoneo per seguire questa procedura, così potrete provarlo anche con il nostro forum, che appunto è un https:// :mrgreen:
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Estrarre dati da pagine web con accesso login e password

Messaggio da unlucky83 »

Se invece la macro va a buon fine e vi dice che ha creato il file, ma non lo trovate salvato sul vostro pc, probabilmente questo è successo perchè la cartella di destinazione (la stessa in cui avete salvato il mio file ods), presenta degli spazi.

E' sufficiente modificare un rigo della macro nel modo seguente:

Sostituite

Codice: Seleziona tutto

fileout=path & nomefileoutput
con

Codice: Seleziona tutto

fileout=chr(34) & path & nomefileoutput & chr(34)
p.s.
E' sconsigliato avere spazi nei nomi delle cartelle, anche windows lo ha capito, ma in xp gli spazi ancora venivano usati
C:\Documents and Settings\...
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Rispondi