Obtener código fuente de una web en otro dominio

Tu_Dios

Tengo una duda sobre algo que no estoy seguro si se puede hacer por temas de seguridad.

Una web necesita leer un dato (solo leer, no tengo que enviarle nada) del código fuente de otra web en otro dominio. He estado probando varias cosas pero siempre me acaba bloqueando la seguridad del navegador.

¿Se os ocurre alguna forma de obtener este dato?

No es nada malicioso, de hecho podría pedir una modificación en esta segunda web, pero el proceso seria bastante engorroso.

Muchas gracias!

elkaoD

#1 se me ocurre con AJAX que hagas un .php (tal que http://lol.com/bajar.php?url=otrodominio.com/cacafuti/) que descargue la web y ya lo parsées desde el PHP en tu dominio.

eisenfaust

http://search.cpan.org/gaas/libwww-perl-6.03/lib/LWP/Simple.pm

1 respuesta
elkaoD

#3 creo que se refiere a JavaScript (por lo de la seguridad del navegador), de ahí mi solución en #2 de usar AJAX. Lo mismo se puede hacer con tu enlace+JS, así que #1, ¡a gusto del consumidor!

txandy

curl en php :)

Un usuario de aqui de mv tenia una clase de curl en php.. fastcurl que lo implementaba rapidamente :)

LOc0 creo q era el usuario

1 respuesta
LOc0

#5
Efectivamente :D -> http://www.mediavida.com/foro/9/fastcurl-388430

Pero para lo que necesita #1 con algo así del lado del servidor valdría:

<?php
       echo file_get_contents('http://'.$_GET['url']);
?>

Salu2 ;)

Tu_Dios

Muchas gracias por las respuestas, efectivamente son buenas soluciones. En mi caso no me servía ya que la página que estaba en otro dominio necesitaba acceder a las cookies del cliente, por lo que al pasar por el servidor se jodia el invento.

Pongo dos soluciones más a este caso:

Una es configurar en el Apache un proxy inverso (para mi caso concreto tampoco servía ya que la cookie estaba creada sin el proxy):

	<Location /otrodominio>
	ProxyPass https://otrodominio.com
	ProxyPassReverse https://otrodominio.com
</Location>

Otra es un hack que solo usa js para saltarse las restricciones de seguridad de crossdomain. Es un código muy feo, no estoy nada orgulloso, pero ha sido la que al final me ha solucionado el problema. Eso si, en cuanto pueda lo cambio por algo menos chapucero:

index.html

<script type="text/javascript">

function xss_ajax(url) {		
	var script = document.createElement("script");
	script.type = "text/javascript";
	
	if(script.readyState){ // IE
		script.onreadystatechange = function(){
			if(script.readyState == "loaded" || script.readyState == "complete"){
				script.onreadystatechange = null;
				callBack();
			}
		}	
	} else {
		script.onload = function(){
			callBack();
		}
	}
	
	script.src = url;
	document.getElementsByTagName("head")[0].appendChild(script);
}

function callback(value) {
	alert(value);
}

xss_ajax("http://otrodomonio.com/ping.html");

</script>

ping.html

callback('ok');

Usuarios habituales

  • Tu_Dios
  • LOc0
  • txandy
  • elkaoD
  • eisenfaust