Pourquoi mon Website Scraper renvoie-t-il une erreur 403 Forbidden avec `file_get_contents()` sur les serveurs distants ?

DDD
Libérer: 2024-10-26 18:04:03
original
392 Les gens l'ont consulté

Why is My Website Scraper Returning a 403 Forbidden Error with `file_get_contents()` on Remote Servers?

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);
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal