Newsgroup: it.comp.os.linux.iniziare
Titolo: [OT] Intercettare links di una pagina

Avete presente flashgot, l'estensione di firefox?
Mi stavo chiedendo come funzioni cioè come faccia ad
intercettare i links presenti in una pagina.
Cosa c'entra con linux?..in effetti...
Il fatto è che usando da un po' il browser Links, mi
piacerebbe riuscire con qualche escamotage a carpire
tutti i links presenti nella pagina corrente che ho davanti
al naso.
In modo da poterli passare poi in un secondo passaggio ad
una lista o a un download manager o qualcosa così insomma.
Ancora mi scuso se l'argomento non è propriamente in topic,
ma ho pensato che il browser in esame sia più conosciuto in
un ng che avesse a che fare con linux.
A ben vedere i problemi sono due distinti:
1- Intercettare i links di una pagina web
2- trovare un modo per prendere l'indirizzo della pagina
   corrente visualizzata con Links e darlo in pasto al punto
   1.
Il punto 2 non saprei proprio come farlo, una mezza idea
anzi l'avrei ma non è proprio il massimo. Aspetto prima
vostri consigli.
Per il punto 1 invece penso sia più facile ottenere
risultati. Ma anche qui attendo vostre nuove.
Spero possiate darmi qualche punto di partenza da cui
iniziare a districare la matassa. Anche links a riferimenti
esteri sono benvenuti. Grazie mille in anticipo.

 esteri sono benvenuti. Grazie mille in anticipo.
Se vuoi provare a cimentarti, ti consiglio di provare Firebug sotto Firefox.
Permette di iniettare codice Javascript nella pagina (in locale,
naturalmente, non sul server :-) ) e ti permette di fare esperienza con
il DOM che Gecko ti fornisce. Non sono sicuro che sia lo stesso
disponibile per i plugin.
Altrimenti prova XulRunner. C'è un po' da studiare, ma permette di fare
veramente molte cose (vedi progetto prism)
PSK

JohnnyNewbie ha scritto:

#wget indirizzo.che.interessa/index.php -o tmp.html
#cat tmp.html | grep href > link.txt
#wget -i link.txt
Così nudo e crudo non lavora: devi sistemare i link nella parte del grep 
(riga 2 in questo esempio)
Una regexp funzionerebbe

 
Piů snello ed elegante della mia proposta :)
Basta ricordarsi che wget per essere reindirizzato allo stdout necessita 
del parametro "-O -", altrimenti si diventa matti (come il sottoscritto 
a suo tempo) .

 in automatico.
Anche questo pezzo mi risulta un po' ostico.
Va bè ad ogni modo ti ringrazio per la spiegazione e i links
di riferimento, sei stato molto disponibile, mi spice solo
che posso aver capito poco in alcuni punti. Pazienza, grazie
ancora.

 wget ... | grep -i href
Sì,
dunque, "wget ..." è un'operazione in più in quanto davanti
al naso ho già la pagina che pertanto è già stata scaricata.
Comunque non è un problema, tanto nel download con wget non
devono scaricarsi anche immagini o simili per cui dovrebbe
essere un'operazione leggera anche per la mia connessione
malmessa.
Al di la di questo però serve un modo "a monte per" carpire
l'indirizzo della pagina al browser "Links".
Potrebbe sembrare una banalità ma non vedo soluzione.

JohnnyNewbie ha scritto:

Correggimi se sbaglio:
Immagino che tu voglia fare tutto questo da un terminale, quindi senza 
ambiente grafico, da cui il fatto che vuoi utilizzare links
Tu sai già l'indirizzo al quale vuoi collegarti, immaginiamo che sia 
www.youtube.com
 per semplicità
A quel punto tu links non lo usi nemmeno: per ottenere come volevi 
l'elenco di tutti i link presenti nella pagina che ti interessa e 
poterli poi passare come argomento ad un'altra istanza di wget.
man wget
man grep
ti dovrebbero dare la risposta.
Se poi tu invece vuoi una sorta di voce di menù per links che dica 
"Scarica tutti i links presenti in questa pagina" credo che debba farla 
tu; a me non risulta esistere.
Ad ogni modo fra gpm links e screen non ci vuole niente a fare come ti 
stiamo suggerendo ;)

JohnnyNewbie ha scritto:

Correggimi se sbaglio:
Immagino che tu voglia fare tutto questo da un terminale, quindi senza
ambiente grafico, da cui il fatto che vuoi utilizzare links
Tu sai già l'indirizzo al quale vuoi collegarti, immaginiamo che sia
www.youtube.com
 per semplicità
