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

VBScript Discussion :

Gestion d'un proxy via Vbscript


Sujet :

VBScript

  1. #1
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 420
    Par défaut Gestion d'un proxy via Vbscript
    Bonjour;

    Actuellement, j'ai accès à internet via un proxy(celui du lycée).
    Les profs utilisant internet ne doivent pas donner le login et le mot de passe aux élèves(prescription du ministère de l'éducation) et doivent par conséquent entrer les données eux-mêmes pour chaque poste, ce qui est long et fatiguant.

    En essayant avec ce code, je reçois le message d'erreur : (9,1) objet requis 'Helem' en cliquant sur annuler dans la fenêtre d'identification (login et mot de passe).

    Ma question est : comment remplir(par le code) les deux champs sans que la fenêtre ne soit affichée ?

    Avec tous mes remerciements pour votre aide.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  2. #2
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 124
    Par défaut
    Salut

    Je pense que tu ne passes pas le bon nom/Id de l'élément dans l'appel Set Helem = IE.document.getElementById("vb_login_username").

    Tu peux surement afficher la page d'une façon classique, afficher le code source (Alt+H, Alt + S avec IE ou Ctrl + U avec Firefox)
    Là tu pourras retrouver l'Id de la boite d'entrée en recherchant la légende de la boite (souvent Identifiant et Mot de passe ) input type="text" pour l'identifiant et input type="password" pour le mot de passe chacun est suivit de l'Id et/ou du nom a utiliser dans l'appel getElementById
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 841
    Par défaut

    Citation Envoyé par ProgElecT Voir le message
    Je pense que tu ne passes pas le bon nom/Id de l'élément dans l'appel Set Helem = IE.document.getElementById("vb_login_username").
    Tu peux surement afficher la page d'une façon classique, afficher le code source (Alt+H, Alt + S avec IE ou Ctrl + U avec Firefox)
    Là tu pourras retrouver l'Id de la boite d'entrée en recherchant la légende de la boite (souvent Identifiant et Mot de passe ) input type="text" pour l'identifiant et input type="password" pour le mot de passe chacun est suivit de l'Id et/ou du nom a utiliser dans l'appel getElementById
    Je crois qu'il s'agit d'un HTTP_Authentification via un Serveur Proxy : Serveur Mandataire et non pas dans une page HTML qu'on peut éditer la source pour changer les ID



    Peut-être qu'il y a une solution que je l'ignore encore; car moi-même je suis intéressé par ce code

  4. #4
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 420
    Par défaut
    Salut

    Je pense que tu ne passes pas le bon nom/Id de l'élément dans l'appel Set Helem = IE.document.getElementById("vb_login_username").
    Tu peux sûrement afficher la page d'une façon classique, afficher le code source (Alt+H, Alt + S avec IE ou Ctrl + U avec Firefox)
    Il ne s'agit pas d'un champ contenu dans la page html mais il est question d'une fenêtre d'identification à part telle que celle proposée par hackoofr. C'est là que ça coïnce.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  5. #5
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 302
    Par défaut
    bonjour,
    prendre un utilitaire comme winspy et vérifier si le dialogue d'authentification proxy est
    bien un simple dialogue win32 avec des contrôles combobox et edit.
    si oui, peut-être que la méthode SendKeys fonctionnera ou utiliser un composant comme AutoItX qui possède des fonctions fiables
    d'injection de texte dans ce genre de champs.+ simple que par dynamicwrapperx
    si non, peut-être une simulation de touches bas niveau par l'api mais là je m'égare
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  6. #6
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 841
    Par défaut

    La piste de omen999 m'a conduit à ceci avec AutoIT

  7. #7
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 302
    Par défaut

    tout en sachant que l'on peut faire la même chose en restant sous vbs en utilisant
    les fonctionnalités du composant COM AutoItX qui est livré avec le langage de script AutoIt
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  8. #8
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    salut,

    avec AutoIt ça parait une bonne solution, ou plutôt ça doit être une bonne solution puisque ce langage est destiner à l'automatisation des tâches et à manipuler les dialogues box...même si avec Powershell, je crois qu'on peux faire la même chose mais en plus propre, en injectant les credentials directement par un objet .NET PSCredential

    je n'ai pas tester mais c'est une autre piste...

  9. #9
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 302
    Par défaut
    en injectant les credentials directement par un objet .NET PSCredential
    pas nécessairement évident à faire...
    et pour ce qui est de la gestion des credentials, l'objet WinHttpRequest fait directement le taff (voir méthode SetCredentials)
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  10. #10
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 420
    Par défaut
    Pour une première solution,celle recommandée par hackoofr que je remercie pour son intervention, j'ai utilisé ce code auquel j'ai ajouté la ligne
    WinActivate("Connecter à 172.168.x.x", "") pour être sûr que la fenêtre d'identification soit au premier plan sinon cela ne marcherait 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
        While 1
        If WinExists("Connecter à 172.168.x.x", "") Then
            WinActivate("Connecter à 172.168.x.x", "")
    	$hWnd = WinGetHandle("Connexion à 172.168.x.x", "")
            WinActivate($hWnd, "")
            $hUser = ControlGetHandle($hWnd, "", "[CLASS:Edit; INSTANCE:2]")
            ControlSetText($hWnd, "", $hUser, "test")
            $hPass = ControlGetHandle($hWnd, "", "[CLASS:Edit; INSTANCE:3]")
            ControlSetText($hWnd, "", $hPass, "test")
            $hCheck = ControlGetHandle($hWnd, "", "[CLASS:Button; INSTANCE:1]")
            ;ControlCommand ($hWnd, "", $hCheck, "check")
            $hOK = ControlGetHandle($hWnd, "", "[CLASS:Button; INSTANCE:2]")
            ControlFocus($hWnd, "", $hOK)
            ControlClick($hWnd, "", $hOK)
            ExitLoop
        EndIf
        Wend
    que j'ai compilé en exe(LogIn.exe) puis je le lance avec ce
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Option Explicit
    Dim IE,Prog,WS
    Prog="LogIn.exe"
    Set WS = Wscript.CreateObject("Wscript.Shell")
    WS.Run Prog,0,False ' on lance le prog avant qui va chercher la fenêtre du login
    Set IE = Wscript.CreateObject("InternetExplorer.Application")
    IE.Visible = 1 
    IE.Navigate "http://www.google.tn/" ' on lance ensuite IE
    Do While (IE.Busy)
        WScript.Sleep 10
    Loop
    A noter que dans ce cas, j'ai placé le script et l'exe dans le même dossier.

    Je remercie tous ceux qui m'ont donné conseil et idée.

    Je continue à chercher en utilisant VbScript uniquement; sait-on jamais !!
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  11. #11
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 841
    Par défaut

    Vous pouvez faire ceci dans un seul fichier exécutable qui gère tout : le lancement de Internet Explorer avec l'authentification de la connexion au lieu de d'utiliser deux fichiers (vbscript+EXE) dans un même dossier
    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
    $adresse = "http://www.google.tn/"
    Run("c:\program files\Internet Explorer\iexplore.exe" & ' "' & $adresse & '"' )
        While 1
        If WinExists("Connecter à 172.168.x.x", "") Then
            WinActivate("Connecter à 172.168.x.x", "")
    	$hWnd = WinGetHandle("Connexion à 172.168.x.x", "")
            WinActivate($hWnd, "")
            $hUser = ControlGetHandle($hWnd, "", "[CLASS:Edit; INSTANCE:2]")
            ControlSetText($hWnd, "", $hUser, "test")
            $hPass = ControlGetHandle($hWnd, "", "[CLASS:Edit; INSTANCE:3]")
            ControlSetText($hWnd, "", $hPass, "test")
            $hCheck = ControlGetHandle($hWnd, "", "[CLASS:Button; INSTANCE:1]")
            ;ControlCommand ($hWnd, "", $hCheck, "check")
            $hOK = ControlGetHandle($hWnd, "", "[CLASS:Button; INSTANCE:2]")
            ControlFocus($hWnd, "", $hOK)
            ControlClick($hWnd, "", $hOK)
            ExitLoop
        EndIf
        Wend
    Donc il suffit juste de le compiler et c'est à vous de choisir lequel des deux vous arrange
    Cordialement

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 13/04/2018, 12h03
  2. Paramétrage du Parefeu Windows via VBscript
    Par kyosuke_1 dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 25/08/2008, 15h09
  3. gestion TCP en natif dans VBScript?
    Par rodgeurette dans le forum VBScript
    Réponses: 0
    Dernier message: 09/07/2008, 09h29
  4. Websphere et reverse proxy via IHS
    Par keroz dans le forum Websphere
    Réponses: 4
    Dernier message: 05/04/2007, 09h54
  5. Génération interfaces et proxy via Axis
    Par zoziaux dans le forum Services Web
    Réponses: 4
    Dernier message: 16/01/2007, 17h38

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