Anlan Blog

Un posto per scrivere quello che sento
Options:

Sappiamo tutti quanto stia diventando intrusiva la pubblicità che troviamo inserita a forza nelle pagine dei siti internet durante la normale navigazione. Ma se il singolo utente la considera più una seccatura (alla stregua della pubblicità che interrompe il programma televisivo preferito), per gli amministratori di rete diventa anche un problema tecnico: le pagine richieste dagli utenti della rete, con le loro continue inclusioni di banner, script ed immagini di varia natura, succhiano banda riducendo, per tutti, le risorse disponibili. Senza contare che, in genere, gli utenti, sapendo di essere protetti da un gateway aziendale, cliccano qua e là senza curarsi troppo della sicurezza e della miriade di informazioni di profilazione che vengono raccolte. Insomma, attivare una linea di difesa contro l’intrusione della pubblicità, aumenta non solo la sicurezza ma anche la velocità complessiva di navigazione.

Intendiamoci : non mi ritengo un integralista che ha deciso di abbattere il modello di revenue più diffuso sul web e, parimenti, sono convinto del fatto che per molte iniziative sia forse l’unico modello di sostentamento possibile. Ma certamente alcuni siti esagerano davvero esprimendo contenuti originali che, in rapporto alla pubblicità, stanno a 10Kb contro 200Kb o più. Animazioni, spesso ridondanti, pop-up automatici, immagini a tutto schermo ecc.

Esistono diversi motivi per approcciare la soluzione del problema: da quelli squisitamente personali (un esempio ne è l’eccellente AdBlock Plus per Mozilla Firefox) fino a sistemi di protezione a livello di gateway aziendale.

In questo articolo vedremo come configurare SQUID in modo che possa validamente aiutarci in questo scopo. Alla data di scrittura di questo documento ci occuperemo di come configurare Squid 2.6 su una distribuzione CentOS 5.4 (ovviamente do per scontato che già tutti i client della vostra rete possano navigare solo per il tramite del proxy).

Probabilmente già molti di voi sono a conoscenza del fatto che tra le moltissime direttive offerte dal file di configurazione di Squid è possibile impostare delle ACL (Access Control List) che, con opportuni filtri basati su espressioni regolari, ci consentono di creare dei divieti (deny) allo scaricamento di contenuti provenienti da specifici indirizzi (URL). Il rovescio della medaglia di questa tecnica è che, una volta individuate le origini dei contenuti da bloccare, chi naviga può vedersi comporre delle pagine con diversi riquadri che riportano informazioni di errore. Ed ecco che entra in gioco una eccellente caratteristica di Squid: la caratteristica di redirection delle richeste.

La redirection (o rewrite se preferite) utilizza uno script che dice a Squid di tenere d’occhio degli specifici indirizzi (URL) nelle richieste che riceve (per esempio ad.doubleclick.com). Quando un browser della rete inoltra una richiesta con questo URL a Squid, lo script reindirizza la richiesta ad un file locale, come ad esempio una immagine gif che contiene solo un pixel trasparente. E siccome questa richiesta in realtà non esce mai dalla rete locale, l’intera navigazione risulterà estremamente veloce oltre all’indubbio beneficio dato dal fatto che là dove ci si aspetta di trovare un bel banner animato, non vedremo (o meglio, gli utenti non vedranno) assolutamente nulla.

Ma come fare tutto questo ? E’ molto semplice … avete bisogno di tre cose :

  1. Squid … ovviamente installato e funzionante
  2. Un web server interno alla rete aziendale (che sia IIS o Apache non importa)
  3. Squid.redir … un piccolo script ideato e mantenuto da Craig Sanders che potete scaricare direttamente da questo link

