Accesând linkurile plasate pe Vkontakte, se poate observa că, la fel ca în celelalte rețele sociale, întâi are loc o redirecționare către un link „sigur”, după care rețeaua socială decide dacă să permită utilizatorului să continue sau nu. Majoritatea oamenilor atenți au observat apariția în adresă a „vk.com/away.php” timp de o jumătate de secundă, dar, desigur, nu i-au dat importanță.

Povestea
Odată, un programator, terminând un nou proiect, a realizat că are o obsesie să spună tuturor despre el. Proiectul era găzduit pe un server cu un IP unic, dar fără nume de domeniu. Așadar, pe repede înainte, a fost creat un subdomeniu frumos de al treilea nivel în domeniul .ddns.net, care în cele din urmă a fost folosit ca link.
Revenind după un timp la postare, programatorul a descoperit că în loc de site se deschide o pagină de eroare Vkontakte, informând despre redirecționarea către un site nesigur:

Se părea că utilizatorii inteligenți ar trebui să aibă dreptul de a decide singuri pe ce site să acceseze și pe care nu, însă Vkontakte gândește diferit și nu oferă nicio opțiune, fără soluții improvizate, de a accesa linkul.
Ce nu este în regulă
Această implementare are câteva dezavantaje semnificative:
- Lipsa posibilității de a deschide un site suspect. Așa cum s-a menționat anterior, utilizatorul nu are posibilitatea de a depăși pagina de eroare. Singurul mod de a deschide linkul este să-l copieze și să-l lipească în bara adreselor.
- Încetinește accesul la link. Viteza de redirecționare depinde de ping. Prin urmare, la un ping mare, pot dispărea secunde prețioase din viață, ceea ce, așa cum știm, nu este acceptabil.
- Monitorizarea accesărilor. Această metodă facilitează colectarea de informații despre acțiunile utilizatorilor, cu care, bineînțeles, profită Vkontakte, adăugând la linkul sigur ID-ul postării din care a fost făcută redirecționarea.
Eliberăm Django
Soluția optimă pentru toate problemele enumerate mai sus ar putea fi o extensie pentru browser. Din motive evidente, alegerea cade pe Chrome. Pe Habr există un articol excelent dedicat scrierii extensiilor pentru Chrome.
Pentru a crea o astfel de extensie, va trebui să creăm în dosare separate două fișiere: manifest.json și un fișier JavaScript pentru monitorizarea adresei URL curente.
Creăm fișierul Manifest
Cel mai important lucru de care avem nevoie este să dăm extensiei permisiunea de a lucra cu tab-urile și să desemnăm scriptul executabil:
{
"manifest_version": 2,
"name": "Fugiți de vk.com/away",
"version": "1.0",
"background": {
"scripts": ["background.js"]
},
"permissions": ["tabs"],
"browser_action": {
"default_title": "Fugiți de vk.com/away"
}
}
Creăm un fișier js
Aici este simplu: în evenimentul declanșat la crearea unei noi tab-uri, adăugăm o verificare pentru adresa url, dacă aceasta începe cu „”, atunci o înlocuim cu cea corectă, care se află în cererea 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});
}
});
});
Construim extensia
Asigurându-ne că ambele fișiere se află în aceeași folder, deschidem Chrome, alegem tab-ul extensiilor și apăsăm „Încărcați extensia dezarhivată”. În fereastra deschisă, alegem folderul extensie scrisă și apăsăm construiți. Gata! Acum toate link-urile de tip vk.com/away sunt înlocuite cu cele originale.
În concluzie
Desigur, acest tip de redirecționări a salvat multe persoane de milioane de site-uri frauduloase, totuși, cred că oamenii ar trebui să decidă singuri dacă vor accesa link-uri nesigure sau nu.
Pentru comoditate, am plasat proiectul pe .
Sursa: habr.com
