Tutorial: Anonimizador de enlaces Full

  • Autor Autor vellenger
  • Fecha de inicio Fecha de inicio
vellenger

vellenger

Programador
No recomendado
Verificación en dos pasos activada
Verificado por Whatsapp
Este es un anonimizador de enlaces que funciona en cualquier script, me lo pidieron varios asi que aqui les dejo como lo he ralizado y posteriormente la descarga para el que lo quiera utilizar.
Este se ha creado para la plataforma de wordpress pero funcionaria en cualquier script .


demo.webp

Este contendra las funciones que se utilizaran para encriptar y desencriptar los enlaces.

Creamos class.php

HTML:
<?php
class Bitly {
	var $path;
	var $user; 
	var $key;
	function Bitly ($_user, $_key) {
		$this->path = "http://api.bit.ly/v3/";
		$this->user = $_user;
		$this->key = $_key;
	}
	function shorten($url) {
		$temp = $this->path."shorten?login=".$this->user."&apiKey=".$this->key."&uri=".$url."&format=txt";
		$data = file_get_contents($temp);
		return $data;
	}
	function expand($url) {
		$temp = $this->path."expand?login=".$this->user."&apiKey=".$this->key."&shortUrl=".$url."&format=txt";
		$data = file_get_contents($temp);
		return $data;
	}	
    }
	
	function encriptar_AES($string, $key){
			$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
			$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_DEV_URANDOM );
			mcrypt_generic_init($td, $key, $iv);
			$encrypted_data_bin = mcrypt_generic($td, $string);
			mcrypt_generic_deinit($td);
			mcrypt_module_close($td);
			$encrypted_data_hex = bin2hex($iv).bin2hex($encrypted_data_bin);
			return $encrypted_data_hex;
    }
	
	function desencriptar_AES($encrypted_data_hex, $key){
			$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
			$iv_size_hex = mcrypt_enc_get_iv_size($td)*2;
			$iv = pack("H*", substr($encrypted_data_hex, 0, $iv_size_hex));
			$encrypted_data_bin = pack("H*", substr($encrypted_data_hex, $iv_size_hex));
			mcrypt_generic_init($td, $key, $iv);
			$decrypted = mdecrypt_generic($td, $encrypted_data_bin);
			mcrypt_generic_deinit($td);
			mcrypt_module_close($td);
			return $decrypted;
	}

?>


En primera instancia vamos a crear el archivo que recibira los enlaces por un get, recordando que el enlace en su primera etapa pasara a estar encriptado en Base64.
Creamos l.php

HTML:
<?php
    $enlace = $_GET['v'];
	$url="http://".$_SERVER['HTTP_HOST'];
	include 'class.php';
	$bitly = new Bitly("vellenger", "R_03e6735b646986241e6836053fa321d4"); // USER Y APY DE BIT.LY  
	
	if(strstr(base64_decode($enlace),"mega.co.nz")==true || strstr(base64_decode($enlace),"sh.st")==true){
	$links = $url."/link/redir.php?v=".$_GET['v'];
	}else{
	$links = base64_decode($_GET['v']);
	}		
	$down = $bitly->shorten($links);
	
	$clave = "vellenger";
    $encriptado = encriptar_AES($down, $clave);
	header("Location: /link/#!".$encriptado);
?>

Lo que vemos primeramente que obtenemos por el metodo GET el enlace encriptado en Base64.

En segundo obtenemos la url de la web donde se esta ejecutando el script, en si esto no es importante, se podria ingresar manualmente el nombre de su web que lo asigne a lavariable $url.

En tercer lugar vemos que se usa bitly, y diran ¿para que?, y simplemente es para evitar el problemita que dejan las url encriptadas a base64 y posteriormente desencriptadas, esta tienden a dejar espacios vacios el cual al momento de abrirlos tira errores.
Se utiliza una class de bitly que esta cargada en el archivo class.php y aqui lo que hacemos es llamar a la clase, y vamos a necesitar el nombre de usuario y el API de bitly. ( Pueden cambiar por el suyo )