Ecco come procedere all’installazione :

  1. Accedete alla shell console del vostro server Linux (CentOS per me)
  2. Create una directory di lavoro sotto la vostra home : mkdir ~/squid.redir [Enter]
  3. Accedete alla directory appena creata e scaricate il pacchetto che contiene lo script:
    wget http://taz.net.au/block/squid-redir.tar.gz [Enter]
  4. Estrate i file contenuti nell’archivio :
    tar -xzvf squid.redir.tar.gz [Enter]
  5. Verranno estratti i seguenti file : closeme.html, do_nothing.js, dot.gif, gen.squid.redir, Makefile, README, redir
  6. Cancellate il file gen.squid.redir appena estratto e sostituitelo con quello che trovate qui : gen.squid.redir
    rm -f gen.squid.redir [Enter]
    wget http://www.anlan.com/upload/gen.squid.redir [Enter]
  7. Copiate i seguenti file nella directory /usr/lib/squid: con privilegi di superuser eseguite i seguenti comandi:
    cp Makefile /usr/lib/squid
    cp gen.squid.redir /usr/lib/squid
    cp redir /usr/lib/squid
  8. Copiate i seguenti file nella web root di un vostro webserver interno alla rete.
    closeme.htm (verrà sostituito ai pop-up)
    do_nothing.js (per sostituire gli script come ad esempio quelli dei contatori dei siti)
    dot.gif (un’immagine trasparente di un solo pixel)
  9. Ora accedete alla cartella/libreria di squid : cd /usr/lib/squid [Enter]
  10. Con un editor di testo (io uso nano) aprite il file gen.squid.redir (quello scaricato al punto 6 e copiato al punto 7). Individuate la seguente riga:
    $BASE_URL=”//YOUR-WEB-SERVER-HERE”;
    e sostituite YOUR-WEB-SERVER-HERE con l’indirizzo IP oppure il nome di host del web server in cui avete copiato i file al punto 8. Se per esempio il vostro webserver risponde all’indirizzo IP 192.168.1.4 allora dovrete modificare la riga in questo modo:
    $BASE_URL=”//192.168.1.4″;
    Dopo aver effettuato la modifica salvate il file e chiudete l’editor.
  11. Ancora con l’editor aprite ora il file redir. Noterete che vi sono già diverse righe compilate. La sintassi del file è molto semplice. Ogni riga è divisa in due da uno o più caratteri di tabulazione. Nella parte di sinistra trovate la regular expression che deve essere ricercata all’interno dell’URL richiesto e nella parte destra, se si verifica una corrispondenza, la variabile che contiene l’indirizzo da ritornare a squid. Le variabili possibili sono 4 :
    • $1 -> ritorna lo stesso indirizzo senza modifiche
    • BLANK -> ritorna l’URL in cui, presso il TUO webserver, si trova l’immagine dot.gif
    • CLOSEME -> ritorna l’URL in cui, presso il TUO webserver, si trova il file closeme.html
    • NULLJS -> ritorna l’URL in cui, presso il TUO webserver, si trova il file do_nothing.js

    In pratica funziona così: squid riceve una richiesta da un browser della rete, passa la richiesta al programma di reindirizzamento che stiamo preparando, e quest’ultimo lo confronta con le espressioni regolari inserite. Se trova una corrispondenza ritornerà a squid l’URL “corretto” in modo che non venga inviata una richiesta ad internet ma solo una richiesta al web server per recuperare il file “fantasma”.

  12. Chiudete pure ora il file redir
  13. Aprite ora il file di configurazione di squid (per CentOS o RedHat si trova in /etc/squid/squid.conf): cercate il tag url_rewrite_program. Dopo esservi letti bene la spiegazione di questo tag attivatelo inserendo una riga non commentata:
    url_rewrite_program /usr/lib/squid/squid.redir
    salvate il file e chiudete.
  14. Tornate ora alla directory /usr/lib/squid. Digitate make e premete invio. La procedura genera il file squid.redir, lo contrassegna come eseguibile ed esegue automaticamente un reload di squid.

Okay … ora provate a navigare utilizzando il vostro squid come proxy. Probabilmente non vi accorgerete di nessuna variazione nelle pagine web visitate. E’ molto probabile: infatti le regular expressions fornite come standard in questo redirector sono piuttosto obsolete e riferite in massima parte a procedure di advertising di server americani. Vi servirà un po’ di analisi del file access.log di squid per capire cosa dovete reindirizzare.

Un aiuto ? Bene … supponiamo di NON voler mai far scaricare ai browser dei nostri utenti di rete dei javascript che abbiamo individuato provenire sempre da http://www.qualcuno.com/scripts/pippo.js . Come fare ? Semplice :

  1. Accedete alla console di comando del server squid
  2. Entrate nella directory /usr/lib/squid
  3. Con un editor di testo aprite il file di redir
  4. In fondo al file aggiungete una nuova riga come questa :
    //www.qualcuno\.com/scripts/.*\.js [TAB] NULLJS
    ovviamente [TAB] significa il tasto TAB
  5. Salvate il file e chiudete l’editor
  6. Eseguite : make [Enter]
  7. Squid viene ricaricato ed il reindirizzatore applicherà le sostitituzioni.

Firefox: risultati della ricerca in una nuova scheda

La casella di ricerca di Firefox (quella in alto a destra) è estremamente comoda e vi permette di scegliere il vostro motore di ricerca preferito. Tuttavia, per impostazione predefinita, ogni volta che inserite dei termini di ricerca e premete Invio, i risultati vengono caricati nella scheda (tab) che state correntemente visualizzando, perdendo quindi il contenuto che avete in esame.

