摆脱“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上.

来源: habr.com

添加评论