Sbarazzarsi di “vk.com/away.php” o seguire i collegamenti di una persona sana

Facendo clic sui collegamenti pubblicati su VKontakte, noterai che, come in altri social network, prima avviene il passaggio a un collegamento "sicuro", dopodiché il social network decide se consentire o meno l'accesso all'utente. Le persone più attente hanno notato la comparsa di mezzo secondo di "vk.com/away.php" nella barra degli indirizzi del browser, ma, ovviamente, non gli hanno attribuito alcuna importanza.

Sbarazzarsi di “vk.com/away.php” o seguire i collegamenti di una persona sana

Sfondo

Un giorno, un certo programmatore, dopo aver completato un altro progetto, si rese conto di essere ossessionato dal desiderio di raccontarlo a tutti. Il progetto era ospitato su un server con IP univoco, ma senza nome di dominio. Pertanto nel dominio .ddns.net è stato creato rapidamente un bellissimo sottodominio di terzo livello, che alla fine è stato utilizzato come collegamento. 

Tornando al post dopo un po ', il programmatore ha scoperto che al posto del sito si stava aprendo uno stub VK, che informava del passaggio a un sito non sicuro:

Sbarazzarsi di “vk.com/away.php” o seguire i collegamenti di una persona sana

Sembrerebbe che gli stessi utenti intelligenti abbiano il diritto di decidere su quale sito visitare e quale no, ma VKontakte la pensa diversamente e non offre alcuna opportunità di seguire il collegamento senza stampelle.

Cosa c'è che non va

Questa implementazione presenta diversi svantaggi significativi:

  • Impossibilità di aprire un sito sospetto. Come detto sopra, l'utente non ha modo di superare lo stub. L'unico modo per aprire il collegamento è copiarlo e incollarlo nella barra degli indirizzi.
  • Rallenta la navigazione dei collegamenti. La velocità di reindirizzamento dipende dal ping. Di conseguenza, con un ping elevato si possono perdere preziosi secondi di vita, il che, come sappiamo, non è accettabile.
  • Monitoraggio della transizione. Questo metodo semplifica la raccolta di informazioni sulle azioni dell'utente, che, ovviamente, è ciò che VK utilizza, aggiungendo al collegamento sicuro l'ID del post da cui è stata effettuata la transizione.

Liberare Django

La soluzione ottimale a tutti i problemi di cui sopra può essere un'estensione del browser. Per ovvi motivi la scelta ricade su Chrome. Ce n'è uno eccellente sull'hub articolo Un articolo dedicato alla scrittura di estensioni per Chrome.

Per creare tale estensione, dovremo creare due file in una cartella separata: un json-Manifest e un file JavaScript per monitorare l'indirizzo URL corrente.

Crea un file manifesto

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": "Run Away From vk.com/away",
  "version": "1.0",
  "background": {
    "scripts": ["background.js"]
  },
  "permissions": ["tabs"],
  "browser_action": {
    "default_title": "Run Away From vk.com/away"
  }
}

Crea un file js

Qui tutto è semplice: nell'evento chiamato quando viene creata una nuova scheda, aggiungiamo un controllo per l'indirizzo URL se inizia con "vk.com/away.php", quindi sostituiscilo 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

Dopo esserti assicurato che entrambi i file si trovino nella stessa cartella, apri Chrome, seleziona la scheda dell'estensione e fai clic su "Carica estensione decompressa". Nella finestra che si apre, seleziona la cartella del file esteso scritto e clicca su Raccogli. Pronto! Ora tutti i collegamenti come vk.com/away vengono sostituiti con quelli originali.

Invece di una conclusione

Naturalmente, questo tipo di stub ha salvato molte persone da milioni di siti fraudolenti, tuttavia, credo che le persone stesse abbiano il diritto di decidere se fare clic o meno su un collegamento non sicuro.
Per comodità ho postato il progetto su github.

Fonte: habr.com

Aggiungi un commento