Spustelėję „VKontakte“ paskelbtas nuorodas, pastebėsite, kad, kaip ir kituose socialiniuose tinkluose, pirmiausia pereinama prie „saugios“ nuorodos, po kurios socialinis tinklas nusprendžia, ar vartotoją reikia leisti toliau, ar ne. Dauguma dėmesingų žmonių pastebėjo pusę sekundės „vk.com/away.php“ atsiradimą naršyklės adreso juostoje, tačiau, žinoma, neteikė tam jokios reikšmės.
priešistorė
Vieną dieną tam tikras programuotojas, baigęs kitą projektą, suprato, kad yra apsėstas noro visiems apie tai papasakoti. Projektas buvo talpinamas serveryje su unikaliu IP, bet be domeno vardo. Todėl domene .ddns.net greitai buvo sukurtas gražus trečiojo lygio padomenis, kuris galiausiai buvo panaudotas kaip nuoroda.
Po kurio laiko grįžęs prie įrašo, programuotojas aptiko, kad vietoj svetainės atsidaro VK šlaunikaulis, informuojantis apie perėjimą į nesaugią svetainę:
Atrodytų, patys protingi vartotojai turi teisę nuspręsti, į kurią svetainę eiti, o į kurią ne, tačiau „VKontakte“ mano kitaip ir nesuteikia jokios galimybės sekti nuorodą be ramentų.
Kas negerai
Šis įgyvendinimas turi keletą reikšmingų trūkumų:
- Nesugebėjimas atidaryti įtartinos svetainės. Kaip minėta pirmiau, vartotojas neturi jokio būdo įveikti trūkumą. Vienintelis būdas atidaryti nuorodą – nukopijuoti ir įklijuoti ją į adreso juostą.
- Lėtina nuorodų naršymą. Peradresavimo greitis priklauso nuo ping. Atitinkamai, su dideliu ping gali būti prarastos brangios gyvenimo sekundės, o tai, kaip žinome, nepriimtina.
- Perėjimo stebėjimas. Šis metodas leidžia lengviau rinkti informaciją apie vartotojo veiksmus, kuriuos, žinoma, naudoja VK, pridėdamas prie saugios nuorodos įrašo, iš kurio buvo atliktas perėjimas, ID.
Išlaisvina Django
Optimalus visų minėtų problemų sprendimas gali būti naršyklės plėtinys. Dėl akivaizdžių priežasčių pasirinkimas tenka Chrome. Ant stebulės yra puikus
Norėdami sukurti tokį plėtinį, turėsime sukurti du failus atskirame aplanke: json-Manifest ir JavaScript failą, kad galėtume stebėti dabartinį URL adresą.
Sukurkite manifesto failą
Svarbiausias dalykas, kurio mums reikia, yra suteikti plėtiniui leidimą dirbti su skirtukais ir priskirti vykdomąjį scenarijų:
{
"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"
}
}
Sukurkite js failą
Čia viskas paprasta: įvykyje, kuris iškviečiamas, kai sukuriamas naujas skirtukas, pridedame URL adreso patikrinimą, jei jis prasideda "
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});
}
});
});
Prailginimo surinkimas
Įsitikinę, kad abu failai yra tame pačiame aplanke, atidarykite „Chrome“, pasirinkite plėtinio skirtuką ir spustelėkite „Įkelti neišpakuotą plėtinį“. Atsidariusiame lange pasirinkite parašyto išplėstinio failo aplanką ir spustelėkite Surinkti. Pasiruošę! Dabar visos nuorodos, tokios kaip vk.com/away, yra pakeistos originaliomis.
Vietoj išvados
Žinoma, toks stuburo tipas išgelbėjo daugybę žmonių nuo milijonų nesąžiningų svetainių, tačiau manau, kad žmonės patys turi teisę nuspręsti, ar spustelėti nesaugią nuorodą, ar ne.
Kad būtų patogiau, paskelbiau projektą
Šaltinis: www.habr.com