Al seguir los enlaces publicados en Vkontakte, se puede notar que, al igual que en otras redes sociales, inicialmente se redirige a un enlace "seguro" y luego la red social decide si debe permitir que el usuario continúe o no. La mayoría de las personas atentas han notado la aparición de medio segundo de "vk.com/away.php" en la barra de direcciones del navegador, pero, por supuesto, no le prestaron atención.

Antecedentes
Una vez, un programador, al completar un proyecto, se dio cuenta de que estaba obsesionado con contarle a todos sobre él. El proyecto estaba alojado en un servidor con una IP única, pero sin un nombre de dominio. Así que se creó rápidamente un bonito subdominio de tercer nivel en el dominio .ddns.net, que finalmente se utilizó como enlace.
Al regresar después de un tiempo a la publicación, el programador descubrió que, en lugar del sitio, se abría una página en blanco de Vkontakte, informando sobre la redirección a un sitio no seguro:

Aparentemente, los usuarios inteligentes deberían tener el derecho de decidir a qué sitio acceder y a cuál no, sin embargo, Vkontakte piensa diferente y no proporciona ninguna posibilidad de saltar este obstáculo sin soluciones alternativas.
Qué está mal
Esta implementación tiene varias desventajas significativas:
- No hay posibilidad de abrir un sitio sospechoso. Como se mencionó anteriormente, el usuario no tiene la opción de superar la página de advertencia. La única forma de abrir el enlace es copiarlo y pegarlo en la barra de direcciones.
- Retrasa el acceso al enlace. La velocidad de redirección depende del ping. Por lo tanto, con un ping alto, pueden perderse preciosos segundos de vida, lo cual, como sabemos, es inaceptable.
- Monitoreo de redirecciones. Este método facilita la recopilación de información sobre las acciones de los usuarios, algo de lo que, por supuesto, se beneficia Vkontakte, añadiendo al enlace seguro el ID de la publicación desde la que se realizó la redirección.
Liberando Django
Una solución óptima a todos los problemas mencionados anteriormente podría ser una extensión para el navegador. Por razones obvias, la elección recae en Chrome. En Habr hay un excelente artículo dedicado a la escritura de extensiones para Chrome.
Para crear tal extensión, necesitamos crear en una carpeta separada dos archivos: un manifiesto en formato JSON y un archivo JavaScript para monitorear la dirección URL actual.
Creando el archivo Manifest
Lo principal que necesitamos es otorgar a la extensión permiso para trabajar con las pestañas y asignar el script ejecutable:
{
"manifest_version": 2,
"name": "Huir de vk.com/away",
"version": "1.0",
"background": {
"scripts": ["background.js"]
},
"permissions": ["tabs"],
"browser_action": {
"default_title": "Huir de vk.com/away"
}
}
Creando un archivo js
Aquí todo es simple: en el evento que se activa al crear una nueva pestaña, agregamos una verificación de la URL, si comienza con "", lo sustituimos por el correcto que se encuentra 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});
}
});
});
Compilando la extensión
Asegurándonos de que ambos archivos estén en la misma carpeta, abrimos Chrome, elegimos la pestaña de extensiones y hacemos clic en "Cargar extensión descomprimida". En la ventana que se abre, seleccionamos la carpeta de la extensión escrita y hacemos clic en compilar. ¡Listo! Ahora todos los enlaces del tipo vk.com/away se sustituyen por su versión original.
En conclusión
Por supuesto, este tipo de redirecciones ha salvado a muchas personas de millones de sitios fraudulentos, sin embargo, considero que las personas tienen el derecho de decidir si quieren acceder a un enlace inseguro o no.
Para mayor comodidad, he alojado el proyecto en .
Fuente: habr.com