Per ovviare a questa impostazione e fare in modo che ogni ricerca venga eseguita in una nuova scheda, senza che dobbiate aprirla manualmente, potete fare così:

  1. Aprite Firefox
  2. Nella barra dell’indirizzo digitate “about:config” (senza le virgolette) e date Invio (o Enter). Apparirà una maschera come la seguente:

  3. Cliccate su “Farò attenzione, prometto:) ed apparirà la lista delle impostazioni di configurazione di Firefox.
  4. Scorrete la lista fino a trovare il nome parametro browser.search.openintab e quindi fate doppio clic su di esso in modo che appaia impostato a True come nell’immagine seguente:

  5. Chiudete e riaprite Firefox
  6. A questo punto inserite un termine di ricerca qualsiasi nella casella delle ricerche in alto a destra. I risultati della ricerca verranno caricati in una nuova scheda senza “cancellare” la scheda che state visualizzando.

Se volete ripristinare il comportamento predefinito dovete semplicemente riportare (con un doppio clic) il parametro browser.search.openintab al valore False.

Chrome OS

Ero molto incuriosito dai rumors che giravano intorno a Chrome OS, il nuovo sistema operativo di Google. Spinto dall’inesauribile entusiasmo che si accende attorno alle eccellenti campagne di marketing promosse da BigG … mi sono deciso a scaricarlo e a provarlo con l’ausilio di VirtualBox. Se volete provarci anche voi potete seguire le istruzioni descritte a questo link.

Purtroppo ne sono rimasto parzialmente deluso. E’ pur vero che la definizione di OS (Operating System – Sistema Operativo) va intesa con il significato di “strato software minimale che permette di avviare un computer affinchè gli applicativi installati possano operare” … però qui il minimale è davvero … minimo.
Più che di un sistema operativo si tratta di un “minimo sistema operativo per avviare Chrome”. In pratica con Chrome OS l’unica cosa che avrete sul pc è Chrome, il browser di Google, il quale farà da browser (appunto), da desktop, da file manager da gestore applicazioni ecc. sempre per il tramite (preferibilmente) delle applicazioni “live” offerte da Google.

Risultato ? Pronti a lavorare in 7 secondi (tempo promesso e mantenuto dall’accensione del pc ai primi input che potete dare) … ma … solo se siete connessi al web. Il che significa che se non disponete di una connessione Internet, quantomeno decente, praticamente con il pc non ci farete nulla. Tutto è prelevato e depositato sul Web: i tuoi documenti, i tuoi file, la tua posta (Gmail) ecc. ecc. Senza una connessione internet non potrete nemmeno fare il login iniziale.

Ma perchè deluso ? Perchè ho commesso un grave errore di valutazione. Ho pensato come Chrome OS potesse incontrare le MIE esigenze (che non sono certo un mostro ma nemmeno un utente basico) e non ho pensato invece, come ha fatto Google, a quelle che sono le esigenze del vasto pubblico.

Sicuramente c’è del buono in una impostazione del genere: assunto il fatto che la stragrande maggioranza del tempo passato da un utente medio domestico davanti al computer è trascorso su Internet, Chrome OS risolve tutte quelle “rotture” che l’utente mediamente non osserva per tenere in buono stato di efficienza il suo computer: aggiornamenti software, programmi di sicurezza, driver per dispositivi, filesystem corrotti o da deframmentare ecc. Il pc (con Chrome OS) non è più un apparato autonomo che all’occorrenza comunica via internet: la connessione internet diventa parte integrante del computer tanto quanto un hard disk o lo schermo stesso.

Bisogna dare atto a Google di essere coerente nel mantenimento costante di una linea di sviluppo: già con Wave ci hanno indicato la strada di una interconnessione tra media diversi e ora con Chrome OS il cerchio si chiude rendendo il web il vostro sistema operativo.  Incontrare amici su Facebook, fare microblogging, consultare la posta, ascoltare musica, guardare i video su youtube, navigare il web per fare ricerche, comporre documenti o fogli elettronici … tutto è la fuori … nel mondo virtuale di internet. Il computer è ormai diventato un’appendice passiva di questo modello … una sorta di thin-client per internet. I “veri” pc (ferro + tanto software a bordo + tanta pazienza per tenere tutto in ordine) potranno essere facilmente relegati alla nicchia degli utilizzatori che “sviluppano” o che necessitano di performance particolari dettate da esigenze particolari (es. editing video, progettazione CAD, programmazione database ecc.)

Ma vista l’offerta sempre più alta, anche nel mondo delle aziende, di applicazioni erogate secondo paradigmi web, ovvero che non richiedono l’installazione di pesanti fat-client, disporre di macchine che deleghino sempre il meno possibile all’utenza non specialistica potrà essere un notevole beneficio in termini di manutenzioni.

