Sì, ci sono differenze - il browser tende a inviare un sacco di addizionale HTTP headers, direi; e quelli che vengono inviati da entrambi probabilmente non hanno lo stesso valore.
Qui, dopo aver eseguito un paio di test, sembra che passare l'intestazione HTTP denominata Accept
sia necessario.
questo può essere fatto utilizzando il terzo parametro di file_get_contents
, per specificare le informazioni di contesto addizionale:
$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 questo, sono in grado di ottenere il codice HTML della pagina.
Note:
- ho provato passando il
User-Agent
, ma non sembra essere necessaria - che è il motivo per cui la linea corrispondente è qui come un commento
- Il valore viene utilizzato per l'intestazione
Accept
è quello utilizzato da Firefox quando ho richiesto quella pagina con Firefox prima di provare con file_get_contents
.
- Alcuni altri valori potrebbero essere OK, ma non ho fatto alcun test per determinare quale valore è quello richiesto.
Per maggiori informazioni, è possibile dare un'occhiata a:
fonte
2010-03-30 20:35:30