Tak, są pewne różnice - przeglądarka wysyła dużo informacji o dodatkach: HTTP headers, Powiedziałbym; a te, które są wysyłane przez oba, prawdopodobnie nie mają tej samej wartości.
Tutaj, po wykonaniu kilku testów, wydaje się, że konieczne jest przekazanie nagłówka HTTP o nazwie Accept
.
Można to zrobić za pomocą trzeciego parametru file_get_contents
, aby określić źródło dodatkowego informacje kontekstowe:
$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;
Dzięki temu jestem w stanie uzyskać kod HTML strony.
Uwagi:
- raz pierwszy przetestowany minięciu
User-Agent
, ale nie wydaje się być konieczne - dlatego odpowiednia linia jest tutaj jako komentarz
- Wartość jest używany dla nagłówka
Accept
jest tym, którego używa Firefox, gdy poprosiłem o tę stronę w przeglądarce Firefox przed próbą z file_get_contents
.
- Niektóre inne wartości mogą być OK, ale nie wykonałem żadnego testu w celu ustalenia, która wartość jest wymagana.
Aby uzyskać więcej informacji, można spojrzeć na: