Переходячи за посиланнями, розміщеними у Вконтакті, можна побачити, що як і інших соціальних мережах, спочатку відбувається перехід на «безпечну» посилання, після чого соціальна мережа вирішує: чи потрібно пускати користувача далі чи ні. Більшість уважних людей помічали півсекундну появу vk.com/away.php в адресному рядку браузера, але, звичайно, не надавали цьому значення.
Передісторія
Якось, програміст, доробивши черговий проект, усвідомив, що одержимий бажанням про нього всім розповісти. Проект розміщувався на сервері з унікальним ІР, але без доменного імені. Тому нашвидкуруч зробив гарний піддомен третього рівня в домені .ddns.net, який у результаті використовувався як посилання.
Повернувшись через деякий час до посту, програміст виявив, що замість сайту відкривається заглушка вк, яка інформує про перехід на небезпечний сайт:
Здавалося б, розумні користувачі самі вправі вирішувати, на який сайт їм переходити, а на який ні, проте Вконтакте думає інакше і не надає жодної можливості без милиць перейти за посиланням.
Що не так
Така реалізація має кілька вагомих недоліків:
- Відсутність можливості відкрити підозрілий сайт. Як говорилося вище, у користувача немає можливості подолати заглушку. Єдиний спосіб відкрити посилання – скопіювати його та вставити в адресний рядок.
- Уповільнює перехід за посиланням. Швидкість перенаправлення залежить від пінгу. Відповідно при великому пінгу, можуть зникнути дорогоцінні секунди життя, що, як знаємо, неприпустимо.
- Моніторинг переходів. Такий метод полегшує збирання інформації про дії користувачів, чим звичайно ж і користується Вк, додаючи до безпечного посилання id поста з якого було зроблено перехід.
Звільняємо Джанго
Оптимальним рішенням всіх вище перерахованих проблем може стати розширення браузера. З очевидних причин вибір падає на Chrome. На хабрі є чудова
Для створення такого розширення нам знадобиться створити в окремій папці два файли: json-Manifest та JavaScript-файл для моніторингу поточної URL-адреси.
Створюємо Manifest файл
Головне, що нам потрібно — дати розширенню дозвіл на роботу з вкладками і призначити скрипт, що виконується:
{
"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"
}
}
Створюємо js файл
Тут все просто: в подію, що викликається при створенні нової вкладки, додаємо перевірку на адресу url, якщо вона починається на «
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});
}
});
});
Збираємо розширення
Переконавшись, що обидва файли лежать в одній папці, відкриваємо Chrome, вибираємо вкладку розширення та натискаємо «Завантажити розпаковане розширення». У вікні вибираємо папку написаного розширена і натискаємо зібрати. Готово! Тепер усі посилання виду vk.com/away замінюються на вихідні.
Замість висновку
Звичайно, такий тип заглушок врятував багато людей від мільйонів шахрайських сайтів, проте, я вважаю, що люди самі мають право вирішувати, переходити їм на небезпечне посилання чи ні.
Для зручності я розмістив проект на
Джерело: habr.com