En cuarto lugar comparamos las url entrantes, desencriptando las url por el metodo GET comprobamos que las url no sean de mega o de shorte,
y esto se debe a que esos servidores no dejan hacer uso del code que tenemos, pero en los demas funciona bien.
Por eso se compara si los enlaces salientes pertenecen a alguno de esos los jala encriptados, caso contrario los acorta solo a bitly.


Pasando estos paso, pasamos a encriptar los enlaces en AES 128 el cual vamos a cifrar los enlaces aun mas para darle mas seguridad, el cual para decifrarlo no es tan facil como el de base64, este utiliza una funcion que estara cargada en class.php tanto para encriptar como para desencriptar. Este metodo necesita la url que se quiere utilizar y una clave, el cual en ambas deben ser iguales para que se puedan utilizar.

Ya tomando la url , y encriptadas en AES pasamos a redireccionar al codigo generado, si se fijan el enlace pasa a tomar un estilo del como utiliza mega.co.nz.


Aqui es donde empieza el tema del anonimizador.

Aqui lo que notaremos es que los enlaces van a estar mas protegidos, la razon simplemente que se estaran mostrando en el navegador del usuario y no en el servidor, esto impedira que los puedan rastrear a los enlaces.

Otra caracteristica importante es que el enlace tiene que salir de la web donde esta el enlace, no puede ser utilizado directamente, caso contrario nunca se vera el enlace y tomara otra vista ante el usuario.



Creamos redir.php


HTML:
<?php
include 'class.php';
if(isset($_GET['v'])){
		$url = $_GET['v'];
		$link = base64_decode($url);
		header("Location: ".$link);
}else{
		if(isset($_GET['u'])){
		$page = $_GET['u'];
		$clave = "vellenger";	
		$desencriptado = substr(desencriptar_AES($page, $clave),0,21);
		header("Location: ".$desencriptado);
		}else{
		header("Location: http://www.google.com");
		}

}
?>

Este archivo tendra dos funciones, en primera simplemente sera recibir por url a traves del metodo GET el valor obtenido previamente desencriptado en base64 y redireccionarlo. Esto se utilizara en el caso que los enlaces sean de mega o shorte.

En la segunda parte vemos que el metodo GET toma otro valor similar, solo que este jalara los nelaces finales.
Este desencripta por medio de la funcion cargada en class.php con la clave indicada que se utilizo la misma al encriptarla y posteriormente recortamos el enlace generadro ya que se generan espacios vacios, esto lo solucionamos utilizando la funcion substr de php.

Esto tomara dos opciones del GET si no jala algunas de ellas los enviara a una pagina default ( google )



En el archivo index.php

Este se aplica mas a una estructura html y javascript el cual se ejecutan en el navegador del usuario.

Se utiliza dos herramientas de php:

HTML:
$dir=$_SERVER['HTTP_REFERER'];
$url="http://".$_SERVER['HTTP_HOST'];

Con esto lo que obtenemos es la url de donde salio el enlace y donde esta actualmente, con esto comparamos y por medio de una condicion if indicamos al script que si el enlace saliente llego de la web donde esta jalando actualmente se muetre los enlaces, caso contrario pasara a salir sin dejar evidencia de lo que se estaba manteniendo, en este caso deje una publi el cual pueden cambiarla a gusto.

Este archivo es un poco extenso de explicar ya que contiene codigos con estilos y utilidades de javascript que repasaremos en partes.

HTML:
var countdownfrom=15 //TIEMPO

Para cambiar el temporizador, el cual redireccionara al finlizar el tiempo veremos que se da con un numero ( 15 ) el cual son los segundos que se deberan esperar antes que sea enviado automaticamnte al enlace capturado.



El archivo anonymize.js es el que actua sobre los enlaces dentro de su web, y simplemente se aplica en el footer de su web antes del cierre del </body>

agregamos:

