Tutorial: Encripta tus enlaces salientes (Tipo Yaske o SeriesFLV)

  • Autor Autor wjharil
  • Fecha de inicio Fecha de inicio
W

wjharil

Delta
Programador
Hola a todos, bueno me doy el tiempito de hacer éste tutorial de cómo encriptar los enlaces salientes de nuestra web al estilo de Yaske o SeriesFLV. Sin más preámbulos, hagámoslo.

tutorial.webp

Hagamos un orden de cómo será nuestro script.
- Seleccionar los links que estén en un div cuyo identificador (id) sera "info".
- Teniendo los links, reemplazar el url original por uno en base 64 (esto lo hacemos con jquery).
- Ahora, al dar click en el link, que nos envie a un redireccionador que decodificará el link enviado por método POST.
- En el redireccionador, recibir la variable enviada y luego que haga lo suyo.


Bien, teniendo los puntos claros, pasemos a hacer el código.

Paso 1: index.php - Creamos un div que contenga los enlaces:

Insertar CODE, HTML o PHP:
<div id="info">
<a href="http://forobeta.com/">Enlace 1</a>
<a href="http://facebook.com/">Enlace 2</a>
<a href="http://twitter.com/">Enlace 3</a>
<a href="http://youtube.com/">Enlace 4</a>
<a href="http://localhost/pruebas">Enlace 5 (ésta en nuestro host, ésto no debe cambiar a base64)</a>
</div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="jquery.base64.min.js"></script>
<script src="wjharil.js"></script>

Paso 2: wjharil.js - Haciendo uso de Jquery y un plugin (jquery.base64) haremos que se reemplacen automáticamente :

HTML:
(function(e) {    
    e.Postbitch = function(t, n, r) {
        var i = e("<form>", {
            action: t,
            method: "post",
            target: r,
            enctype: "multipart/form-data"
        });
        this.each(n, function(t, n) {
            e("<input>", {
                type: "hidden",
                name: t,
                value: n
            }).appendTo(i)
        });
        i.on("submit", function() {
            e(this).remove()
        }).appendTo("body").get(0).submit()
    }
})(jQuery);

function nombre_dominio(url) {
    var m = url.match(/^http:\/\/[^/]+/);
    return m ? m[0] : null;
}

$(function() {
    
    $("#info a").each(function() {
        link_ = $(this).attr('href');
        if(window.location.origin  != nombre_dominio(link_)){
            codificar_64 = $.base64.encode($(this).attr('href'));
            $(this).attr('data-url',codificar_64);
            $(this).attr('href','go-to.php');
            $(this).on("click", function(e) {            
            e.preventDefault(); // cancelo todo
            var t = $(this);
            $.Postbitch(this.href, {
                url: t.data("url")
            }, this.target);
            return false;
            });
        }        
    });
});

Como podemos ver, lo que hace el javascript, es reemplazar las urls y pasarlas a base64.

Paso 4: go-to.php En nuestro go-to.php recibimos la variable enviada por método POST:

PHP:
<?php 
if($_POST['url']):
$url  = $_POST['url'];
$url = base64_decode($url);
?>
<meta http-equiv="refresh" content="5;url=<?php echo $url;?>"> 
Espera 5 segundos, est&aacute;s siendo redirigido.
<?php endif;?>

Como podemos ver, recibe el base 64 y luego lo decodifica generando la URL original y luego reenviandonos luego de 5 segundos. Ojo que si el usuario da Control + U (para ver el código fuente) se verá. Pero con un poco de ingenio, al momento de imprimir cada url (por php) codificar las url: base64_encode($url)

Pueden ver el demo aquí : Hazme Click !

Eso es todo, aquí el código completo para que puedan descargarlo: Hazme un sensual Click !

Espero que les sirva, dar gracias no cuesta nada n.n !
 
Última edición:
Excelente va a favoritos, lo leere mas tarde con paciencia.
 
ooo Muy Bueno, Muy Bueno , Agregado A Favoritos 😀; Es Tipo Como ESto Va Enlaces Protegidos, O No Se Si Eso Es Hehe, Que Bueno, Lo Andaba Buscando,
 
muy bueno,luego lo reviso con mas calma de seguro me sirve
 
muy buen tutorial amigo!
 
Si alguien lo quiere en puro js:
HTML:
function utf8_to_b64( str ) {
  return window.btoa(unescape(encodeURIComponent( str )));
}

function b64_to_utf8( str ) {
  return decodeURIComponent(escape(window.atob( str )));
}

    var linkEls=document.querySelectorAll('#info a');
    for (var i = 0, l = linkEls.length; i < l; i++) {
        linkEls[i].addEventListener('click', function(e) {
           var formdata = false;
           formdata.append("url", utf8_to_b64( e.target.href));
           var xhr = new XMLHttpRequest();
           xhr.open('POST','go-to.php');
           xhr.onload = onLoadHandler;
           xhr.send(formdata);
           var onLoadHandler = function(e){
               alert(e.target.responseText);
           };
           e.target.preventDefault();
        }, false);
    }
 
Muy buen aporte
 
muy bueno, se agradece
 
CTRL + U y ven todos los enlaces. 😕
 
Al darle click, de igual forma verán el enlace... la idea de éste mini script es que al hacer click directamente, envíe codificado :encouragement:

¿Y cual es el sentido?

Encriptarlo desde el lado del servidor sería lo ideal, y base64 es malo.
 
¿Y cual es el sentido?

Encriptarlo desde el lado del servidor sería lo ideal, y base64 es malo.

El sentido, es dar una idea de lo que se puede hacer :encouragement: y claro, se que base64 es malo y preferible (creo yo) es encriptarlo en mcrypt. Éste tutorial fue pensando para implementarlo al instante, y no tocar lo que se imprime mediante el php (la lista que contiene los links).
 
El sentido, es dar una idea de lo que se puede hacer :encouragement: y claro, se que base64 es malo y preferible (creo yo) es encriptarlo en mcrypt. Éste tutorial fue pensando para implementarlo al instante, y no tocar lo que se imprime mediante el php (la lista que contiene los links).

Ay bueno, así sí.

htsThsp.png
 

Temas similares

Atrás
Arriba