Livrar-se de “vk.com/away.php” ou seguir links de uma pessoa saudável

Ao clicar nos links postados no VKontakte, você notará que, como em outras redes sociais, primeiro há uma transição para um link “seguro”, após o qual a rede social decide se o usuário deve ter permissão adicional ou não. As pessoas mais atentas notaram o aparecimento de meio segundo de “vk.com/away.php” na barra de endereços do navegador, mas, é claro, não deram importância a isso.

Livrar-se de “vk.com/away.php” ou seguir links de uma pessoa saudável

Pré-história

Um dia, um certo programador, tendo concluído outro projeto, percebeu que estava obcecado pela vontade de contar a todos sobre ele. O projeto foi hospedado em um servidor com IP único, mas sem nome de domínio. Portanto, um belo subdomínio de terceiro nível foi rapidamente criado no domínio .ddns.net, que acabou sendo usado como link. 

Voltando ao post depois de um tempo, o programador descobriu que em vez do site, um stub VK estava abrindo, informando sobre a transição para um site inseguro:

Livrar-se de “vk.com/away.php” ou seguir links de uma pessoa saudável

Parece que os próprios usuários inteligentes têm o direito de decidir qual site devem visitar e quais não, mas o VKontakte pensa diferente e não oferece nenhuma oportunidade de seguir o link sem muletas.

O que há de errado

Esta implementação tem várias desvantagens significativas:

  • Incapacidade de abrir um site suspeito. Conforme dito acima, o usuário não tem como superar o stub. A única maneira de abrir o link é copiá-lo e colá-lo na barra de endereço.
  • Retarda a navegação do link. A velocidade de redirecionamento depende do ping. Assim, com um ping alto, podem perder-se segundos preciosos de vida, o que, como sabemos, não é aceitável.
  • Monitoramento de transição. Esse método facilita a coleta de informações sobre as ações do usuário, que, claro, é o que o VK utiliza, adicionando ao link seguro o id do post a partir do qual foi feita a transição.

Libertando Django

A solução ideal para todos os problemas acima pode ser uma extensão do navegador. Por razões óbvias, a escolha recai sobre o Chrome. Há um excelente no hub artigo Um artigo dedicado a escrever extensões para o Chrome.

Para criar tal extensão, precisaremos criar dois arquivos em uma pasta separada: um json-Manifest e um arquivo JavaScript para monitorar o endereço URL atual.

Crie um arquivo de manifesto

A principal coisa que precisamos é dar permissão à extensão para trabalhar com guias e atribuir um script executável:

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

Crie um arquivo js

Tudo é simples aqui: no evento chamado quando uma nova aba é criada, adicionamos uma verificação para o endereço da URL se começar com “vk.com/away.php", substitua-o pelo correto, que está na solicitação 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});
		}
	});
});

Montagem da extensão

Após certificar-se de que os dois arquivos estão na mesma pasta, abra o Chrome, selecione a guia de extensão e clique em “Carregar extensão descompactada”. Na janela que se abre, selecione a pasta do arquivo estendido gravado e clique em Coletar. Preparar! Agora todos os links como vk.com/away foram substituídos pelos originais.

Em vez de uma conclusão

É claro que esse tipo de esboço salvou muitas pessoas de milhões de sites fraudulentos, porém, acredito que as próprias pessoas têm o direito de decidir se clicam em um link inseguro ou não.
Por conveniência, postei o projeto em github.

Fonte: habr.com

Adicionar um comentário