curl et erreur 403

WRInaute passionné
Bonjour,
J'ai besoin d'interroger (unitairement, je ne suis pas un robot ou un truc dans le genre) des pages sur le web

Actuellement j'utilise principalement CURL et à défaut file_get_contents : tout ça en PHP
j'ai essayé de très nombreux paramètrages dans CURL

sur de rares sites j'ai un problème 403, par exemple ce lien (ce n'est pas mon site) https:// www .king-jouet.com/jeu-jouet/jeux-societes/jeux-strategie/ref-142728-le-jeu-carcassonne.htm (j'ai mis des blancs dans 'LURL pour ne pas qu'elle soit cliquable)
j'ai un 403 que j'essaie de lire le contenu ou même juste l'entete

alors je dis pourquoi pas, mais comment cela se fait il que d'autres outils en ligne y arrivent, par exemple l'outil de lecture d'entete de webrankinfo par exemple ?
Et il me semble que cet outil utilise aussi CURL
 
Dernière édition:
WRInaute impliqué
Une réponse 403 peut avoir plein de raisons, mais j'avais une petite idée. J'ai tenté d'accéder à la page depuis mon navigateur, mais en modifiant mon user-agent, et j'ai obtenu une 403.

Moralité : y'a un filtrage suivant l'UA, ce que curl permet de modifier.

C'est vraiment une mesure de pseudo sécurité pourrie, le genre de truc qui coûte à mettre en place et à maintenir, qu peut avoir des effets de bord non prévu, et qui ne protège finalement de rien.
 
WRInaute impliqué
J'ai pas testé avec curl, juste en changeant l'user-agent de mon navigateur, et ça a retourné une 403, preuve que le site regarde cette en-tête. Il est possible que le site mette d'autre analyses d'en-tête de ce type (voir ce qui en est dit dut stockoverflow), comme le referer, l'acceptation de cookies, etc. Par exemple sur Firefox, y'a une palanquée d'en-têtes envoyés par défaut, Accept, Accept-Encoding, Accept-Language, Cache-Control, etc.

Reprends juste les valeurs par défaut de ces en-tête (pas nécessairement tous d'ailleurs), comme si tu étais le navigateur (au-delà du simple User-Agent)
 
WRInaute impliqué
Sur Firefox, quand tu fais F12 tu as accès aux outils de développement (il y a un pendant similaire pour Chrome). Dans l'onglet Réseau, tu cliques sur la requête, puis "En-têtes"' et tu cherches les en-têtes de la requête (elles sont après celles de la réponse).
 
WRInaute occasionnel
Bonsoir,

Si tu as chrome, brave ... Tu ouvres la console developer. Ctrl+shift+i quand tu es sur la page dont tu as donné l'url. Un clic droit sur l'url da la page principale dans l'onglet network. Puis, copy as curl .

chromium_curl_dev_console.png
 
WRInaute passionné
Sur Firefox, quand tu fais F12 tu as accès aux outils de développement (il y a un pendant similaire pour Chrome). Dans l'onglet Réseau, tu cliques sur la requête, puis "En-têtes"' et tu cherches les en-têtes de la requête (elles sont après celles de la réponse).
ok, merci, et comment fais tu pour changer le user-agent sur ton navigateur ?
 
WRInaute passionné
le serveur du site me répond "..quelque chose bloque le fonctionnement de javascript sur votre ordinateur.."

est ce que je peux jouer la dessus au niveau des paramètres CURL ?
 
WRInaute impliqué
comment fais tu pour changer le user-agent sur ton navigateur ?
Y'a pas mal de plug-in qui proposent ça, sur Firefox j'utilise User-Agent Switcher and Manager, ça me permet notamment de surpasser les sites qui pensent que mon navigateur est obsolète (et alors ? ça me regarde) et bloquent l'accès au site… alors que si je me fais passer pour un autre, j'ai pas de soucis.
"..quelque chose bloque le fonctionnement de javascript sur votre ordinateur.."

est ce que je peux jouer la dessus au niveau des paramètres CURL
Là ça va être plus compliqué. À ma connaissance, cURL va pouvoir récupérer des données, mais pas forcément exécuter du JS. Il y a des options plus "musclées", du genre Chrome en mode headless, c'est à dire exécuter Chrome mais sans interface.

Après regarde si le code brut récupéré de la page n'a pas déjà les infos dont tu as besoin. Autant c'est une balise <noscript> ou un truc du genre qui te bloques inutilement sur toute la page.
 
Discussions similaires
Haut