擺脫“vk.com/away.php”或關注來自健康人的鏈接

透過點擊 VKontakte 上發布的鏈接,您會注意到,與其他社交網絡一樣,首先會過渡到“安全”鏈接,之後社交網絡決定是否應進一步允許用戶。 大多數細心的人注意到瀏覽器網址列中出現了半秒的“vk.com/away.php”,但當然並沒有重視它。

擺脫“vk.com/away.php”或關注來自健康人的鏈接

有一天,一位程式設計師在完成了另一個專案後,意識到自己沉迷於向所有人講述這個專案的願望。 此專案託管在具有唯一IP但沒有網域名稱的伺服器上。 因此,在.ddns.net網域中很快就創建了一個漂亮的三級子網域,並最終用作連結。 

一段時間後返回帖子,程式設計師發現打開的不是該站點,而是一個 VK 存根,通知有關轉換到不安全站點的資訊:

擺脫“vk.com/away.php”或關注來自健康人的鏈接

看起來聰明的用戶自己有權決定他們應該訪問哪個網站,不訪問哪個網站,但 VKontakte 的想法不同,並且不提供任何無需拐杖即可點擊鏈接的機會。

怎麼了

這種實現有幾個明顯的缺點:

  • 無法開啟可疑網站。 如上所述,使用者沒有辦法克服存根。 打開連結的唯一方法是將其複製並貼上到網址列中。
  • 減慢連結導航速度。 重定向速度取決於 ping。 因此,在高 ping 值的情況下,可能會損失寶貴的生命時間,據我們所知,這是不可接受的。
  • 過渡監控。 這種方法可以更輕鬆地收集有關用戶操作的信息,這當然就是 VK 使用的方法,將進行轉換的帖子的 ID 添加到安全連結中。

釋放 Django

上述所有問題的最佳解決方案可能是瀏覽器擴充功能。 出於顯而易見的原因,選擇落在了 Chrome 身上。 集線器上有一個很棒的 文章 一篇專門為 Chrome 撰寫擴充功能的文章。

要建立這樣的擴展,我們需要在單獨的資料夾中建立兩個檔案:一個 json-Manifest 和一個用於監視當前 url 位址的 JavaScript 檔案。

建立清單文件

我們需要的主要事情是授予擴展使用選項卡的權限並分配可執行腳本:

{
  "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 地址是否以“開頭”vk.com/away.php",然後將其替換為 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});
		}
	});
});

組裝擴充件

確保兩個檔案位於同一資料夾後,打開 Chrome,選擇擴充功能選項卡,然後按一下「載入解壓縮的擴充功能」。 在開啟的視窗中,選擇寫入的擴充功能的資料夾,然後按一下「收集」。 準備好! 現在,所有連結(例如 vk.com/away)都已替換為原始連結。

取而代之的是結論

當然,這種類型的存根已經使許多人免受數以百萬計的詐騙網站的侵害,但是,我相信人們自己有權決定是否點擊不安全的連結。
為了方便起見,我將專案發佈在 GitHub上.

來源: www.habr.com

添加評論