Heim >Backend-Entwicklung >PHP-Tutorial >Warum gibt mein Website-Scraper auf Remote-Servern einen 403 Forbidden-Fehler mit „file_get_contents()' zurück?
403 Forbidden Error mit file_get_contents()
Beim Versuch, einen Website-Scraper zu entwickeln, stieß ein Entwickler auf einer Fernbedienung auf einen 403 Forbidden Error Server während der Verwendung von file_get_contents() ohne Probleme auf einem lokalen Computer. Die Fehlermeldung weist darauf hin, dass eine HTTP-Anfrage fehlgeschlagen ist.
Bei der Überprüfung wurde festgestellt, dass die Einstellung „allow_url_fopen“ in der Konfigurationsdatei php.ini aktiviert ist, was zur Suche nach weiteren Lösungen führte. Um Erkenntnisse über die Fehlerursache zu gewinnen, wurden die Debugging-Mechanismen von PHP empfohlen.
Konkret kann die Variable $http_response_header nach jedem Aufruf von file_get_contents() Antwort-HTTP-Header bereitstellen. Darüber hinaus kann die Kontextoption „ignore_errors“ die tatsächliche Antwort zurückgeben, was möglicherweise den 403-Fehler erklärt.
Praktische Analysen legen nahe, dass der Fehler möglicherweise auf fehlende erforderliche HTTP-Header wie Referer oder User-Agent zurückzuführen ist. Um dieses Problem zu beheben, kann mit stream_context_create() ein benutzerdefinierter Kontext erstellt werden, um den User-Agent festzulegen und eine echte Browseranfrage zu simulieren.
$context = stream_context_create( array( "http" => array( "header" => "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36" ) ) ); echo file_get_contents("www.google.com", false, $context);
Dieses Codebeispiel zeigt das Festlegen des User-Agents und das Senden der Anfrage an Google , zeigt, wie man Header für effektives Web-Scraping manipuliert.
Das obige ist der detaillierte Inhalt vonWarum gibt mein Website-Scraper auf Remote-Servern einen 403 Forbidden-Fehler mit „file_get_contents()' zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!