RSS

Bromas con PHP – Clonar Web

16 Ene

Si, lo se, este post no es nada serio, pero hay veces que estás conversando con alguien y no puedes evitar dejar correr la mente y hacer alguna tontería. Pues bien, hoy es uno de esos días. De un modo u otro, hoy ha salido el tema de como clonar una página web en nuestro propio servidor, no descargarla y tenerla offline, sino tener una página (una fuente) en php que sea capaz de hacerse pasar por la web clonada. Como la idea es solo hacer un pequeño experimente, pues hemos ido a lo básico, una página de un blog. Para el caso se ha elegido la de SecuritybyDefault (esperemos no se cabreen). Y la verdad es que los resultados han sido bastante mejores de lo esperado. Con solo un par de líneas hemos conseguido hacer un clon de ella. Solo de la página principal, pero si tuviéramos un formulario de registro, la petición se realizaría desde nuestro servidor (da que pensar). El código inicial ha sido algo así:

<? 
$html = file_get_contents('http://www.securitybydefault.com');
echo $html;
?>

Sorprendentemente, teníamos que nuestra página era capaz de reproducir la de securitybydefault a la perfección. Aquí, se ha comentado, que lo que primero suele hacer un usuario cuando accede a una página es navegar por sus links, con lo cual mediante el sistema creado hasta ahora, en cuento el usuario haga click en un enlace, volverá al dominio correcto.

Aquí, como primer experimento, hemos decidido coger una página html con varios enlaces. Por ejemplo, una así:

<html>
<head>
<title>pruebas</title>
</head>
<body>
<a href="www.google.com">Google(EN)</a><br />
<a href="www.google.es">Google(ES)</a><br />
<a href="www.yahoo.es">Yahoo</a><br />
<a href="www.microsoft.es">Microsoft</a><br />
</body>
</html>

Obviamente, si esta página la clonamos con nuestro sistema, en cuanto el usuario haga click en alguno de los enlaces, abandonará nuestro servidor para irse a uno de los correctos  ¿Cual es el problema? Los enlaces, deberíamos cambiar estos para hacer llamadas a nuestro clonador con las nuevas direcciones, así clonar la nueva página solicitada, pero permanecer en nuestro servidor.

Pues dicho, y sorprendentemente hecho.

<?
$url = $_POST['url'];
if(!empty($url)) {
$patternHref = "/href=\"(.*?)\"/is";
$html = file_get_contents($url);
$insertCode = "<script language=\"javascript\" type=\"text/javascript\">
function redirectUrl(destination) {
window.localtion.href = 'cloner.php?url=' + destination; }
</script></head>";
$htmlConstruida = str_replace("</head>", $insertCode, $html);
$matches = array();
preg_match_all($patternHref, $htmlConstruida, $matches);
for($i = 0; $i < count($matches[0]); $i++) {
$htmlConstruida = str_replace($matches[0][$i],
          "href=\"javascript:redirectUrl(" . $matches[1][$i] .");\"",
          $htmlConstruida);
}
echo $htmlConstruida;
}
else
{
?>		
<html><head><title>Cloner v0.1</title></head><body>
<form name="urlCloner" method="POST" action="cloner.php">
Url: <input type="text" name="url" size="60"/>
<input type="submit" value="Submit" />
</form></body></html>
<? } ?>

Como podéis ver lo único que se hace, es a través de expresiones regulares, hacer un par de inserciones y modificaciones en el código de la página que vamos a clonar, algo que no las afecte visualmente, pero si afecte su funcionamiento.

Una de las cosas que se hace es insertar una función javascript (redirectUrl) que llamará a nuestro clonador con una url que reciba. La otra modificación que se hace es la de remplazar los enlaces por llamadas a nuestra función manteniendo las url’s de estos.

De esta forma el ejemplo de página html que hemos visto antes, quedaría de está forma al clonarlo:

<html>
<head>
<title>pruebas</title>
<script language="javascript" type="text/javascript">
function redirectUrl(destination) {
window.localtion.href = 'cloner.php?url=' + destination; }
</script>
</head>
<body>
<a href="javascript:redirectUrl(www.google.com);">Google(EN)</a><br />
<a href="javascript:redirectUrl(www.google.es);">Google(ES)</a><br />
<a href="javascript:redirectUrl(www.yahoo.es);">Yahoo</a><br />
<a href="javascript:redirectUrl(www.microsoft.es);">Microsoft</a><br />
</body>
</html>

Ahora, aunque el usuario navegue por la página, seguirá estando en nuestro servidor sin tener que tener un montón de páginas almacenadas en él.

Como todo esto era un experimento para pasar el rato, y el rato ha pasado, pues aquí nos hemos quedado. Obviamente no creo que funcione en todas las páginas, ni que reconozca todos los enlaces, por ejemplo, aquellos que en vez de comillas dobles sean con comillas simples, solo sirve para navegar por partes públicas de la aplicación, ya que no clona sesiones ni ningún tipo de seguridad, los enlaces al pasar el ratón sobre ellos se ven modificados, etc… pero bueno, aquí lo dejo. Como se suele decir, es un experimento de laboratorio, donde todo esta controlado, no pasa de ser una curiosidad. Cualquiera es libre de coger el código y seguir jugando con él, y por supuesto de comentarlo aquí. Ya sabéis GPL y esas cosas. Nos vemos.

Anuncios
 
5 comentarios

Publicado por en 16 enero, 2011 en offtopic, programación

 

5 Respuestas a “Bromas con PHP – Clonar Web

  1. jesus

    16 septiembre, 2011 at 8:38 am

    hola amigo pienso que hoy en dia muchos hacen dinero pues clonando web e insertando link de clikbank que informacion tienes para hacer eso es lo mismo que estas explicando

     
    • svoboda

      18 septiembre, 2011 at 8:45 am

      No es exactamente lo mismo. El post no es más que un pequeño juguete para pasar un par de horas entretenido. Como he comentado, no clona ni seguridad, ni parte privada ni nada similar, sería bastante fácil detectar que es una página fraudulenta. Además, ni mucho menos mi intención es alentar lo que comentas, sobre todo porque clonar una página se puede utilizar no solo para meter links de publicidad y demás, sino para robar credenciales a través de Phishing.

       
  2. Rodrigo

    12 enero, 2012 at 9:06 pm

    La clonación de webs es muy jodida, sobre todo cuando lo hacen empresas en el extranjero que se suponen “legales”, y que se dedican a crearle a otros páginas web.

    Mirad: Net&Software: http://www.netandsoftware.es

    y los plagiadores: nadoweb.com

    Desde hace unas horas, se han dignado a quitar algunas fotos que tenían royalties pagados

     
    • svoboda

      13 enero, 2012 at 10:18 pm

      Efectivamente, lo de clonar webs no es una buena práctica, y sobre todo cuando se hace para lucrarse a costa del desconocimiento de mucha gente. Pero como ya dije con anterioridad, el post no es más que para pasar el rato una tarde aburrida, no serviría para engañar a nadie, no es más que un juguete teórico. Un saludo.

       
      • Rodrigo

        13 enero, 2012 at 11:08 pm

        Y quedó bien claro en el artículo. Era un buen ejemplo de mala praxis, nada más.

        Buen blog y buen artículo 😉

         

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: