Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: jdc en 5 Enero 2010, 04:55 am



Título: Anonimizador de links
Publicado por: jdc en 5 Enero 2010, 04:55 am
No lo iba a postear xD pero mejor si xD

Es un simple script para anonimizar links no es como lix.in sino mas com un puente de salida para quitar el referer, no esta pensado para que el usuario final no sepa a que url va sino para poder poner publicidad en los enlaces o hacer que vean algo que gusten antes de que aprovechen la descarga o el enlace.

Pruebenlo y diganme que tal esta, el diseño se lo dejo a quien lo quiera usar

Código
  1. <?php
  2. /* Limpia la variable que queramos */
  3. function limpia($a){
  4. /* Paso a minusculas */
  5. $a = strtolower($a);
  6. /* Quita http:// */
  7. $a =  str_replace("http://","",$a);
  8. /* Limpia caracteres html */
  9. $a =  htmlspecialchars($a, ENT_QUOTES);
  10. return $a;
  11. }
  12.  
  13. /* Obtiene el nombre de la pagina en que estara el script */
  14. $servidor = $_SERVER['HTTP_HOST'];
  15. /* Obtiene la carpeta donde esta el script */
  16. $path = $_SERVER['PHP_SELF'];
  17. /* obtiene el valor de nuestra variable xD */
  18. $page = @$_GET['page'];
  19. $var = @$_GET['url'];
  20.  
  21. /* Limpia la variable usando la funcion anterior */
  22. $var = limpia($var);
  23. $page = limpia($page);
  24.  
  25. $var = base64_encode($var);
  26.  
  27. /* Si $var esta vacia se muestra el formulario
  28. para ingresar una direccion ;) */
  29.  
  30. /* Si $page esta vacia entonces pregunta por $var xD */
  31. If (empty($page)){
  32. /* Si $var esta vacia muestra el formulario para ingresar una direccion */
  33. if(empty($var)){
  34. echo '
  35. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  36. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  37. <html xmlns="http://www.w3.org/1999/xhtml">
  38. <head>
  39. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  40. <title>Anonimizer - Inicio</title>
  41. </head>
  42. <body>
  43. <form action="" method="get">
  44. <b>Ingrese una direcci&oacute;n</b><br />
  45. <input type="text" name="url">
  46. <input type="submit" value="Anonimizar!">
  47. </form>
  48. </body>
  49. </html>
  50. ';
  51. /* Si $var no esta vacia muestra los enlaces para que el usuario sepa que enlaces
  52. poner en foros o en su sitio */
  53. }else{
  54. echo '
  55. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  56. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  57. <html xmlns="http://www.w3.org/1999/xhtml">
  58. <head>
  59. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  60. <title>Anonimizer - Obtener</title>
  61. </head>
  62. <body>
  63. <form>
  64. <b>Enlace directo:</b><br />
  65. <input size="60" type="text" value="http://',$servidor,$path,'?page=',$var,'"><br />
  66. <br /><b>Enlace HTML para sitios web y blogs:</b><br />
  67. <textarea rows="4" cols="50"><a href="http://',$servidor,$path,'?page=',$var,'" title="Enlace anonimo" target="_blank">Enlace anonimizado!</a></textarea><br />
  68. <br /><b>Enlace Para foros (bbcode):</b><br />
  69. <textarea rows="4" cols="50">[url=http://',$servidor,$path,'?page=',$var,']Enlace anonimizado![/url]</textarea><br />
  70. </form><br /><br />
  71. <a href="http://',$servidor,$path,'?page=',$var,'" target="_blank">Probar enlace</a>
  72. </body>
  73. </html>
  74. ';
  75. }
  76. /* Si $page tiene un valor entonces muestra el valor anonimizado xD
  77. si el valor no es correcto entonces se jode el anonimizador malintencionado &#172;&#172; */
  78. }else{
  79. $page = base64_decode($page);
  80. echo '
  81. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  82. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  83. <html xmlns="http://www.w3.org/1999/xhtml">
  84. <head>
  85. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  86. <META HTTP-EQUIV="REFRESH" CONTENT="6;URL=http://',$page,'">
  87. <title>Anonimizer - Obtener</title>
  88. </head>
  89. Por favor espere 5 segundos o haga click <a href="http://',$page,'">aqui</a>
  90. </body>
  91. </html>
  92. ';
  93. }
  94. ?>
  95.  

Es bastante simple de usar asi que si alguien tiene una duda que la postee no hare un tutorial xDDDDDDD

Saludos y gracias por lo que he aprendido y seguire aprendiendo.

PD: Sip soy noob y? Tu naciste sabiendo? xD


Título: Re: Anonimizador de links
Publicado por: Castg! en 5 Enero 2010, 06:30 am
unas cositas, primero me parece muy largo para hacerlo en base64, y despues si la pagina que ingreso no tiene http:// tira error, asiq ue arreglalo con un

Código
  1. if(explode($a,"http://")){
  2. ///code}

despues no lo vi mas, es tarde jaja. suerte.


Título: Re: Anonimizador de links
Publicado por: kyps en 5 Enero 2010, 13:19 pm
esta bien el script  ;D


Título: Re: Anonimizador de links
Publicado por: jdc en 5 Enero 2010, 15:23 pm
No me tira error sin http :S que error te tira?


Título: Re: Anonimizador de links
Publicado por: fede_cp en 5 Enero 2010, 16:31 pm
cuando no pones el http, esta obviando que queres http jajaja.


saludos


Título: Re: Anonimizador de links
Publicado por: jdc en 5 Enero 2010, 17:22 pm
Por mas que pruebo sin y con http:// me funciona igual  :¬¬ tecnicamente la super funcion:

Código
  1. function limpia($a){
  2. /* Quita http:// */
  3. $a =  str_replace("http://","",$a);
  4. /* Limpia caracteres html */
  5. $a =  htmlspecialchars($a, ENT_QUOTES);
  6. return $a;
  7. }

Quita el http ingresado y luego se agrega en los lugares que se muestra para dificultar evitar un lfi xD

pueden poner un ejemplo de lo que les tira error? para lo unico que no tiene soporte y podria tirar error es para https://


Título: Re: Anonimizador de links
Publicado por: Castg! en 5 Enero 2010, 18:02 pm
no lo probe :P pero pense que como decia "cambia esto a la cadena" pense que si esto no estaba en la cadena daba error , sorry:p


Título: Re: Anonimizador de links
Publicado por: turion en 5 Enero 2010, 18:21 pm
yo lo he montado en un *.php y sale mal.. weno al principio esta todo bien sale para anonimizar etc.. pero se actualiza sola a la pagina: http://',$page,'/ eso es normal??


Título: Re: Anonimizador de links
Publicado por: jdc en 5 Enero 2010, 18:34 pm
no lo probe :P pero pense que como decia "cambia esto a la cadena" pense que si esto no estaba en la cadena daba error , sorry:p

¬¬ y yo buscando el error xDDDDDD


yo lo he montado en un *.php y sale mal.. weno al principio esta todo bien sale para anonimizar etc.. pero se actualiza sola a la pagina: http://',$page,'/ eso es normal??

Es normal que se refresque la pagina y te lleve a la direccion ingresada


Título: Re: Anonimizador de links
Publicado por: turion en 5 Enero 2010, 18:44 pm
no lo probe :P pero pense que como decia "cambia esto a la cadena" pense que si esto no estaba en la cadena daba error , sorry:p

¬¬ y yo buscando el error xDDDDDD


yo lo he montado en un *.php y sale mal.. weno al principio esta todo bien sale para anonimizar etc.. pero se actualiza sola a la pagina: http://',$page,'/ eso es normal??

Es normal que se refresque la pagina y te lleve a la direccion ingresada

no no es eso digo cuando tienesque ingresar la url para anonimizarla no te deja en unos 3 segundos se actualiza la pagina...  me explico??


Título: Re: Anonimizador de links
Publicado por: Castg! en 5 Enero 2010, 18:48 pm
no lo probe :P pero pense que como decia "cambia esto a la cadena" pense que si esto no estaba en la cadena daba error , sorry:p

¬¬ y yo buscando el error xDDDDDD


como te dije no tengo el wamp :-(


Título: Re: Anonimizador de links
Publicado por: jdc en 5 Enero 2010, 19:06 pm
no no es eso digo cuando tienesque ingresar la url para anonimizarla no te deja en unos 3 segundos se actualiza la pagina...  me explico??

Nop eso es problema de tu navegador creo, la unica vez que se recarga la pagina es cuando $page esta definido osea cuando estas en index.php?page=... si estas al principio no tendra porque actualizarse. En total son 3 paginas diferentes en una xD pero solo la tercera se actualiza :)

no lo probe :P pero pense que como decia "cambia esto a la cadena" pense que si esto no estaba en la cadena daba error , sorry:p

¬¬ y yo buscando el error xDDDDDD


como te dije no tengo el wamp :-(

Ok te perdono... jajajaja


Título: Re: Anonimizador de links
Publicado por: ~ Yoya ~ en 5 Enero 2010, 20:35 pm
Um... yo usaría preg_replace(), y indicaria al comienso de la cadena a borrar, asi evitaria tener problemas en el futuro...
Código
  1. <?php
  2. $link[0] = 'http://www.google.com';
  3. $link[1] = 'Http://www.google.com';
  4. foreach ($link as $links){
  5. $url = preg_replace("/^http:\/\//i","",$links);
  6. echo $url;
  7. }
  8. ?>
Ya que si mi url es
Código:
Http://www.google.com
tu funcion no podria indentificarla...


Título: Re: Anonimizador de links
Publicado por: jdc en 5 Enero 2010, 21:16 pm
Um... yo usaría preg_replace(), y indicaria al comienso de la cadena a borrar, asi evitaria tener problemas en el futuro...
Código
  1. <?php
  2. $link[0] = 'http://www.google.com';
  3. $link[1] = 'Http://www.google.com';
  4. foreach ($link as $links){
  5. $url = preg_replace("/^http:\/\//i","",$links);
  6. echo $url;
  7. }
  8. ?>
Ya que si mi url es
Código:
Http://www.google.com
tu funcion no podria indentificarla...

Bajo ese concepto... que no habia pensado xD mejor usar la funcion de php para mayusculas a minusculas($link = strtolower($link);), asi no uso un array y mi funcion queda funcionando otra vez ya que por ejemplo sino tendria que agregar al array hTtp://, htTp://, HTTP:// y todas las combinaciones, en cambio  von $link = strtolower($link); me evito todo de una sola vez :) Gracias!

La funcion quedo asi:

Código
  1. function limpia($a){
  2. /* Paso a minusculas */
  3. $a = strtolower($a);
  4. /* Quita http:// */
  5. $a =  str_replace("http://","",$a);
  6. /* Limpia caracteres html */
  7. $a =  htmlspecialchars($a, ENT_QUOTES);
  8. return $a;
  9. }

Ya esta modificada arriba ;)


Título: Re: Anonimizador de links
Publicado por: invisible_hack en 5 Enero 2010, 22:17 pm
Anda, no habia visto el post, pues veo que tomaste en cuenta lo que te dije en WebComparte de cifrar la url a la que redirecciona jejeje, muy buena esa, aunque como ya se sabe, si se lo pasas a alguien que controle un poco, podría descifrar a donde lleva el link, pero bueno, tendría que saber por lo menos qué narices es Base64 jejeje, por lo menos ya no está tan a la vista como cuando ponías la url a pelo al final  ;D

Además, la encriptacion en base64 supongo que bastará para confundir y camuflar los links de MegaUpload etc, asi que muy bien  ;-)

Un saludo.


Título: Re: Anonimizador de links
Publicado por: jdc en 6 Enero 2010, 06:43 am
Arregle 2 errores, eso de que no se pueda meter hTtP:// y ahora soporta https:// o HtTpS:// xD

Les dejo el script arreglado para que comparen

Código
  1. <?php
  2. /* Limpia la variable que queramos */
  3. function limpia($a){
  4. /* array con los dos valores que quitare */
  5. $borrar = array('https://','http://');
  6. /* el array como variable */
  7. $bas = $borrar;
  8. /* los valores del array se reemplazaran por vacio */
  9. $new = "";
  10. /* se quitan los valores del array xD */
  11. $a = str_ireplace($bas,$new, $a);
  12. /* se inutilizan tags html */
  13. $a =  htmlspecialchars($a, ENT_QUOTES);
  14. /* se muestra $a ¬¬ */
  15. return $a;
  16. }
  17.  
  18. /* Obtiene el nombre de la pagina en que estara el script */
  19. $servidor = $_SERVER['HTTP_HOST'];
  20. /* Obtiene la carpeta donde esta el script */
  21. $path = $_SERVER['PHP_SELF'];
  22. /* obtiene el valor de nuestra variable xD */
  23. $page = @$_GET['page'];
  24. $var = @$_GET['url'];
  25. $t_var = substr($var, 0,8);
  26. $https = strtolower($t_var);
  27. if($https == 'https://'){  
  28.    $http = '1';
  29. }else{
  30.    $http = '2';
  31. }
  32.  
  33. /* Limpia la variable usando la funcion anterior */
  34. $var = limpia($var);
  35. $page = limpia($page);
  36.  
  37. $var = base64_encode($var);
  38.  
  39. /* Si $var esta vacia se muestra el formulario
  40. para ingresar una direccion ;) */
  41.  
  42. /* Si $page esta vacia entonces pregunta por $var xD */
  43. If (empty($page)){
  44. /* Si $var esta vacia muestra el formulario para ingresar una direccion */
  45. if(empty($var)){
  46. echo '
  47. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  48. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  49. <html xmlns="http://www.w3.org/1999/xhtml">
  50. <head>
  51. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  52. <title>Anonimizer - Inicio</title>
  53. </head>
  54. <body>
  55. <form action="" method="get">
  56. <b>Ingrese una direcci&oacute;n</b><br />
  57. <input type="text" name="url">
  58. <input type="submit" value="Anonimizar!">
  59. </form>
  60. </body>
  61. </html>
  62. ';
  63. /* Si $var no esta vacia muestra los enlaces para que el usuario sepa que enlaces
  64. poner en foros o en su sitio */
  65. }else{
  66. echo $https;
  67. echo $http;
  68. echo '<br />';
  69. echo $t_var;
  70. echo '
  71. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  72. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  73. <html xmlns="http://www.w3.org/1999/xhtml">
  74. <head>
  75. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  76. <title>Anonimizer - Obtener</title>
  77. </head>
  78. <body>
  79. <form>
  80. <b>Enlace directo:</b><br />
  81. <input size="60" type="text" value="http://',$servidor,$path,'?page=',$var,'&h=',$http,'"><br />
  82. <br /><b>Enlace HTML para sitios web y blogs:</b><br />
  83. <textarea rows="4" cols="50"><a href="http://',$servidor,$path,'?page=',$var,'&h=',$http,'" title="Enlace anonimo" target="_blank">Enlace anonimizado!</a></textarea><br />
  84. <br /><b>Enlace Para foros (bbcode):</b><br />
  85. <textarea rows="4" cols="50">[url=http://',$servidor,$path,'?page=',$var,'&h=',$http,']Enlace anonimizado![/url]</textarea><br />
  86. </form><br /><br />
  87. <a href="http://',$servidor,$path,'?page=',$var,'&h=',$http,'" target="_blank">Probar enlace</a>
  88. </body>
  89. </html>
  90. ';
  91. }
  92. /* Si $page tiene un valor entonces muestra el valor anonimizado xD
  93. si el valor no es correcto entonces se jode el anonimizador malintencionado ¬¬ */
  94. }else{
  95. $page = base64_decode($page);
  96. $h = @$_GET['h'];
  97. if (empty($h)){
  98. $h = 'http://';
  99. }
  100. else if($h == '1')
  101. {
  102. $h = 'https://';
  103. }
  104. else
  105. {
  106. $h = 'http://';
  107. }
  108. echo '
  109. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  110. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  111. <html xmlns="http://www.w3.org/1999/xhtml">
  112. <head>
  113. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  114. <META HTTP-EQUIV="REFRESH" CONTENT="6;URL=',$h,$page,'">
  115. <title>Anonimizer - Obtener</title>
  116. </head>
  117. Por favor espere 5 segundos o haga click <a href="',$h,$page,'">aqui</a>
  118. </body>
  119. </html>
  120. ';
  121. }
  122. ?>
  123.  

Lo de pasarlo a minusculas del script de arriba mataba ciertos links asi que no sirve, lo quito tambien :D

Saludos


Título: Re: Anonimizador de links
Publicado por: Castg! en 6 Enero 2010, 06:46 am
perfecto, mañana lo pruebo, te sigo diciendo de usar explode y array xD! suerte


Título: Re: Anonimizador de links
Publicado por: jdc en 6 Enero 2010, 06:49 am
perfecto, mañana lo pruebo, te sigo diciendo de usar explode y array xD! suerte

use array ¬¬

Citar
$borrar = array('https://','http://');

xD bueno que mas? jajajajaja es array al fin y al cabo ¬¬


Título: Re: Anonimizador de links
Publicado por: ~ Yoya ~ en 6 Enero 2010, 15:05 pm
Estas haciendo el code demasiado largo, deberias optimisarlo, porque segiras haciendolo mas largo, por lo menos la funcion limpiar que se puede solucionar con 3 0 4 lineas... Si piensas actualisarlo, optimisalo lo mas que puedas.


Título: Re: Anonimizador de links
Publicado por: jdc en 6 Enero 2010, 16:00 pm
Que podría hacer para optimizarlo?


Título: Re: Anonimizador de links
Publicado por: ~ Yoya ~ en 6 Enero 2010, 16:21 pm
cuando digo optimizar, me refiero a que el code este  mas limpio y mas entendible.


Título: Re: Anonimizador de links
Publicado por: Castg! en 6 Enero 2010, 16:46 pm
Que podría hacer para optimizarlo?


usar explode y array xD! se que usaste array pero hablo del array de explode, jajaja, con explode, te facilita tambien lo de ftp://


Título: Re: Anonimizador de links
Publicado por: ~ Yoya ~ en 6 Enero 2010, 16:59 pm
Usas preg_replace, y solucionas ese problema con expreciones regulares.
Código
  1. <?php
  2. $link[0] = 'http://www.google.com';
  3. $link[1] = 'Http://www.google.com';
  4. $link[2] = 'ftp://www.google.com';
  5. $link[3] = 'dokq://www.google.com';
  6. $link[4] = 'LoQueSeA://www.google.com';
  7. foreach ($link as $links){
  8. $url = preg_replace("/^[a-zA-Z]+:\/\//i","",$links);//1
  9. echo $url;//2
  10. }
  11. ?>
http://codepad.org/1m0uC44R

Bueno mira, hice una funcion para eliminar el http, ftp, etc... Solo dos lineas, aver si te sirve xD.
Código
  1. <?php
  2.  
  3. function limpia($lin){
  4. $url = preg_replace("/^[a-zA-Z]+:\/\//i","",$lin);
  5. return $url;
  6. }
  7.  
  8. $link[0] = 'http://www.google.com';
  9. $link[1] = 'Http://www.google.com';
  10. $link[2] = 'ftp://www.google.com';
  11. $link[3] = 'dokq://www.google.com';
  12. $link[4] = 'LoQueSeA://www.google.com';
  13. foreach ($link as $links){
  14. $links = limpia($links);
  15. echo $links;
  16. }

La funcion nueva que hisiste, aunque no la he provado falla a simple vista, por lo mismo de antes, lo has arreglado y ahora lo has quitado, ps no reconoce HttP... Por eso te digo que optimices el code, como lo he hecho con la funcion limpia.


Título: Re: Anonimizador de links
Publicado por: jdc en 6 Enero 2010, 17:15 pm
Lo que no entiendo es como implementar el array, no puedo poner una dirección fija y menos poner todos los links de la www xD como sería?


Título: Re: Anonimizador de links
Publicado por: ~ Yoya ~ en 6 Enero 2010, 17:25 pm
Si claro, lo pongo con arrays para ir provando con diferentes formas, nose aque te referiste pero bueno, hice algo aver si la pegue xD.
Código
  1. <?php
  2.  
  3. function limpia($lin){
  4. $url = preg_replace("/^[a-zA-Z]+:\/\//i","",$lin);
  5. return $url;
  6. }
  7.  
  8. $links = 'Http://google.com';
  9. $links = limpia($links);
  10. $url = 'ftp://www.google.com';
  11. $url = limpia($url);
  12. echo $links.$url;
  13. ?>

Puedes usar esta funcion:
Código
  1. <?php
  2.  
  3. function limpia($lin){
  4. $url = preg_replace("/^[a-zA-Z]+:\/\//i","",$lin);
  5. return $url;
  6. }
  7. ?>

Y provar.


Título: Re: Anonimizador de links
Publicado por: jdc en 6 Enero 2010, 18:11 pm
Aps ya entendi graciass esta bueno!