HTML:
<script src="/link/anonymize.js" type="text/javascript"></script>
	<script type="text/javascript"><!--
	protected_links = "http://www.tuweb.com";
	auto_anonymize();
	//--></script>

Donde se ve que dice tuweb.com se debe de cambiar por la url de su web.


Los archivos ya estan probados y funcional, los cambios que se pueden dar es para el uso de su cuenta de bitly, y para el uso de AES con la clave, ademas de cambiar la publicidad por defecto que se mostrara si no sale de su web.

Solo se debera subir los archivos a su carpeta Raiz y agregar a su footer el codigo que indicamos arriba:

Aqui les quiero mostrar una demo de como funciona, veremos un ejemplo de su uso:




(Descarga los archivos Actualizada)
https://mega.co.nz/#!1AcAjJDT!ccMYeng7BQbbRDUZmNeVdMlGpkjHIU4SOi0m3KwiMcs

Hay servidores que no dejan directamente usar el anonimizador, por eso en e archivo l.php se vera como agregar esos servidores.


En la demo veran una imagen con un enlace externo a la web, si entran desde a web se vera el script funcionando, si jalan la url manualmente veran que ya no les saldra, de esta manera se oculta mas los enaces salientes.




El script se puede personalizar a gusto, solo pido que como es una version gratuita respeten parte del codigo que deje.
He creado muchas versiones de estos estilos, si alguien esta interesado por versiones mas completas me contacta por mp.

Saludos..


:encouragement:
 
Última edición:
Gracias, esta muy bueno.

Crees que se pueda hacer que no se muestre el destino, algo tipo sitelinking.
 
Wow muy bonito, muchas gracias por compartir la explicación de cada parte, es un complemento excelente, saludos

Enviado desde mi MB886 mediante Tapatalk
 
Grande mi bro
 
La idea es buena y el script tiene buen potencial, como recomendación, le pondría el meta noindex,nofollow en el archivo index.php, la idea es que esa pagina no sea rastreada por los buscadores. También en el código de fuente el enlace se muestra, lo ideal es que también aparezca encriptado, iba a utilizar tu script, pero este ultimo punto me dejo algo en duda.

Estoy utilizando este plugin que realiza todo lo anterior: https://wordpress.org/plugins/wp-noexternallinks/, en contra tiene que no se puede personalizar la pagina final donde te redirecciona al link..... si quieres te mando por MP un enlace de mi sitio para que veas como funciona y tomar ideas para mejorar tu código.
 
Última edición:
Estoy utilizando este plugin que realiza todo lo anterior: https://wordpress.org/plugins/wp-noexternallinks/, en contra tiene que no se puede personalizar la pagina final donde te redirecciona al link..... si quieres te mando por MP un enlace de mi sitio para que veas como funciona y tomar ideas para mejorar tu código.

Yo estaba usando ese,pero me genero miles de 404S de la gente que ingresaba desde dispositivos moviles,pero es un plugin bastante bueno
 
La idea es buena y el script tiene buen potencial, como recomendación, le pondría el meta noindex,nofollow en el archivo index.php, la idea es que esa pagina no sea rastreada por los buscadores. También en el código de fuente el enlace se muestra, lo ideal es que también aparezca encriptado, iba a utilizar tu script, pero este ultimo punto me dejo algo en duda.

Estoy utilizando este plugin que realiza todo lo anterior: https://wordpress.org/plugins/wp-noexternallinks/, en contra tiene que no se puede personalizar la pagina final donde te redirecciona al link..... si quieres te mando por MP un enlace de mi sitio para que veas como funciona y tomar ideas para mejorar tu código.

Seria bueno que me muestres como lo tenes, para mejorarlo aun, he creado muchos de estos asi que creo poder mejorarlo.
Aunque en lo personal esto no deja rastro para que los buscadores lo registren ya que solo se ejecuta si el usuario lo usa directamente en su navegador.

