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

Web Perl Discussion :

[Débutant] Connexion en HTTPS via un Proxy ?


Sujet :

Web Perl

  1. #1
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2003
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2003
    Messages : 921
    Points : 449
    Points
    449
    Par défaut [Débutant] Connexion en HTTPS via un Proxy ?
    Bonjour à tous,

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
        #!c:/perl/bin -w
        use strict;
        use warnings;
        use WWW::Mechanize;
        use Crypt::SSLeay;
        use Data::Dumper;
        use HTML::TreeBuilder;
     
        my $url = 'https://blabla.com';
        my $usr = 'mon_login';
        my $pwd = 'mon_password';
     
        my $bot = WWW::Mechanize->new;
        $bot->get($url);
        die $bot->res->status_line unless $bot->success;
     
        # positionnement sur le 1er formulaire (indice = 1)
        $bot->form_number(1);
     
        # debug
        print Dumper $bot->current_form;
        #print Dumper +( $bot->forms )[0];    # autre formulation
     
        # nom du champ (Email) à remplir : "_blabla:email"
        $bot->field( '_blabla:email' => $usr );
     
        # nom du champ (Password) à remplir : "_blabla:password"
        $bot->field( '_blabla:password' => $pwd );
     
        # envoi du formulaire
        $bot->click();
     
        # debug
        print Dumper $bot->content;
     
        print map { $_->as_text }
          HTML::TreeBuilder
            ->new_from_content( $bot->content )
            ->look_down( _tag => 'span', id => 'id_du_champ_a_recup' );
    Var d'environnement pour passer à travers le Proxy :
    https_proxy => http://proxy.mycompany.com:8080
    https_proxy_user => mon_login
    https_proxy_password => mon_mdp
    OU

    Erreur retournée quelques soient les variables d'environnement :
    U:\Robot_Web>bot.pl
    407 Proxy Authentication Required at U:\Robot_Web\bot.pl line 15.
    Quand on n'a pas d'tête, on a ...

  2. #2
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    A priori tu as oublié de faire env_proxy(), cf la FAQ de WWW::Mechanize.

    --
    Jedaï

  3. #3
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2003
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2003
    Messages : 921
    Points : 449
    Points
    449
    Par défaut
    Citation Envoyé par Jedai
    A priori tu as oublié de faire env_proxy(), cf la FAQ de WWW::Mechanize.

    --
    Jedaï
    Etant donné que ça ne fonctionne pas avec les variables d'environnement ... j'ai utilisé la 2ème solution, càd coder en dur les informations me permettant de me connecter au Proxy et ... ça fonctionne toujours pas !

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
        #!c:/perl/bin -w
        use strict;
        use warnings;
        use WWW::Mechanize;
        use Crypt::SSLeay;
        use Data::Dumper;
        use HTML::TreeBuilder;
     
        my $url = 'https://blabla.com';
        my $usr = 'mon_login';
        my $pwd = 'mon_password';
     
        my $bot = WWW::Mechanize->new;
        $bot->get($url);
     
        #$bot->agent_alias("Linux Mozilla");
     
        #$bot->env_proxy();
        $bot->proxy(['http', 'https', 'ftp'], 'http://mon_login:mon_mdp@proxy.mycompany.com:8080/');
     
        # debug
        #print Dumper $bot->content;
        #print Dumper $bot->response;
     
        die $bot->res->status_line unless $bot->success;
     
        # positionnement sur le 1er formulaire (indice = 1)
        $bot->form_number(1);
     
        # debug
        print Dumper $bot->current_form;
        #print Dumper +( $bot->forms )[0];    # autre formulation
     
        # nom du champ (Email) à remplir : "_blabla:email"
        $bot->field( '_blabla:email' => $usr );
     
        # nom du champ (Password) à remplir : "_blabla:password"
        $bot->field( '_blabla:password' => $pwd );
     
        # envoi du formulaire
        $bot->click();
     
        # debug
        print Dumper $bot->content;
     
        print map { $_->as_text }
          HTML::TreeBuilder
            ->new_from_content( $bot->content )
            ->look_down( _tag => 'span', id => 'id_du_champ_a_recup' );
    Quand on n'a pas d'tête, on a ...

  4. #4
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Peut-être serait-il judicieux de spécifier le proxy avant de faire le get()....

    --
    Jedaï

  5. #5
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2003
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2003
    Messages : 921
    Points : 449
    Points
    449
    Par défaut
    Citation Envoyé par Jedai
    Peut-être serait-il judicieux de spécifier le proxy avant de faire le get()....

    --
    Jedaï
    A force d'intercaler des lignes supplémentaires pour faire des tests ... j'ai fini par les mettre après le get() ... au temps pour moi !


    Bon sinon j'ai désormais un autre problème :

    400 Bad Request
    Quand on n'a pas d'tête, on a ...

  6. #6
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par ghohm
    Bon sinon j'ai désormais un autre problème :
    400 Bad Request
    Ma foi là ça dépend de l'url. Tu as essayé avec une autre URL https pour voir si ça marche ?

    --
    Jedaï

  7. #7
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2003
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2003
    Messages : 921
    Points : 449
    Points
    449
    Par défaut
    Quelques test :

    U:\Robot_Web>mech-dump https://signin.ebay.fr/ws/eBayISAPI.dll?SignIn
    Can't fetch https://signin.ebay.fr/ws/eBayISAPI.dll?SignIn
    500 Can't connect to signin.ebay.fr:443 (Bad hostname 'signin.ebay.fr')

    U:\Robot_Web>mech-dump https://www.internet-mineurs.gouv.fr/
    Can't fetch https://www.internet-mineurs.gouv.fr/
    500 Can't connect to www.internet-mineurs.gouv.fr:443 (Bad hostname 'www.interne
    t-mineurs.gouv.fr')
    Quand on n'a pas d'tête, on a ...

  8. #8
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Tu as bien installé Crypt::SSLeay ?

    Par ailleurs, tu es sûr de ton proxy (c'est le seul élément que je ne peux pas tester ici) ?

    (tes deux exemples marchent chez moi)

    --
    Jedaï

  9. #9
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2003
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2003
    Messages : 921
    Points : 449
    Points
    449
    Par défaut
    Citation Envoyé par Jedai
    Tu as bien installé Crypt::SSLeay ?
    Oui

    Citation Envoyé par Jedai
    Par ailleurs, tu es sûr de ton proxy (c'est le seul élément que je ne peux pas tester ici) ?
    Apparemment, il est bien béton ! Et forcément ... personne pour me renseigner aujourd'hui !



    Citation Envoyé par Jedai
    (tes deux exemples marchent chez moi)
    Je sais pas si je dois sauter de joie ou ...


    J'ai essayé de mettre en place le script ci-dessous, mais pas mieux ...

    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
        #!c:/perl/bin -w
        use strict;
        use warnings;
        use LWP::UserAgent;
        use HTML::Form;
        use MIME::Base64;
     
        my ( $user, $pass ) = qw( mon_login mon_pass );
        my $token = encode_base64("$user:$pass");
     
        my $ua  = LWP::UserAgent->new();
        my $url = 'https://blabla.com';
        my $req = HTTP::Request->new( GET => $url );
     
        #$req->headers->proxy_authorization_basic( $user, $pass );
        $req->header( Authorization => "Basic $token" );
     
        # $req est un objet HTTP::Request
        my $h = $req->headers();
     
        # modifie un en-tête
        $h->header( User_Agent => 'Mozilla/5.0' );
     
        my $res = $ua->request( $req );
     
        print $res->content;
    500 Can't connect to blabla.com:443 (Bad hostname 'blabla.com')
    Quand on n'a pas d'tête, on a ...

  10. #10
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Personnellement, ceci marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #!/usr/bin/perl
    use strict; use warnings;
     
    use WWW::Mechanize;
     
    my $mech = WWW::Mechanize->new();
     
    $mech->proxy('https', 'http://http:proxy@localhost:3128');
     
    $mech->get('https://signin.ebay.fr/ws/eBayISAPI.dll?SignIn');
     
    print $mech->content();
     
    __END__
    Avec un proxy lancé avec l'exemple proxy-auth.pl de HTTP::Proxy...

    Essaye ça, et si ça marche, tu auras confirmation que le problème ne vient pas du proxy ou de WWW::Mechanize, mais bien de l'url utilisé (peut-être faut-il forcément certains paramètres ? Certains cookies ?).

    --
    Jedaï

  11. #11
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2003
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2003
    Messages : 921
    Points : 449
    Points
    449
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #!c:/perl/bin -w
     
    use strict; use warnings;
     
    use WWW::Mechanize;
     
    my $mech = WWW::Mechanize->new();
     
    $mech->proxy('https', 'http://mon_login:mon_pass@proxy.mycompany.com:8080/');
     
    $mech->get('https://signin.ebay.fr/ws/eBayISAPI.dll?SignIn');
     
    print $mech->content();

    Ca vient du Proxy ....

    <html>

    <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
    <title>WebWasher - Notification</title>
    <LINK REL=stylesheet HREF="http://proxy.mycompany.com:8080/wwfile?name=wwerrors_stylesheet.css">
    <STYLE type="text/css">
    </STYLE>
    </head><body>





    <table border="0" cellpadding="10" cellspacing="0" width="600">

    <tr><td align="left" valign="top">
    <img src="http://proxy.mycompany.com:8080/wwfile?name=images/logo_ww.gif" alt="WebWasher" width="122" height="48"></td><td><p class="notification">Notification</p></td>
    </tr>
    <tr>
    <td colspan="2" align="left">
    <p class="title">Invalid Proxy Request</p>
    </td>
    </tr>

    <tr>

    <td colspan="2" align="left" valign="top"> <p>Webwasher can only be used as an HTTP proxy server. No other protocols (FTP, etc.) or access variants are supported!
    <br>
    Please change your browser's settings. Perhaps you have entered Webwasher as an FTP proxy in your browser (check your browser's FTP proxy settings).
    <br>
    Please also check the URL you requested ("https://signin.ebay.fr/ws/eBayISAPI.dll?SignIn") for typing, syntax errors or disallowed symbols. </p>
    <P> If you would like to try again, <a href="https://signin.ebay.fr/ws/eBayISAPI.dll?SignIn">click here</a>.
    <p>
    </td>
    </tr>

    <tr>
    <td colspan="2" align="right" valign="top">
    <hr size="1">
    <small><i>generated 14/Jun/2007:17:40:41 +0200 by webwasher.mycompany.com (Webwasher 5.3.0 Build 2185)</i></small>
    </td>
    </tr>
    </table>
    </body>
    </html>
    Quand on n'a pas d'tête, on a ...

  12. #12
    Membre averti
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2003
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2003
    Messages : 921
    Points : 449
    Points
    449
    Par défaut
    Mon robot Web est loin d'être fini, mais j'arrive enfin à passer le Proxy même en HTTPS !

    C'était écrit !

    Exemple :

    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
    #!c:/perl/bin -w
     
    use strict; use warnings;
     
    use WWW::Mechanize;
     
    my $mech = WWW::Mechanize->new();
     
    # PROXY SUPPORT
    $ENV{HTTPS_PROXY} = 'http://proxy.mycompany.com:8080';
     
    # PROXY_BASIC_AUTH
    $ENV{HTTPS_PROXY_USERNAME} = 'mon_login';
    $ENV{HTTPS_PROXY_PASSWORD} = 'mon_pass';
     
    $mech->get('https://signin.ebay.fr/ws/eBayISAPI.dll?SignIn');
     
    print $mech->content();

    Quand on n'a pas d'tête, on a ...

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

Discussions similaires

  1. Accès à un WebService HTTPS via un proxy
    Par BOBI59 dans le forum Websphere
    Réponses: 0
    Dernier message: 24/10/2011, 10h35
  2. Connexion Java Client au Serveur HTTPS via proxy
    Par devdev2003 dans le forum Services Web
    Réponses: 17
    Dernier message: 20/05/2011, 09h59
  3. [System.Net.Sockets] Connexion via un proxy
    Par kendras dans le forum Développement
    Réponses: 15
    Dernier message: 17/02/2009, 14h52
  4. Réponses: 16
    Dernier message: 25/10/2008, 20h27
  5. Connexion FTP via un proxy
    Par Cold Hand dans le forum Programmation et administration système
    Réponses: 4
    Dernier message: 27/06/2007, 13h42

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