NÀr man följer lÀnkar som publiceras pÄ Vkontakte kan man mÀrka att, precis som pÄ andra sociala medier, sker först en omdirigering till en "sÀker" lÀnk, varefter sociala nÀtverket beslutar om anvÀndaren ska fÄ fortsÀtta eller inte. De flesta uppmÀrksamma anvÀndare har noterat en halvsekunds fördröjning av "vk.com/away.php" i webblÀsarens adressfÀlt, men sjÀlvklart har de inte lagt nÄgon vikt vid det.

Bakgrund
En gĂ„ng, en programmerare, efter att ha slutfört ett projekt, insĂ„g att han var besatt av att berĂ€tta om det för alla. Projektet var placerat pĂ„ en server med en unik IP-adress, men utan domĂ€nnamn. DĂ€rför skapades hastigt en snygg tredje nivĂ„ underdomĂ€n i .ddns.net-domenet, som slutligen anvĂ€ndes som lĂ€nk.Â
NÀr programmeraren ÄtervÀnde till inlÀgget efter en tid, upptÀckte han att istÀllet för webbplatsen öppnades en Vkontakte-splash som informerade om att man var pÄ vÀg till en osÀker webbplats:

Det borde stÄ klart att kloka anvÀndare sjÀlva bör fÄ bestÀmma vilken webbplats de vill besöka och vilken de inte vill, men Vkontakte tycker annorlunda och erbjuder ingen möjlighet utan avgörande för att gÄ till lÀnken.
Vad Àr fel
Denna implementering har flera betydande nackdelar:
- Ingen möjlighet att öppna en misstÀnkt webbplats. Som nÀmnts tidigare har anvÀndaren ingen möjlighet att övervinna splashen. Det enda sÀttet att öppna lÀnken Àr att kopiera den och klistra in den i adressfÀltet.
- Fördröjer omdirigeringen av lÀnken. Hastigheten pÄ omdirigeringen beror pÄ ping. SÄledes kan vÀrdefulla sekunder gÄ förlorade vid hög ping, vilket, som vi vet, Àr oacceptabelt.
- Ăvervakning av klick. Denna metod underlĂ€ttar insamlingen av information om anvĂ€ndarens aktiviteter, nĂ„got som sĂ„klart Vkontakte utnyttjar genom att lĂ€gga till ID:t för inlĂ€gget som lĂ€nken kom ifrĂ„n till den sĂ€kra lĂ€nken.
Frigör Django
En optimal lösning pÄ alla ovan nÀmnda problem kan vara en webblÀsartillÀgg. Av uppenbara skÀl faller valet pÄ Chrome. Det finns en utmÀrkt artikel pÄ Habr som handlar om att skriva tillÀgg för Chrome. För att skapa ett sÄdant tillÀgg behöver vi skapa tvÄ filer i en separat mapp: en json-manifestfil och en JavaScript-fil för att övervaka den aktuella URL-adressen.
Skapa manifestfilen
Det viktigaste vi behöver göra Àr att ge tillÀgget behörighet att arbeta med flikar och tilldela ett körbart skript:
ĐлаĐČĐœĐŸĐ” ŃŃĐŸ ĐœĐ°ĐŒ ĐœŃĐ¶ĐœĐŸ â ЎаŃŃ ŃаŃŃĐžŃĐ”ĐœĐžŃ ŃазŃĐ”ŃĐ”ĐœĐžĐ” ĐœĐ° ŃĐ°Đ±ĐŸŃŃ Ń ĐČĐșлаЎĐșĐ°ĐŒĐž Đž ĐœĐ°Đ·ĐœĐ°ŃĐžŃŃ ĐžŃĐżĐŸĐ»ĐœŃĐ”ĐŒŃĐč ŃĐșŃОпŃ:
{
"manifest_version": 2,
"name": "Fly frÄn vk.com/away",
"version": "1.0",
"background": {
"scripts": ["background.js"]
},
"permissions": ["tabs"],
"browser_action": {
"default_title": "Fly frÄn vk.com/away"
}
}
Skapar en js-fil
HÀr Àr det enkelt: i hÀndelsen som utlöses vid skapandet av en ny flik lÀgger vi till en kontroll av url-adressen, om den börjar med "", ersÀtter vi den med rÀtt url som finns i GET-förfrÄgan:
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});
}
});
});
Samlar utvidgningen
Efter att ha kontrollerat att bÄda filerna ligger i samma mapp, öppnar vi Chrome, vÀljer fliken för tillÀgg och klickar pÄ "Ladda upp ett packat tillÀgg". I det öppna fönstret vÀljer vi mappen för den skrivna utvidgningen och klickar pÄ samla. Klar! Nu ersÀtts alla lÀnkar av typen vk.com/away med de ursprungliga.
Avslutande
SjÀlvklart har denna typ av blockerare rÀddat mÄnga frÄn miljontals bedrÀgliga webbplatser, men jag anser att mÀnniskor sjÀlva har rÀtt att bestÀmma om de vill klicka pÄ en osÀker lÀnk eller inte.
För enkelhetens skull har jag lagt upp projektet pÄ .
KĂ€lla: habr.com
