PHP file_get_contents() verhält sich anders als browser
Ich versuche zum download, die den Inhalt einer web-Seite mit PHP.
Wenn ich den Befehl:
$f = file_get_contents("http://mobile.mybustracker.co.uk/mobile.php?searchMode=2");
Gibt es eine Seite, die meldet, dass der server down ist. Doch wenn ich, fügen Sie den URL in meinem browser bekomme ich die erwartete Seite.
Hat jemand irgendeine Idee was dies verursacht? Tut file_get_contents übertragen alle Header, die es zu unterscheiden von einer browser-Anfrage?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, es gibt Unterschiede-der browser neigt dazu, senden viele zusätzlichen HTTP-Header, würde ich sagen ; und diejenigen, die gesendet werden, indem beide wohl nicht den gleichen Wert haben.
Hier, nachdem ich ein paar tests, es scheint, dass die übergabe der HTTP-header namens
Accept
notwendig ist.Dies kann über den Dritten parameter von
file_get_contents
anzugeben zusätzlichen Kontext-Informationen :Mit dieser, ich bin in der Lage, den HTML-code der Seite.
Hinweise :
User-Agent
, aber es scheint nicht notwendig zu sein - das ist, warum Sie die entsprechende Zeile, hier als KommentarAccept
header ist das man Firefox verwendet, wenn ich verlangte, dass die Seite mit Firefox, bevor Sie versuchen, mitfile_get_contents
.Für weitere Informationen, können Sie einen Blick auf :
file_get_contents
stream_context_create
ersetzen Sie alle Leerzeichen mit %20