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?
¿Usó 'urlencode' en la URL antes de llamar a' file_get_contents'? –
Maldita sea, eso es embarazoso ... ¿cómo podría extrañar eso? – pandronic
Bueno, funciona incluso con file_get_contents(), por lo que no hay protección alguna. Perdón por perder el tiempo de todos :) – pandronic