Når man følger links, der er publiceret på Vkontakte, kan man bemærke, at ligesom i andre sociale netværk, sker der først en overgang til et "sikkert" link, hvorefter det sociale netværk beslutter, om brugeren skal have videre adgang eller ej. De fleste opmærksomme mennesker har bemærket et halvt sekunds visning af "vk.com/away.php" i browserens adresselinje, men har selvfølgelig ikke givet dette meget opmærksomhed.

Background
Engang, efter at en programmør havde afsluttet et projekt, indså han, at han var besat af at fortælle alle om det. Projektet blev hostet på en server med en unik IP, men uden domænenavn. Derfor blev der hurtigt oprettet et pænt tredjeniveau-subdomæne i .ddns.net, som blev brugt som link.
Da programmøren vendte tilbage til indlægget efter nogen tid, opdagede han, at i stedet for hjemmesiden åbnedes en advarselsmeddelelse fra Vkontakte, der informerede om overgangen til et usikkert websted:

Det kunne se ud som om, at kloge brugere selv burde have ret til at beslutte, hvilket websted de ønsker at besøge, men Vkontakte tænker anderledes og giver ikke nogen mulighed for uden omveje at følge linket.
Hvad er der galt
Denne implementering har adskillige betydelige ulemper:
- Manglende mulighed for at åbne et mistænkeligt websted. Som nævnt før, har brugeren ikke mulighed for at omgå advarslen. Den eneste måde at åbne linket på er at kopiere det og indsætte det i adresselinjen.
- Forsinker overgangen til linket. Hastigheden af omdirigeringen afhænger af ping. Derfor, ved høj ping, kan værdifulde sekunder gå tabt, hvilket, som vi ved, er uacceptabelt.
- Overvågning af overgange. Denne metode letter indsamlingen af information om brugerens handlinger, som selvfølgeligt Vkontakte udnytter, ved at tilføje post-ID'et fra hvilket der blev klikket på linket til det sikre link.
Frigør Django
En optimal løsning på alle de ovennævnte problemer kan være en browserudvidelse. Af åbenlyse grunde vælges Chrome. Der er en fremragende artikel på Habr om skrivning af udvidelser til Chrome. For at lave en sådan udvidelse skal vi oprette to filer i en separat mappe: en json-manifestfil og en JavaScript-fil til at overvåge den aktuelle URL.
Opretter Manifest-filen
Det vigtigste, vi har brug for, er at give udvidelsen tilladelse til at arbejde med faner og tildele et eksekverbart script:
Det vigtigste, vi skal gøre, er at give udvidelsen tilladelse til at arbejde med faner og tildele det udførbare script:
{
"manifest_version": 2,
"name": "Løb Væk Fra vk.com/away",
"version": "1.0",
"background": {
"scripts": ["background.js"]
},
"permissions": ["tabs"],
"browser_action": {
"default_title": "Løb Væk Fra vk.com/away"
}
}
Opretter js fil
Her er det enkelt: I den begivenhed, der udløses ved oprettelsen af en ny fane, tilføjer vi en kontrol af URL-adressen, hvis den starter med "", så ændrer vi den til den korrekte, som findes i GET-anmodningen:
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});
}
});
});
Vi samler udvidelsen
Når vi har sikret, at begge filer ligger i samme mappe, åbner vi Chrome, vælger udvidelsesfanen og klikker på "Indlæs udpakket udvidelse". I det åbne vindue vælger vi mappen med den skrevne udvidelse og klikker på saml. Klar! Nu bliver alle links af typen vk.com/away ændret til de oprindelige.
Afslutning
Selvfølgelig har denne type stub reddet mange mennesker fra millioner af svindelsider, men jeg mener, at folk selv har ret til at beslutte, om de vil klikke på en usikker link eller ej.
For nemheds skyld har jeg placeret projektet på .
Kilde: habr.com
