2010-03-14 9 views
36

hay sitios web que cuando abro una solicitud específica de ajax en el navegador obtengo la página resultante, pero cuando intento cargarlos con curl, recibo un error del servidor.php curl: ¿cómo puedo emular una solicitud de obtención exactamente como un navegador web?

¿cómo puedo emular correctamente una solicitud get al servidor que simulará un navegador?

Eso es lo que estoy haciendo:

$url="https://new.aol.com/productsweb/subflows/ScreenNameFlow/AjaxSNAction.do?s=username&f=firstname&l=lastname"; 
ini_set('user_agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 
5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)'); 
$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL,$url); 
$result=curl_exec($ch); 
print $result; 
+0

¿Qué error obtienes del servidor? – bmb

+0

el sitio web devuelve un xml con el mensaje de error "Error de etiqueta" – ufk

+0

bastante seguro de que ignorará JS independientemente. – mpen

Respuesta

58

¿Seguro de los honores módulo rizo ini_set ('user_agent', ...)? Hay una opción CURLOPT_USERAGENT descrita en http://docs.php.net/function.curl-setopt.
¿Podría haber una cookie probada por el servidor? Que puedes manejar usando CURLOPT_COOKIE, CURLOPT_COOKIEFILE y/o CURLOPT_COOKIEJAR.

editar: Dado que la solicitud utiliza https también puede haber un error al verificar el certificado, vea CURLOPT_SSL_VERIFYPEER.

$url="https://new.aol.com/productsweb/subflows/ScreenNameFlow/AjaxSNAction.do?s=username&f=firstname&l=lastname"; 
$agent= 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)'; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_VERBOSE, true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_USERAGENT, $agent); 
curl_setopt($ch, CURLOPT_URL,$url); 
$result=curl_exec($ch); 
var_dump($result); 
+0

gracias por la información. – ufk

+2

Impresionante. Estaba atrapado en lo mismo. SSL_VERIFYPEER = false hizo el truco. ¡Gracias! – beetree

+0

¿Qué debo cambiar si quiero simular el último Firefox? – Sisir

Cuestiones relacionadas