IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

CURL et Access denied


Sujet :

Langage PHP

  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    275
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 275
    Par défaut CURL et Access denied
    Bonjour,
    J'utilise CURL pour lire des pages HTML comme un utilisateur Lambda.

    Pour certains sites (très peu) j'ai un code retour 0, MAIS ils me retournent le message :

    Access Denied You don't have permission to access "http://www.site.fr/page.html" on this server.
    Reference #99.9999.9999.999.9999.999..

    ALors que cette page s'affiche correctement dans le navigateur.

    Comment cela est possible alors même que CURL est justement censé émulé un utilisateur "normal" ?
    J'ai essayé des outils de lecture d'entete :
    1 site ne répond absolument rien
    et 1 autre me retourne code HTTP 405 "Méthode de requête non autorisée" que j'ai du mal à analyser

    des explications ?

    d'avance merci

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 699
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 699
    Par défaut
    peut-être que le site filtre l'accès en fonction de l'entête "User-Agent". essayez de modifier cet entête pour que curl se fasse passer pour un navigateur.

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Comme le précise saluts92 si tu veux avoir le même résultats qu'avec un navigateurs il faut utiliser le même user agent.

    Par exemple pour se faire passer pour un Chrome v60 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36');
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    275
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 275
    Par défaut
    j'utilise bien un USERAGENT (firefox) j'ai essayé le tien pour voir et le résultat est le même
    voici mon code CURL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    		$curl = curl_init($url_prod);
    		curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    		curl_setopt($curl, CURLOPT_COOKIEJAR, '-');
    		curl_setopt($curl, CURLOPT_COOKIESESSION, true);
    		curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 30);
    		curl_setopt($curl, CURLOPT_TIMEOUT, 30);
    		curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
    		curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); 
    		curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);  
    		curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13');
    		curl_setopt($curl, CURLOPT_REFERER, 'http://www.bing.com');
    		$url_content = curl_exec($curl);
    		curl_close($curl);
    que pensez vous de l'option CURLOPT_REFERER ?

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    275
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 275
    Par défaut
    bon ben ...

  6. #6
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    275
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 275
    Par défaut
    ce problème est non résolu, mais je le mets en résolu.

  7. #7
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 101
    Par défaut
    … Ce qui, heureusement, ne m’interdit pas de répondre.
    Le referer est effectivement une bonne idée, même si je ne pense pas que le site refuse de fonctionner si l’en-tête est absent lorsque l’utilisateur vient d’un l’extérieur. Après tout, de plus en plus de navigateurs proposent l’option de ne pas l’envoyer pour des raisons de vie privée.
    En revanche, l’en-tête referer en interne peut être nécessaire, notamment lors d’une redirection Location: (c’est une vieille technique que je ne conseille pas, mais certains sites l’utilisent encore aujourd’hui). Essaye l’option CURLOPT_AUTOREFERER (plus d’infos sur la page de curl_setopt).

    Mais je pense qu’il faut surtout se pencher sur les choses que cURL n’émule pas, je veux parler des requêtes tierces : les scripts, les images, etc. Peut-être que le serveur utilise un mécanisme de détection basé sur la présence ou non de telles requêtes. Vérifie comment se comporte ton navigateur sur le site. Je te conseille de t’aider de l’onglet réseau de la console F12
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Ajax] Cross domain et access denied
    Par Dinaïz dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 22/03/2006, 22h29
  2. ShellExecute - Access Denied sur page web
    Par Neilos dans le forum C++Builder
    Réponses: 7
    Dernier message: 03/10/2005, 12h04
  3. [Applet][Security] Access Denied
    Par medba dans le forum Applets
    Réponses: 3
    Dernier message: 23/09/2005, 14h40
  4. access denied
    Par HULK dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/08/2005, 08h26
  5. Access denied..... Help !
    Par chakan dans le forum Requêtes
    Réponses: 2
    Dernier message: 05/12/2003, 22h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo