Pozbycie się „vk.com/away.php” lub podążanie za linkami od zdrowej osoby

Klikając linki zamieszczone na VKontakte, zauważysz, że podobnie jak w innych sieciach społecznościowych najpierw następuje przejście do „bezpiecznego” linku, po czym sieć społecznościowa decyduje, czy użytkownik powinien pozwolić dalej, czy nie. Najbardziej uważne osoby zauważyły ​​półsekundowe pojawienie się „vk.com/away.php” w pasku adresu przeglądarki, ale oczywiście nie przywiązywały do ​​tego żadnej wagi.

Pozbycie się „vk.com/away.php” lub podążanie za linkami od zdrowej osoby

prehistoria

Pewnego dnia pewien programista po ukończeniu kolejnego projektu zdał sobie sprawę, że ma obsesję na punkcie chęci powiedzenia o tym wszystkim. Projekt był hostowany na serwerze z unikalnym adresem IP, ale bez nazwy domeny. Dlatego w domenie .ddns.net szybko powstała piękna subdomena trzeciego poziomu, która ostatecznie posłużyła jako link. 

Wracając po chwili do wpisu, programista odkrył, że zamiast strony otwierał się odgałęzienie VK informujące o przejściu na niebezpieczną stronę:

Pozbycie się „vk.com/away.php” lub podążanie za linkami od zdrowej osoby

Wydawałoby się, że mądrzy użytkownicy sami mają prawo decydować, na którą stronę powinni wejść, a na którą nie, ale VKontakte myśli inaczej i nie daje możliwości skorzystania z linku bez kul.

Co jest nie tak

Ta implementacja ma kilka istotnych wad:

  • Niemożność otwarcia podejrzanej witryny. Jak wspomniano powyżej, użytkownik nie ma możliwości pokonania odcinka pośredniczącego. Jedynym sposobem otwarcia linku jest skopiowanie go i wklejenie w pasku adresu.
  • Spowalnia nawigację po linkach. Szybkość przekierowania zależy od pingu. W związku z tym przy wysokim pingu można stracić cenne sekundy życia, co, jak wiemy, jest niedopuszczalne.
  • Monitorowanie przejścia. Metoda ta ułatwia zbieranie informacji o działaniach użytkownika, z czego oczywiście korzysta VK, dodając do bezpiecznego linku identyfikator wpisu, z którego nastąpiło przejście.

Uwolnienie Django

Optymalnym rozwiązaniem wszystkich powyższych problemów może być rozszerzenie przeglądarki. Z oczywistych względów wybór padł na Chrome. Na hubie jest świetny artykuł Artykuł poświęcony pisaniu rozszerzeń dla przeglądarki Chrome.

Aby utworzyć takie rozszerzenie, będziemy musieli utworzyć dwa pliki w osobnym folderze: plik json-Manifest i plik JavaScript do monitorowania bieżącego adresu URL.

Utwórz plik manifestu

Najważniejsze, czego potrzebujemy, to dać rozszerzeniu pozwolenie na pracę z zakładkami i przypisać wykonywalny skrypt:

{
  "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"
  }
}

Utwórz plik js

Tutaj wszystko jest proste: w zdarzeniu wywołanym podczas tworzenia nowej zakładki dodajemy sprawdzenie adresu URL, jeśli zaczyna się od „vk.com/away.php", następnie zamień go na właściwy, który znajduje się w żądaniu 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});
		}
	});
});

Montaż przedłużenia

Po upewnieniu się, że oba pliki znajdują się w tym samym folderze, otwórz przeglądarkę Chrome, wybierz zakładkę rozszerzenia i kliknij „Załaduj rozpakowane rozszerzenie”. W oknie, które zostanie otwarte, wybierz folder zapisanego rozszerzonego pliku i kliknij Zbierz. Gotowy! Teraz wszystkie linki takie jak vk.com/away zostaną zastąpione oryginalnymi.

Zamiast zawierania

Oczywiście tego typu stub uratował wiele osób przed milionami fałszywych witryn, jednak uważam, że ludzie sami mają prawo zdecydować, czy kliknąć niebezpieczny link, czy nie.
Dla wygody zamieściłem projekt na GitHub.

Źródło: www.habr.com

Dodaj komentarz