Maison >développement back-end >tutoriel php >Pourquoi mon Website Scraper renvoie-t-il une erreur 403 Forbidden avec `file_get_contents()` sur les serveurs distants ?
Erreur interdite 403 avec file_get_contents()
Dans une tentative de développement d'un grattoir de site Web, un développeur a rencontré une erreur 403 interdite sur une télécommande serveur tout en utilisant file_get_contents() sans aucun problème sur une machine locale. Le message d'erreur indique qu'une requête HTTP a échoué.
Après inspection, le paramètre allow_url_fopen dans le fichier de configuration php.ini a été vérifié comme étant activé, ce qui a conduit à la recherche d'autres solutions. Pour mieux comprendre la cause de l'erreur, les mécanismes de débogage de PHP ont été recommandés.
Plus précisément, la variable $http_response_header peut fournir des en-têtes HTTP de réponse après chaque appel file_get_contents(). De plus, l'option contextuelle ignore_errors peut renvoyer la réponse réelle, expliquant potentiellement l'erreur 403.
L'analyse pratique suggère que l'erreur peut provenir de l'absence d'en-têtes HTTP requis, tels que Referer ou User-Agent. Pour résoudre ce problème, un contexte personnalisé peut être créé à l'aide de stream_context_create() pour définir l'agent utilisateur, simulant ainsi une requête réelle du navigateur.
$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);
Cet exemple de code montre la configuration de l'agent utilisateur et l'envoi de la requête à Google. , montrant comment manipuler les en-têtes pour un scraping Web efficace.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!