Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Littl3 en 2 Marzo 2011, 18:25 pm



Título: Extrayendo código fuente de una web (Problema con código generado por JS)
Publicado por: Littl3 en 2 Marzo 2011, 18:25 pm
Buenas tardes,

He creado un script en php que me extrae cierto contenido del codigo fuente de cierta web..  :-X

Extraigo el código fuente con Fopen y luego lo voy tratando con funciones de string.
Código
  1. $fo= fopen("$url","r") ; //obtengo el codigo fuente
  2.  
  3. while (!feof($fo))  //Leo linea por linea hasta el final
  4.                {
  5.    $fuente .= fgets($fo, 4096);
  6. }
  7.  

Bien, pues resulta que llegando al paso final del script me doy cuenta de que hay una parte del contenido web que no esta en el código fuente, o mejor dicho esta cifrado y se muestra mediante javascript, no he localizado la función que realiza esto pero me imagino que lo muestra mediante javascript ya que en el codigo fuente no aparece este contenido.

Mi pregunta es la siguiente, como puede recoger este contenido mediante php?
¿Hay alguna manera de obtener el código generado por javascript desde php?

¿Alguien se ha encontrado con un problema parecido y me puede guiar un poco para resolverlo?

Gracias, un saludo.


Título: Re: Extrayendo código fuente de una web (Problema con código generado por JS)
Publicado por: Feedeex en 2 Marzo 2011, 18:28 pm
Los códigos de HTML y Js te los tiene que devolver si o sí, ya que ambos son del lado del cliente. Lo único que nunca podrás tener es el PHP porque se maneja por el servidor.

Por cierto, en firefox o alguno click derecho -> Ver código fuente y verás que el código en js se visualiza, es decir, que si no me muestras tu code no se que decir xD.



Título: Re: Extrayendo código fuente de una web (Problema con código generado por JS)
Publicado por: Shell Root en 2 Marzo 2011, 19:32 pm
Hay una función de WHK que permite hacer eso. La modifique porque también la necesitaba.
Código
  1. function fromTo($sFrom, $sTo, $sContent){
  2.  # Start Script
  3.  
  4.  #  Created by: WHK
  5.  # Modified by: Shell Root
  6.  # Description: It can extract the contents from one part to another
  7.  
  8.  if(preg_match($sFrom ,$sContent)){
  9.    $sReturn = explode($sFrom, $sContent);
  10.    foreach($sReturn as $sCompare){
  11.      $sCompare = explode($sTo, $sCompare);
  12.      if($sCompare = $sCompare[0]){ $sBack[] = $sCompare; }
  13.      unset($sCompare);
  14.    }
  15.    return $sBack[1];
  16.  }else{ return false; }
  17.  
  18.  # End Script
  19. }
  20.  
  21. $sWeb = file_get_contents("http://127.0.0.1/PoC/PoC.html");
  22. $sWeb = fromTo("<script languaje='javascript'>", "</script>", $sWeb);
  23. print( $sWeb );


Contenido PoC.html:
Código
  1.  <head>
  2.    <script languaje='javascript'>
  3.      function sAlert(){ alert('PoC Loading'); }
  4.      function sWrite(){ document.write('PoC'); }
  5.    </script>
  6.  </head>
  7. <body onLoad='sAlert();'>
  8.  <h1> PoC </h1>
  9. </body>
  10. </html>

Resultado:
Código
  1. alex@shellroot:~/Escritorio$ php PoC.php
  2.      function sAlert(){ alert('PoC Loading'); }
  3.      function sWrite(){ document.write('PoC'); }
  4.  


Título: Re: Extrayendo código fuente de una web (Problema con código generado por JS)
Publicado por: Littl3 en 2 Marzo 2011, 22:41 pm
Grscias WHK, ¿podrias comentar un poco el funcionamiento de la función?

Un saludo.


Título: Re: Extrayendo código fuente de una web (Problema con código generado por JS)
Publicado por: Nakp en 3 Marzo 2011, 04:13 am
la funcion recibe 3 parametros

desde donde extraer
hasta donde extraer (puede ser entre 2 tags)
el texto del cual extraer