Cliccando sui link condivisi su Vkontakte, si può notare che, come in altre reti sociali, in primo luogo si viene reindirizzati a un link "sicuro", dopo di che la rete sociale decide se permettere o meno all'utente di procedere. Molti utenti attenti hanno notato l'apparizione di "vk.com/away.php" nella barra degli indirizzi del browser per un mezzo secondo, ma, ovviamente, non ci hanno fatto molto caso.

Antefatti
Un giorno, un programmatore, completato un progetto, si rese conto di avere il desiderio di raccontarlo a tutti. Il progetto era ospitato su un server con un IP unico, ma senza un nome di dominio. Così, in fretta, fu creato un bel sottodominio di terzo livello nel dominio .ddns.net, che alla fine venne utilizzato come link.
Tornando dopo un po' al post, il programmatore scoprì che, invece del sito, si apriva una pagina di avviso di VK, informandolo del reindirizzamento a un sito non sicuro:

A prima vista, gli utenti esperti dovrebbero essere liberi di decidere a quale sito passare e a quale no, tuttavia Vkontakte la pensa diversamente e non fornisce alcuna possibilità di seguire il link senza trucchi.
Cosa c'è di sbagliato
Questa implementazione presenta diversi difetti significativi:
- Non c'è possibilità di aprire un sito sospetto. Come detto in precedenza, l'utente non ha la possibilità di superare il blocco. L'unico modo per aprire il link è copiare e incollarlo nella barra degli indirizzi.
- Rallenta l'accesso al link. La velocità di reindirizzamento dipende dal ping. Di conseguenza, con un ping elevato, possono perdersi preziosi secondi di vita, cosa che, come sappiamo, è inaccettabile.
- Monitoraggio dei click. Questo metodo facilita la raccolta di informazioni sulle azioni degli utenti, il che chiaramente viene sfruttato da VK, aggiungendo all'indirizzo sicuro l'ID del post da cui è stato effettuato il reindirizzamento.
Liberiamo Django
Una soluzione ottimale a tutti i problemi sopra citati potrebbe essere un'estensione per il browser. Per ovvi motivi, la scelta ricade su Chrome. Su Habr c'è un ottimo articolo dedicato alla scrittura di estensioni per Chrome.
Per creare tale estensione, avremo bisogno di creare due file in una cartella separata: un Manifest in formato JSON e un file JavaScript per monitorare l'URL corrente.
Creiamo il file Manifest
La cosa principale di cui abbiamo bisogno è dare all'estensione il permesso di lavorare con le schede e assegnare uno script eseguibile:
{
"manifest_version": 2,
"name": "Scappa da vk.com/away",
"version": "1.0",
"background": {
"scripts": ["background.js"]
},
"permissions": ["tabs"],
"browser_action": {
"default_title": "Scappa da vk.com/away"
}
}
Creiamo un file js
Qui è semplice: nell'evento che si attiva alla creazione di una nuova scheda, aggiungiamo un controllo sull'indirizzo URL, se inizia con "", lo sostituiamo con quello corretto, che si trova nella richiesta GET:
chrome.tabs.onCreated.addListener(function (tabId, changeInfo, tab) {
chrome.tabs.query({'active': true, 'lastFocusedWindow': true}, function (tabs) {
var url = tabs[0].url;
if (url.substr(0,23) == "https://vk.com/away.php"){
var last = url.indexOf("&", 0)
if(last == -1)last = 1000;
var url = decodeURIComponent(url.substr(27, last-27));
chrome.tabs.update({url: url});
}
});
});
Assemblare l'estensione
Assicurandoci che entrambi i file siano nella stessa cartella, apriamo Chrome, selezioniamo la scheda delle estensioni e facciamo clic su "Carica estensione non pacchettizzata". Nella finestra che si apre, selezioniamo la cartella dell'estensione scritta e facciamo clic su costruisci. Fatto! Ora tutti i collegamenti del tipo vk.com/away vengono sostituiti con quelli originali.
In conclusione
Certo, questo tipo di blocchi ha salvato molte persone da milioni di siti truffa, tuttavia, ritengo che le persone debbano avere il diritto di decidere se visitare o meno un link non sicuro.
Per comodità ho posizionato il progetto su .
Fonte: habr.com