Google Chrome : davvero serviva un altro browser ?

Sono passati solo un paio di giorni dal lancio della beta del nuovo browser di bigG che già partono le solite guerre di religione a favore di questo o quel browser ma, soprattutto, contro il grande inquisito IE, o meglio, il suo produttore. Personalmente non sono minimamente interessato a queste guerre che, per lo più, si basano su principi idealistici e molto spesso lontani dal senso della comune pratica.

Quello che mi incuriosisce, invece, è la ricerca del perchè un’altro colosso del Web abbia profuso impegno e, immagino, una considerevole somma di denaro al solo scopo di offrire, ancora una volta gratuitamente (si fa per dire – e vediamo poi il perchè), l’ennesimo browser. Certo … leggendo la documentazione tecnica (che non ho gran che approfondito per la verità) emergerebbero nobili ed encomiabili soluzioni (minimalista, veloce, nuovo processore Java ecc) ma tutto questo non riesce a togliermi dalla testa che, come dice un famoso spot … “c’è sempre qualcosa dietro”.

E’ abbastanza facile ed intuitivo rivolgere immediatamente la propria attenzione alle policy, piuttosto aggressive, di profilazione degli utenti da parte di Google che già legge la vostra posta con GMail, conosce il traffico dei vostri siti con Analytics, sa benissimo in che modo e quanto siano appetibili i contenuti (o i prodotti o i servizi) che vengono offerti dal vostro sito essendo il motore di ricerca più usato al mondo ed in funzione di questo conosce anche quali siano i trend di ricerca ecc. ecc. Ed è altrettanto facile comprendere come tutto questo sia indirizzato ad una migliore canalizzazione degli advert che attraverso AdSense e AdWords costituiscono probabilmente la maggiore voce di entrata dell’azienda fondata da Brin e Page.

Tutto questo fa parte sicuramente di un modello di business molto innovativo e, nei fatti, molto efficace. Ma non basta … non mi basta. Ci deve essere qualcosa d’altro che spinge Google a fare tanti sforzi. Ed allora non riesco a fare a meno di pensare come il grande avversario di Microsoft stia cercando di usare le stesse armi del concorrente: probabilmente le usa in modo diverso (mica tanto) ma lo scopo è lo stesso. Fidelizzazione … fidelizzazione a tutti i costi per essere pronti un giorno a cambiare le regole del gioco a proprio piacimento.

Così come Microsoft ha lasciato che la dilagante pirateria software creasse negli anni 80 e 90 una base di installato a dir poco impressionante, oggi Google attira le proprie cavie con il miele della gratuità, dell’apparente rispetto delle regole democratiche ed intanto accumula un potere smisurato. Basti pensare che oggi con il solo motore di ricerca Google è in grado di determinare le fortune o sfortune di una iniziativa web. E se domani cambiassero tutto ? Se da domani gli algoritmi di page rank e trust rank venissero soppiantati da qualcosa d’altro che imponesse una rivisitazione completa dei siti internet, delle politiche di affiliazione e di referring ? Se davvero questo succedesse i danni per alcuni e, magari, i vantaggi per altri sarebbero incalcolabili.

Ma torniamo al nuovo browser … perchè Google ha voluto scendere in campo di persona anzichè assecondare iniziative alternative a IE (vedasi Mozilla) già presenti e che comunque costituiscono un parco scelta piuttosto affollato ? Perchè era così sentita questa necessità ? Quali segnali dava il mercato dei browser ? Davvero le opzioni sul campo non erano sufficienti a soddisfare una domanda articolata ? Quale appeal extra può offrire Chrome rispetto a (solo per citarne alcuni) Firefox oppure Opera ?

Non sono convinto tuttavia che le risposte vadano cercate con queste domande. Se tutto si potesse semplicemente risolvere nel lancio dell’ultimate browser perchè non inserire (ad esempio) il nuovo processore Java dentro Firefox ? Invece … come da tradizione … bigG ha fatto le cose in casa, senza coinvolgere nessuno di esterno, senza tanti rumori e con una strategia, credo, ben precisa. Per me c’è di più. Probabilmente sono solo pensieri campati per aria ma secondo me Chrome è un test. Un test di lancio per qualcosa che allo stato attuale non è dato conoscere ma che, forse, in un futuro, si concretizzera in contenuti o servizi fruibili solo con quel browser, con la loro piattaforma applicativa.

Ed allora il controllo sarà completo, il grande rivale sarà sconfitto ma i veri sconfitti resteremo noi che ci troveremo a non poter più scegliere … un’altra volta.