A quel punto tu links non lo usi nemmeno: per ottenere come volevi
l'elenco di tutti i link presenti nella pagina che ti interessa e
poterli poi passare come argomento ad un'altra istanza di wget usi wget 
stesso.
Passare degli indirizzi con variabili url-encoded non è un problema 
enorme con gpm attivo: selezioni col tasto sinistro e poi un bel tasto 
destro e incolli
man wget
man grep
man gpm


 tu; a me non risulta esistere.
Il problema sta tutto lì.
Però molte cose dovrebbero essere presenti nel codice di
links.
Per esempio, se premo shift-G (G maiuscolo) ottengo un form
già riempito proprio con l'indirizzo della pagina corrente.
Sotto il form ci sono i due bottoni "GOTO" e "Cancel".
Ecco, sarebbe sufficiente che al posto del GOTO ci fosse
qualcosa come "Send LinK TO program" per esempio.
Inoltre links permette di associare ad un certo link un
programma esterno, le impostazioni in tal senso si trovano
sotto associations e file extensions.
In quel modo se si decide di aprire un link per esempio pdf,
a quello può essere passato a un programma esterno, per
visualizzarlo o scaricarlo per esempio...
Insomma nel cosdice di links dovrebbe già esserci tutto
l'occorrente e per ottenere l'indirizzo della pagina e per
fare in modo che quell'indirizzo venga rediretto verso un
programma esterno.
Per fare questo però mi sa che sia d'obbligo avere discrete
conoscenze di C, e purtroppo non è il mio caso.
Avete per caso in mente qualche idea per aggirare la
faccenda o affrontarla in modo indolore?
Comunque vi ringrazio molto per risposte e la disponibilità
dimostrata, nonostante fosse un argomento piuttosto
"tecnico" e neanche troppo in topic.  :-)

 esteri sono benvenuti. Grazie mille in anticipo.
da questo sito
http://www.schrenk.com/nostarch/webbots/DSP_download.php
scarica le librerie ed il link_verification_bot.php
è un ottimo punto di partenza, quasi di arrivo direi.

 è un ottimo punto di partenza, quasi di arrivo direi.
