Sí, hay diferencias: el navegador tiende a enviar muchas cosas adicionales HTTP headers, yo diría; y los que son enviados por ambos probablemente no tengan el mismo valor.
Aquí, después de hacer un par de pruebas, parece que es necesario pasar el encabezado HTTP llamado Accept
.
Esto se puede hacer usando el tercer parámetro de file_get_contents
, para especificar la información de contexto additionnal:
$opts = array('http' =>
array(
'method' => 'GET',
//'user_agent ' => "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2) Gecko/20100301 Ubuntu/9.10 (karmic) Firefox/3.6",
'header' => array(
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*\/*;q=0.8
'
),
)
);
$context = stream_context_create($opts);
$f = file_get_contents("http://mobile.mybustracker.co.uk/mobile.php?searchMode=2", false, $context);
echo $f;
Con esto, yo soy capaz de obtener el código HTML de la página.
Notas:
- primera vez comprobados que pasan a la
User-Agent
, pero no parece ser necesario - por lo que la línea correspondiente está aquí como un comentario
- El valor se utiliza para el encabezado
Accept
es el que usa Firefox cuando solicité esa página con Firefox antes de intentar con file_get_contents
.
- Algunos otros valores pueden estar bien, pero no hice ninguna prueba para determinar qué valor es el requerido.
Para más información, se puede echar un vistazo a: