Deshágase de "vk.com/away.php" o siga los enlaces de una persona sana

Cuando hace clic en los enlaces publicados en Vkontakte, notará que, como en otras redes sociales, el usuario primero cambia a un enlace "seguro", después de lo cual la red social decide si dejar que el usuario vaya más allá o no. La mayoría de las personas atentas notaron una aparición de medio segundo de "vk.com/away.php" en la barra de direcciones del navegador, pero, por supuesto, no le dieron ninguna importancia.



Antecedentes


Una vez, cierto programador, después de haber completado otro proyecto, se dio cuenta de que estaba obsesionado con el deseo de contarles a todos sobre el tema. El proyecto fue alojado en un servidor con una IP única, pero sin un nombre de dominio. Por lo tanto, a toda prisa, hice un hermoso subdominio de tercer nivel en el dominio .ddns.net, que finalmente se usó como un enlace.

Después de regresar a la publicación después de un tiempo, el programador descubrió que, en lugar del sitio, se abre un trozo VK, que informa sobre la transición a un sitio inseguro:



Parece que los usuarios inteligentes tienen el derecho de decidir a qué sitio deben ir y cuáles no, pero Vkontakte piensa de manera diferente y no brinda ninguna oportunidad de seguir el enlace sin muletas.

Que esta mal


Esta implementación tiene varios inconvenientes importantes:

  • La imposibilidad de abrir un sitio sospechoso. Como se mencionó anteriormente, el usuario no tiene forma de superar el trozo. La única forma de abrir el enlace es copiarlo y pegarlo en la barra de direcciones.
  • Ralentiza un enlace. La velocidad de redireccionamiento depende del ping. En consecuencia, con un gran ping, pueden desaparecer preciosos segundos de vida, lo que, como sabemos, no está permitido.
  • Monitoreo de conversiones. Este método facilita la recopilación de información sobre las acciones del usuario, que, por supuesto, utiliza VK, agregando al enlace seguro la identificación de la publicación desde la que se realizó la transición.

Django gratis


La mejor solución para todos los problemas anteriores puede ser una extensión del navegador. Por razones obvias, la elección recae en Chrome. En un habr hay un excelente artículo, un artículo dedicado a escribir extensiones para Chrome.

Para crear una extensión de este tipo, necesitamos crear dos archivos en una carpeta separada: json-Manifest y un archivo JavaScript para monitorear la URL actual de la dirección.

Crear archivo de manifiesto


Lo principal que necesitamos es dar permiso a la extensión para trabajar con pestañas y asignar un script ejecutable:

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

Crear archivo js


Aquí todo es simple: en el caso de que se llame al crear una nueva pestaña, agregamos un cheque para la dirección URL, si comienza con “ vk.com/away.php ”, luego lo reemplazamos con el correcto que está en la solicitud 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}); } }); }); 

Poniendo la extensión


Después de asegurarse de que ambos archivos estén en la misma carpeta, abra Chrome, seleccione la pestaña de extensión y haga clic en "Descargar extensión desempaquetada". En la ventana que se abre, seleccione la carpeta escrita avanzada y haga clic en recopilar. Hecho Ahora todos los enlaces como vk.com/away se reemplazan por los originales.

En lugar de una conclusión


Por supuesto, este tipo de trozo salvó a muchas personas de millones de sitios fraudulentos, sin embargo, creo que las personas mismas tienen el derecho de decidir si van a un enlace inseguro o no.
Por conveniencia, publiqué el proyecto en github .

Source: https://habr.com/ru/post/453904/


All Articles