2010-11-15 14 views
12

Hemos estado usando información de un sitio desde hace un tiempo (algo que el sitio permite si mencionas la fuente y lo hacemos) y hemos estado copiando la información a mano. Como se puede imaginar, esto puede volverse tedioso bastante rápido, así que he intentado automatizar el proceso obteniendo la información con un script PHP.¿Cómo disfrazar tu script PHP como navegador?

La URL que estoy tratando a buscar es:

http://mediaforest.ro/weeklycharts/viewchart.aspx?r=WeeklyChartRadioLocal&y=2010&w=46 08-11-10 14-11-10 

Si entro en un navegador que funciona, si trato a file_get_contents() consigo Solicitud incorrecta

Supuse que comprueban para ver si el cliente es un navegador para Rodé una solución basada CURL:

$ch = curl_init(); 

$header=array(
    'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12', 
    'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 
    'Accept-Language: en-us,en;q=0.5', 
    'Accept-Encoding: gzip,deflate', 
    'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7', 
    'Keep-Alive: 115', 
    'Connection: keep-alive', 
); 

curl_setopt($ch,CURLOPT_URL,$url); 
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); 
curl_setopt($ch,CURLOPT_COOKIEFILE,'cookies.txt'); 
curl_setopt($ch,CURLOPT_COOKIEJAR,'cookies.txt'); 
curl_setopt($ch,CURLOPT_HTTPHEADER,$header); 
$result=curl_exec($ch); 

curl_close($ch); 

he comprobado y las cabeceras son idénticos con mi br cabeceras de owser y sigo teniendo Solicitud incorrecta

así que he intentado otra solución:

http://www.php.net/manual/en/function.curl-setopt.php#78046 

Desafortunadamente esto no funciona bien y estoy sin ideas. ¿Qué me estoy perdiendo?

+8

¿Usó 'urlencode' en la URL antes de llamar a' file_get_contents'? –

+0

Maldita sea, eso es embarazoso ... ¿cómo podría extrañar eso? – pandronic

+1

Bueno, funciona incluso con file_get_contents(), por lo que no hay protección alguna. Perdón por perder el tiempo de todos :) – pandronic

Respuesta

11

Trate de escapar su URL, me funciona de esa manera.

http://mediaforest.ro/weeklycharts/viewchart.aspx?r=WeeklyChartRadioLocal&y=2010&w=46%2008-11-10%2014-11-10 
8

Uso curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12');

Puede reemplazar el agente de usuario con otro, por supuesto.

Sin embargo, "Solicitud incorrecta" probablemente NO esté relacionada con un agente de búsqueda que falta o está mal. Parece que el servidor web en sí no le gusta su solicitud ... no la aplicación detrás del URI solicitado.

Cuestiones relacionadas