Extrayendo código fuente de una web (Problema con código generado por JS)

Iniciado por Littl3, 2 Marzo 2011, 18:25 PM

0 Miembros y 1 Visitante están viendo este tema.

Littl3

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 (php) [Seleccionar]

$fo= fopen("$url","r") ; //obtengo el codigo fuente

while (!feof($fo))  //Leo linea por linea hasta el final
                {
    $fuente .= fgets($fo, 4096);
}


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.

Feedeex

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.


Shell Root

Hay una función de WHK que permite hacer eso. La modifique porque también la necesitaba.
Código (php) [Seleccionar]
function fromTo($sFrom, $sTo, $sContent){
  # Start Script

  #  Created by: WHK
  # Modified by: Shell Root
  # Description: It can extract the contents from one part to another

  if(preg_match($sFrom ,$sContent)){
    $sReturn = explode($sFrom, $sContent);
    foreach($sReturn as $sCompare){
      $sCompare = explode($sTo, $sCompare);
      if($sCompare = $sCompare[0]){ $sBack[] = $sCompare; }
      unset($sCompare);
    }
    return $sBack[1];
  }else{ return false; }

  # End Script
}

$sWeb = file_get_contents("http://127.0.0.1/PoC/PoC.html");
$sWeb = fromTo("<script languaje='javascript'>", "</script>", $sWeb);
print( $sWeb );



Contenido PoC.html:
Código (html4strict) [Seleccionar]
<html>
  <head>
    <script languaje='javascript'>
      function sAlert(){ alert('PoC Loading'); }
      function sWrite(){ document.write('PoC'); }
    </script>
  </head>
<body onLoad='sAlert();'>
  <h1> PoC </h1>
</body>
</html>


Resultado:
Código (python) [Seleccionar]
alex@shellroot:~/Escritorio$ php PoC.php
      function sAlert(){ alert('PoC Loading'); }
      function sWrite(){ document.write('PoC'); }
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Littl3

Grscias WHK, ¿podrias comentar un poco el funcionamiento de la función?

Un saludo.

Nakp

la funcion recibe 3 parametros

desde donde extraer
hasta donde extraer (puede ser entre 2 tags)
el texto del cual extraer
Ojo por ojo, y el mundo acabará ciego.