Come mostrare il contenuto di una pagina web nel terminale
Come fare a visualizzare all’interno di un terminale il contenuto di un sito web? Vedremo in questo tutorial come sia possibile farlo mediante comandi appositi: la cosa può servire nel caso in cui il sistema su cui operate non disponga di un’interfaccia grafica ma operi, come nel caso degli hosting VPS, esclusivamente mediante shell. Attenzione: le procedure indicate in questo post devono essere eseguite con privigi di amministratore (ovvero con il comando prefisso sudo), mentre la scrittura HTTP(S) è da intendersi sia come HTTP che come HTTPS.
I comandi da shell utili a prelevare il contenuto di una pagina web dentro la stessa (similmente a come fa, di fatto, l’apposita funzione per prelevare il contenuto del sito del Webmaster Tools come se fosse un crawler) sono i seguenti:
- curl – Si tratta di un tool per trasferire dati da e verso un server web, basilarmente mediante i protocolli HTTP(S) e FTP.
- lynx – Si tratta di un browser testuale vero e proprio, utile per tutit gli utenti che vogliano consultare pagine web senza poter disporre di un’interfaccia grafica (GUI).
- wget – Permette di scaricare attraverso HTTP(S) e FTP vari tipi di file dal WEB
- w3m – Altro browser testuale per il terminale molto diffuso.
Installazione dei tool
La maggiorparte dei quattro tool elencati potrebbe non essere presente nella vostra versione di Linux: di seguito vengono riportate le istruzioni per installarli. Su Debian / Ubuntu Linux bisogna installare curl, wget, lynx e w3m in questo modo:
sudo apt-get install curl wget lynx w3m
Su Fedora / RHEL / CentOS il comando va variato così:
sudo yum install curl wget lynx w3m
Su FreeBSD Unix, infine, scriveremo:
sudo pkg_add -v -r curl lynx w3m wget
Esempi basilari…
L’utilizzo di questo genere di istruzioni è molto semplice: un esempio basilare di uso di curl potrebbe servire a visualizzare nel terminale la pagina HTML presente ad un indirizzo web:
curl https://blog.keliweb.it/?p=3817 ...
Per quanto riguarda Lynx possiamo usarlo in questo modo:
lynx -dump https://blog.keliweb.it/?p=3817 ...
Analogamente per wget:
wget -O https://blog.keliweb.it/?p=3817 ...
e per w3m:
w3m -dump https://blog.keliweb.it/?p=3817 ...
…ed avanzati!
Per realizzare alcuni esempi avanzati possiamo fare uso di variabili all’interno della shell: questo significa che andremo a scrivere cose di questo genere.
page="$(curl https://blog.keliweb.it/)" echo "$page"
A questo punto siamo pronti, ad esempio, ad effettuare operazioni complesse come salvare i bookmark di del.icio.us:
wget --user=tuausername --password=tuapassword https://api.del.icio.us/v1/posts/all -O my-old-bookmarks.xml
e successivamente:
$ more my-old-bookmarks.xml
Possiamo anche, in certi siti web, salvare tutti i file pubblici con una certa estensione (ad esempio MP3), impostando un ciclo che scarichi tutto ciò che corrisponda al pattern che richiediamo:
mp3=$(lynx -dump http://server.conmp3.esempio/media/index.html | grep 'http://' | awk '/mp3/{print $2}') for i in $mp3 wget $i done