Redirect

Stato
Discussione chiusa ad ulteriori risposte.

D_fool

Utente Silver
11 Novembre 2008
4
2
0
59
Salve ragazzi, qualcuno saprebbe indicarmi come far si che vengano seguiti tutti i redirect dato un certo url?
Il mio scopo è quello di immagazzinare in un array tutti i redirect che vengono fatti, per poi printarli e visualizzarli con calma, una sorta di http watcher, grazie per le eventuali risposte.
 
No, ShuraBozz. Lui ha una pagina del del genere:
Codice:
pag1.php
header ("Location: http://sito2.com/pag2.php");
pag2.php
header ("Location: http://sito3.com/pag3.php");
pag3.php
print "contenuto";
Ecco, lui con un codice vuole ottenere il contenuto di ciascun Location in modo da ottenere tutti i redirect.
 
Dunque, mi sa tanto che mi sono mal espresso io, chiedo venia xD
Vi faccio un esempio, se accedo ad un video di youtube, questo prima di reindirizzarmi al video vero e proprio effettua numerosi redirect no? Io voglio poter avere in un array tutti i redirect effettuati.
Spero di essermi spiegato, grazie dell' interessamento.
 
Parliamo di Perl vero?
Leggi i singoli pacchetti HTTP via IO::Socket, ti greppi le righe degli header del tipo "Location: (.*)", le printi belle belline e poi le segui ricorsivamente a tua volta.
 
Grazie per la risposta, tuttavia non sono riuscito a capire come fare... ho letto i documenti concernanti IO::Socket tuttavia non ho trovato nulla inerente al "greppare le righe degli header", non sono pratico di questo modulo se per cortesia puoi indicarmi dove reperire informazioni a riguardo o un piccolo esempio te ne sarei grato =)
 
con grep credo intenda usare una regex per estrarre gli header che contegano l'espressione "Locations*(.*)", in modo da escludere gli alti header. e poi te le printi
 
Esatto, qualcosa del genere:

Codice:
my @redirect = ();
if ($socketResult =~ /^Location: (.+)$) {
    $redirect[] = $1;
}
O almeno credo..
 
Codice:
my @redirect = ();
if ($socketResult =~ /^location: (.+)$/i) {
    push @redirect,$1;
}
Direi meglio insensitive. Tra l'altro non si può fare come nel php, in perl si usa push. E poi alla tua regex mancava il / finale
 
Il mio problema non è la regex, ma il modulo IO::Socket... perciò richiedevo un esempio completo...
 
io ti consiglio di usare le lwp, se devi fare questo (e se ho capito bene)
comunque dovrebbe essere qualcosa di simile
Codice:
use LWP::UserAgent;
my $ua = new LWP::UserAgent;
my $res = $ua->get("sito");
my $content = $res->content;

poi fai la regex sul contenuto (sarebbe il sorgente della pagina, come ctrl+u su firefox)

Comunque studiartele non farebbe male, eh......
 
Non è quello l' intento. Ciò che mi hai proposto rientra nelle mie competenze.
Ribadisco, dato un certo url, vorrei poter visualizzare tutti gli eventuali redirect che vengono effettuati, simulare la funzione di un http watcher insomma.
 
Una video di youtube a tua scelta và più che bene ( per la cronaca, è solo un esempio, perchè youtube effettua diversi redirect )
Ti ringrazio dell' interesse :)
 
Stato
Discussione chiusa ad ulteriori risposte.