Y con lo otro que mencionas de meta noindex,nofollow, lo tenia aplicado, solo que esta la adapte ayer y se me paso por alto agregarla ya que lo tenia para otra plataforma.

- - - Actualizado - - -

La idea es buena y el script tiene buen potencial, como recomendación, le pondría el meta noindex,nofollow en el archivo index.php, la idea es que esa pagina no sea rastreada por los buscadores. También en el código de fuente el enlace se muestra, lo ideal es que también aparezca encriptado, iba a utilizar tu script, pero este ultimo punto me dejo algo en duda.

Estoy utilizando este plugin que realiza todo lo anterior: https://wordpress.org/plugins/wp-noexternallinks/, en contra tiene que no se puede personalizar la pagina final donde te redirecciona al link..... si quieres te mando por MP un enlace de mi sitio para que veas como funciona y tomar ideas para mejorar tu código.

Seria bueno que me muestres como lo tenes, para mejorarlo aun, he creado muchos de estos asi que creo poder mejorarlo.
Aunque en lo personal esto no deja rastro para que los buscadores lo registren ya que solo se ejecuta si el usuario lo usa directamente en su navegador.

Y con lo otro que mencionas de meta noindex,nofollow, lo tenia aplicado, solo que esta la adapte ayer y se me paso por alto agregarla ya que lo tenia para otra plataforma.
 
hola, se ve facil de instalar, una duda si subo el archivo index.php no me sobreescribira el que ya tengo en la carpeta raiz de mi wordpress ?
 
Seria bueno que me muestres como lo tenes, para mejorarlo aun, he creado muchos de estos asi que creo poder mejorarlo.
Aunque en lo personal esto no deja rastro para que los buscadores lo registren ya que solo se ejecuta si el usuario lo usa directamente en su navegador.

Y con lo otro que mencionas de meta noindex,nofollow, lo tenia aplicado, solo que esta la adapte ayer y se me paso por alto agregarla ya que lo tenia para otra plataforma.

- - - Actualizado - - -



Seria bueno que me muestres como lo tenes, para mejorarlo aun, he creado muchos de estos asi que creo poder mejorarlo.
Aunque en lo personal esto no deja rastro para que los buscadores lo registren ya que solo se ejecuta si el usuario lo usa directamente en su navegador.

Y con lo otro que mencionas de meta noindex,nofollow, lo tenia aplicado, solo que esta la adapte ayer y se me paso por alto agregarla ya que lo tenia para otra plataforma.

Te mande privado con mi sitio y Skype, haber si me puedes hacer una versión 'personalizada' para mi sitio.

Saludos
 
Listo instalado, pero no me lleva al enlace externo, tras el contador de segudos me indica NAda Encontrado , esta es la url que obtengo (www.misitio.com//link/%7B%20"status_code":%20200,

Alguna idea ??
 
vamos aprobar .. gracias por el dato
 
Muchas gracias 🙂
 
hola, se ve facil de instalar, una duda si subo el archivo index.php no me sobreescribira el que ya tengo en la carpeta raiz de mi wordpress ?

Ahi justamente resubi los archivos, se me olvido agregar la carpeta /link/
 
Ahora me manda a https://bitly.com/etc,etc :s

- - - Actualizado - - -

los enlces acortados me manda a una especie de pagina de seguridad de bitly.com , Si alguno lo hace fusionar con shorte o adfly me avisa como se hace , Gracias
 
Gracias por el script, estaba buscando algo asi hace tiempo :encouragement:

funciona muy bien pero en enlaces acortados con shorte.ts lanza una advertencia por parte de bitly y no eh podido solucionar el error, como podria hacer para que no se de este error? estaba pensando en que shorte no pasara por bitly pero no se como implementarlo 😕
saludos
 
[MENTION=41621]vellenger[/MENTION] Gracias 😱😛7:
 
Hola, como haces para.que parte de.tu url añadas otra a la excepciones, la.colocó com.comas pero igual las.acorta?

Enviado desde mi LT26ii mediante Tapatalk
 
Atrás
Arriba