Il problema è anche l'interfacciarsi in qualche modo col
browser in modo comodo. Hai letto anche gli altri post?
Per quanto riguarda il link, potresti spiegarmi
sinteticamente come funzionano quegli script e
comesi usano? Non vedo la documentazione su quel sito
(tra l'altro quel link è impraticabile con browser come
links e compagnia, penso per colpa di javascript che non
supportano.
In ogni caso grazie come al solito per la disponibilità.
____________________________________
Mail: johnnynews at vfemail dot net

 conoscenze di C, e purtroppo non è il mio caso.
diciamo pure che stai per entrare in una valle di lacrime :)
hai idea di cosa sia mettere mano al codice di un prgramma grosso come un
browser?
in ogni caso, vediamo se c'è qualche modo per aggirare il problema.
no conosco così bene links, magari c'è la possiblità di impostare
qualche macro o rba del genere, ad esempio tu vuorresti trasformare quel
GOTO in stdin ad un altro programma. Non so, è possibile magari salvarlo
in un file quel link?
nel caso ti basterebbe far si che sia lo script esterno a stare in ascolto
alle salvate di links, invece di essere avviato dallo stesso (sì è
capito qualcosa?)
vedendola in quest'ottica sono sicuro che la pagina dove sei la puoi
salavare (tutto il sorgente dico), quindi potresti mettere in ascolto il
programma esterno sulle pagine salvate (magari dentro una dir
prestabilita), e da li
while 1
	for file in dir/*
		cat file | grep |sed blabla
		wget sui link
		rm file
	done	
	sleep un po'
eh? :)

 comesi usano?
sono script di corredo ad un libro che comprai l'anno scorso, la
documentazione č il libro stesso :)
http://nostarch.com/frameset.php?startat=webbots
(cmq ne ho anche la versione ebook se ti interessa)
certo no so quanto te ne possa fregare di sviluppare spider in php, pero'
č una bella lettura.
ciao

 eh? :)
Ma la storia dell'ascolto sarebbe quella lì? capisco era più semplice del
preisto allora. Ma da solo non ci sarei arrivato.


 è una bella lettura.
Ma per quello che serve a me, ovvero svolgere compiti abbastanza
semplici, al di là della bella lettura sarebbe più di utilità un
how-to operativo pratico di come usare quegli script e se è il caso.
Per esempio, ora che abbiamo appurato la possibilità di un workaround
forse il bot non serve più diirei.


 del preisto allora. Ma da solo non ci sarei arrivato.
beh alla fine sě, ciclo infinito, controlla che si sia verificato
l'evento (e nel caso fai l'azione), dormi un po'.

 l'evento (e nel caso fai l'azione), dormi un po'.
Ok, ok mi ero perso in un bicchier d'acqua.  :-P


 links che interessano....dico male?
questo è vero (via alla digressione), gli url possono essere scritti in
vari modi nell'attributo href:
path assoluto ->e questo ti andrebbe bene
path relativo -> allora ti servirebbe una routine che appende al base_url
del dominio il path relativo
azioni javascript -> ci puoi fare poco
ovviamente in  ogni caso (anche risolvendo il punto 2) con una analisi
poco curata ti beccheresti TUTTI gli url della pagina, anche di roba che
non ti interessa. Quindi ci sarebbe da fare anche un po' di parsing sugli
url ricavati chessò: accettando solo quelli all'interno di una certa
directory ed in ogni caso appartenenti solo al dominio dal quale hai
scaricato la pagina.
tutta questa roba roba è contenplata nelle librerie che ti ho indicato,
ma c'è da studiare :)

 ma c'è da studiare :)
Immagino...
Ma non vorrai mica farmi digerire quell'ebook che stai tentando di
rifilarmi !!??  ;-)
Saluti  :-P


 browser in modo comodo.
Una, cosa...
Stavo armeggiando con flashgot per passare i links ad uno
script (anzi una serie di script) che gestiscono una coda
di download da passare a wget.
In tutta questa faccenda ho un problema con dialog che non
vuol sapere di aprirsi correttamente in un Xterm...
cioè lo schema della faccenda è questo:
- Browser
- Flashgot
- listaurls.sh
    banalmente sbatte gli urls in un file di testo (urls)
- 
listen.down.sh
    "sta in ascolto" verificando l'esistenza del file di
    testo creato al punto precedente: appena lo vede fa
    partire lo script successivo. In questo script c'è anche
    una verifica degli urls sulla base dell'estensione
    desiderata (anche se con flasgot non sarebbe
    indispensabile).
- accoda.sh
    viene appunto richiamato dallo script precedente,
    coinvolge dialog per richiedere all'utente la conferma
    di dove piazzare i files, infine crea una lista
    ulteriore su due colonne del tipo "URL DESTINAZIONE_LOCALE".
    E' li dove incontro l'inghippo.
In pratica premo flashgot-all, e viene creato il file
"urls", da qui parte 
listen.down.sh
 che richiama accoda.sh.
Il problema sta nel come vada richiamato:
ho pensato di lanciarlo attraverso xterm:
SCRIPT=/path/to/accoda.sh
xterm -e $SCRIPT
Però nisba.
Lanciandolo invece a mano va...perchè?
non appare bene dialog, non si vede una mazza, insomma è
inutilizzabile. Potrebbe dipendere dal xterm che richiama la
bash non interattiva che magari è differente da quello che
lancio io (in termini di postazioni intendo)??
Ho provato anche con rxvt, e mrxvt ma nada. Stessa cosa.
Avete idee per caso?


 Avete idee per caso?
Nessuna idea?

 Nessuna idea?
mmmm.... cioč xterm parte ma dialog fnziona male?

 mmmm.... cioè xterm parte ma dialog fnziona male?
Esatto...riesco a capire perchè, ma a naso, mi viene da
pensare che sia un problema dovuto alle impostazioni di
xterm che magari, richiamato da uno script invece che
direttamente dall'utente non ha impostato qualcosa
necessario a dialog.
Per precisione l'ho provato con wmii come WindowManager, non
so se dipende da quello, non posso escludere nulla a priori.
Se potessi/poteste fare un veloce test non sarebbe male...lo
so, chiedo troppo, ma la butto lì comunque.
Sul fronte Links invece resta quel problema lì degli url
"relativi". Anche se mi è venuto in mente che con i
bookmarks di Links viene catturato anche l'url della pagina
corrente, ma da lì poi non saprei come fare e a isolarlo
ecc. Insomma mi sembrava comodo e abbastanza inteligente la
soluzione proposta del salvataggio della pagina e dello
script "demone" in ascolto...

 script "demone" in ascolto...
per forza, te l'ho consigliata io! :)
ciao