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 PHP + Proxy NTLM


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Septembre 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2015
    Messages : 4
    Par défaut Curl PHP + Proxy NTLM
    Bonjour,

    C'est après pas mal de recherches que je me permets de venir vous solliciter pour un peu d'aide.
    Je ne suis pas certain que ce soit le bon forum mais étant un débutant , j'ai préféré choisir cette section.

    Je vais tacher d'être clair dans l'exposer de mon problème mais si par hasard ça ne l'était pas, n'hésitez pas à me demander des précisions.

    Je suis en train de réaliser une application intranet qui aura pour but de scraper le contenu de deux sites de ticketings afin d'en extraire les incidents importants et les réafficher sous une mise en forme différente.
    Je tente d'utiliser curl.
    J'ai installer un wamp sur un serveur 2012 dont je suis admin le tout sur le réseau interne de mon entreprise.
    Qui dit réseau interne dit proxy.
    Je rencontre quelques soucis pour récupérer le contenu des sites visées.

    Après quelques tests, j'ai été en mesure via console de réussir à récupérer le contenu souhaité.
    La commande utilisée est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c:\curl\curl.exe -U : --proxy-ntlm --proxy Monproxy:8080 -L Monsitedeticketing
    J'ai donc ensuite tenté de traduite cette commande en php et c'est là où tout s'écroule et je ne comprend pas le pourquoi...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    <?php
     
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'monsite');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_NTLM);
    curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 0);
    curl_setopt($ch, CURLOPT_USERPWD, ':');
    curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 0);
    curl_setopt($ch, CURLOPT_PROXY, 'Monproxy');
    curl_setopt($ch, CURLOPT_PROXYUSERPWD, ':'); 
    curl_setopt($ch, CURLOPT_VERBOSE, true);
     
    $data = curl_exec($ch);
     
     if(  $data === false){ 
            echo 'Erreur Curl : ' . curl_error($ch) .curl_errno($ch);
    		}
    else
    {
        echo 'L\'opération s\'est terminée sans aucune erreur';
    }	
    	curl_close($ch);
     echo $data ; 
    ?>
    Je tiens a préciser que j’accède sans problème a la page si je tape son adresse directement dans mon navigateur.
    Mon problème est que cela ne me retourne rien et je ne sais plus dans quelle direction chercher.
    J'ai également tenté de passer par la fonction php exec():
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    $data = ("c:\\curl\\curl.exe -U %USER%:%PASSWORD% --proxy-ntlm --proxy Monproxy -L monsite");
     
     $data = exec( $data );
     echo $data ;
    ?>
    => Pour ce cas je crois qu'il s'agit d'un problème de droit d'apache mais je n'ai pas la moindre idée de comment le régler.
    Et là aussi j'essuie un cuisant échec.
    Quelqu'un aurait il une idée du problème?

  2. #2
    Membre chevronné
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Septembre 2012
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2012
    Messages : 416
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl_setopt($ch, CURLOPT_PROXY, 'Monproxy');
    Tu y as bien mis l'url dudit proxy (sous la forme ip:port) ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 0);
    -->
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);

  3. #3
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Septembre 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2015
    Messages : 4
    Par défaut
    Oui j'ai bien indiqué le port. J'aurai du mettre Monproxy:Leportdemonproxy.

    J'ai égale essayé avec le httptunnel à 1 mais au final cela ne change rien.

    Voilà le log apache des fois que cela aide. (Je viens de vois que j'avais oublié de le joindre.)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    * Hostname was NOT found in DNS cache
    *   Trying xxx.xxx.xxx.xxx...
    * Connected to MonProxy (xxx.xxx.xxx.xxx) port 8080 (#0)
    * Proxy auth using NTLM with user ''
    * Server auth using Basic with user ''
    > GET Monsite/ HTTP/1.1
    Proxy-Authorization: NTLM TlRMTVNTUAABAAAAt7II4gUABQAwAAAACAAIACgAAAAGA4AlAAAAD1NSVzQzNjhSSFEwMDE=
    Authorization: Basic Og==
    Host: Monsite
    Accept: */*
    Proxy-Connection: Keep-Alive
     
    < HTTP/1.1 407 Proxy Authentication Required
    < Proxy-Authenticate: NTLM TlRMTVNTUAACAAAAAAAAAAAAAAAzggigy90v0/p8UGM=
    < Proxy-Connection: keep-alive
    < Content-Length: 0
    < 
    * Connection #0 to host Monproxy left intact
    * Issue another request to this URL: 'Monsite'
    * Found bundle for host Monsite: 0x44caeb8
    * Re-using existing connection! (#0) with host MonProxy
    * Connected to MonProxy (xxx.xxx.xxx.xxx) port 8080 (#0)
    * Connection #0 to host Monproxy left intact

  4. #4
    Membre chevronné
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Septembre 2012
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2012
    Messages : 416
    Par défaut
    Le proxy n'autorise peut-être qu'une liste définie de user-agent (liste blanche) ou interdit certains user-agent (liste noire). Voir avec l'admin réseau

  5. #5
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Septembre 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2015
    Messages : 4
    Par défaut
    Je me trompe peut être mais étant donné que j'accède bien à Monsite en entrant directement l'adresse dans mon navigateur et que celui ci s'adresse bien au proxy...
    De plus curl parvient bien a atteindre le site via la cmd:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    C:\Users\MonCompteAdm>c:\\curl\\curl.exe -U %USER%:%PASSWORD% --proxy-ntlm --prox
    y Monproxy:8080 -L https://Monsite
     
       <!-- <link rel="stylesheet" href="//style.css" type="text/css">-->
    <html>
        <HEAD>
        <TITLE>DÚconnexion</TITLE>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        </HEAD>
        <BODY>
     
        <script>
    parent.parent.location.href='Monsite.asp?deconnect=1';
    </script>
     
        </BODY>
        </HTML>

Discussions similaires

  1. script PHP Proxy qui fonctionne avec Flash
    Par Jcpan dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 04/08/2010, 09h32
  2. Utilisation du Curl php
    Par cha3labou dans le forum Langage
    Réponses: 1
    Dernier message: 08/06/2010, 12h27
  3. problème Curl/php en ligne de commande
    Par DaYonyon dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 02/06/2010, 18h26
  4. Proxy ntlm fonctionne sous eclipse et plus dans tomcat (http 403)
    Par azzhunter dans le forum Tomcat et TomEE
    Réponses: 0
    Dernier message: 04/11/2009, 10h28
  5. MySQL / Php / Proxy / Freebox
    Par McGuinness dans le forum Outils
    Réponses: 8
    Dernier message: 07/10/2005, 22h33

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