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

Java Discussion :

Ecrire un robot qui remplirai des formulaires web et les validerai


Sujet :

Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 25
    Points : 14
    Points
    14
    Par défaut Ecrire un robot qui remplirai des formulaires web et les validerai
    Bonjour,


    Dans le cadre d'un projet de sécurité, j'aimerai savoir s'il serait possible en java de programmer un robot qui remplirai automatiquement des champs sur un formulaire web.

    Et qui validerai ledit formulaire.

    Un genre de robot spammeur, mais seulement utilisé en cours.

    J'ai beau chercher sur le net, je trouve pas d'explication pour faire ça.

    Une piste?

    Merci

  2. #2
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Il suffit de charger l'url en mettant les bon paramètres en POST (il ne faut pas vraiment "remplir" les champs). C'est écrit dans la FAQ comment accéder à une URL (par URLConnection), et comment mettre des paramètres en POST ou en GET...

  3. #3
    Membre expert
    Avatar de moritan
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2005
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2005
    Messages : 687
    Points : 3 135
    Points
    3 135
    Par défaut
    C'est possible de le faire avec des librairies de type httpclient.

    Je crois qu'il existe une variante de Junit pour le WEB que fait déjà ça .

  4. #4
    Membre éclairé Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Points : 861
    Points
    861
    Par défaut
    Ya la classe Robot, elle est faite pour des trucs comme ça non ?
    Ignorer c'est aussi croire que l'on sait.
    Merci d'essayer d'écrire correctement.
    Pas de questions techniques par MP SVP.

  5. #5
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par remika
    Ya la classe Robot, elle est faite pour des trucs comme ça non ?
    Non, la classe Robot est faite pour diriger la souris et simuler des touches du clavier... ça serait très compliqué pour simplement remplir un formulaire, autant "remplir" avec du texte ce que le formulaire remplit (les données post) que de remplir chaque case du formulaire...

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 25
    Points : 14
    Points
    14
    Par défaut
    Et bien j'arrive pas à trouver d'exemple pour effectuer cela.

    J'ai un formulaire comme ceci:

    Champs text ---------------
    Champs text ----------------
    bouton radio O option1 0 option2
    Select box Liste déroulante
    Check box []check


    Et donc j'aimerai vraiment remplir ces champs automatiquements.

    mais je trouve pas de tutorial pour HTTPClient

    Ou alors je passe totalement a coté.

    Sur l'exemple du lien qu'alexandre m'a donné, je comprend as le but


  8. #8
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    Comment est envoyé un formulaire à ton avis ?

    il est envoyé par une requete qui comprend chacun des elements de ta page

    exemple pour un formulaire utilisant nom, prenom, adresse

    un_certain_server:8080/une_servlet?nom=toto&prenom=bidule&adresse=t[/url]

    quand tu construit la requete que tu veux faire executé sur le serveur, ca doit donc comprendre ces params

    et c est pas http client mais URLConnection ..
    http://www.science.uva.nl/ict/ossdoc...ngWriting.html

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    325
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 325
    Points : 228
    Points
    228
    Par défaut
    Regarde du coté de HttpUnit.
    J'avais essayé ça il y a quelques temps pour interroger des moteurs de recherche. D'après mes souvenirs il y a quand même une intervention humaine à prevoir.
    Enfin, on peut remplir un formulaire et le valider grâce à un programme, c'est ce que tu veux faire.

  10. #10
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    "et le valider grâce à un programme,"

    faudra que tu m'expliques ...

  11. #11
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Comme un exemple vaut mieux qu'un long discours:
    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
    url = new URL("http://www.tonsite.com/lapage.php");
    URLConnection conn = url.openConnection();
    conn.setDoOutput(true);
    conn.setUseCaches(false);
    conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
    conn.connect();
    PrintWriter writer = new PrintWriter(conn.getOutputStream());
    writer.println("var1=value1&var2=value2&var3=value3");
    writer.close();
     
     
    //Si tu testes ça, dis-moi si ce qui suit est nécessaire :)
    Scanner sc = new Scanner(conn.getInputStream());
    sc.next(); //comme on demande le début de la page, elle est exécutée sur le serveur
    sc.close();
    Il faut encore rajouter la gestion des exceptions...

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 25
    Points : 14
    Points
    14
    Par défaut
    Et bien ça ne marche toujours pas,

    ni avec ton code Rom

    j'vais abandonne rça sera mieu

  13. #13
    Membre éclairé
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Points : 756
    Points
    756
    Par défaut
    Bah non faut pas abandonner, faut chercher une solution

    Ici on peut t'aider mais faut que tu sois motivé sinon laisse tomber l'informatique si tu jettes l'éponge si vite
    "Le calendrier, c'est la bureaucratie du temps." Quino

  14. #14
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par biglittlekiss
    Et bien ça ne marche toujours pas,

    ni avec ton code Rom

    j'vais abandonne rça sera mieu
    Tu as mis quoi comme url, tu as mis quoi dans à la place de var1 var2 var3... et value1 value2 value3?

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 25
    Points : 14
    Points
    14
    Par défaut
    l'url j'ia mis celle de mon serveur local avec mon site local

    les options a passé sont ceux la:

    company=&title=&first_name=dqdq&last_name=dqdq&middle_name=&address_1=dqdq&address_2=&city=dqdq&zip=rrrrr&country=LUX&phone_1=dqd&phone_2=&fax=&email=ddddd@ddd.fr&agreed=1&remember=yes&Itemid=1&gid=0&id=0&user_id=0&option=com_virtuemart&useractivation=0&func=shopperadd&page=checkout.index

    mais ça marche pas

  16. #16
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par biglittlekiss
    l'url j'ia mis celle de mon serveur local avec mon site local

    les options a passé sont ceux la:

    company=&title=&first_name=dqdq&last_name=dqdq&middle_name=&address_1=dqdq&address_2=&city=dqdq&zip=rrrrr&country=LUX&phone_1=dqd&phone_2=&fax=&email=ddddd@ddd.fr&agreed=1&remember=yes&Itemid=1&gid=0&id=0&user_id=0&option=com_virtuemart&useractivation=0&func=shopperadd&page=checkout.index

    mais ça marche pas
    Qu'est-ce qui ne marche pas? Tu as une exception, tu as quoi?

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 25
    Points : 14
    Points
    14
    Par défaut
    Le code que 'jai fait ets la :

    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
     
    public static void main(String args[]) throws Exception{	
    	URL url = new URL("http://localhost/monsite/index.php?option=com_virtuemart&page=shop.registration&Itemid=1");
    	URLConnection conn = url.openConnection();
    	conn.setDoOutput(true);
    	conn.setUseCaches(false);
    	conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
    	conn.connect();
    	PrintWriter writer = new PrintWriter(conn.getOutputStream());
    	writer.println("http://localhost/monsite/index.php?option=com_virtuemart&page=shop.registration&Itemid=1&company=&title=&first_name=chirac&last_name=jaques&middle_name=&address_1=dqdq&address_2=&city=dqdq&zip=rrrrr&country=LUX&phone_1=dqd&phone_2=&fax=&email=ddddd@ddd.fr&agreed=1&remember=yes&Itemid=1&gid=0&id=0&user_id=0&option=com_virtuemart&useractivation=0&func=shopperadd&page=checkout.index");
    	writer.flush();
    	writer.close();
     
     
    //	Si tu testes ça, dis-moi si ce qui suit est nécessaire :)
    	Scanner sc = new Scanner(conn.getInputStream());
    	sc.next(); //comme on demande le début de la page, elle est exécutée sur le serveur
    	sc.close();
    }
    J'ai pas d'erreur sur le code, mais le nouvel utilisateur que je veux enrgeistrer avec cette url, n'ets pas en base de donnée.

    Donc je conclu que le code ne marche pas

  18. #18
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par biglittlekiss
    Donc je conclu que le code ne marche pas
    C'est normal que ça ne marche pas, tu as remis l'url dans les paramètres post, et tu as mis également les mêmes paramètres dans l'url en get...

    Fais comme ceci:
    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
     
    public static void main(String args[]) throws Exception{	
    	URL url = new URL("http://localhost/monsite/index.php");
    	URLConnection conn = url.openConnection();
    	conn.setDoOutput(true);
    	conn.setUseCaches(false);
    	conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
    	conn.connect();
    	PrintWriter writer = new PrintWriter(conn.getOutputStream());
    writeriter.println("option=com_virtuemart&page=shop.registration&Itemid=1&company=&title=&first_name=chirac&last_name=jaques&middle_name=&address_1=dqdq&address_2=&city=dqdq&zip=rrrrr&country=LUX&phone_1=dqd&phone_2=&fax=&email=ddddd@ddd.fr&agreed=1&remember=yes&Itemid=1&gid=0&id=0&user_id=0&option=com_virtuemart&useractivation=0&func=shopperadd&page=checkout.index");
    	writer.flush();
    	writer.close();
     
     
    //	Si tu testes ça, dis-moi si ce qui suit est nécessaire :)
    	Scanner sc = new Scanner(conn.getInputStream());
    	sc.next(); //comme on demande le début de la page, elle est exécutée sur le serveur
    	sc.close();
    }

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 25
    Points : 14
    Points
    14
    Par défaut
    ça ne marche pas non plus.

    car l'url qui donne accès au formulaire d'enregistrement d'un nouvel user c'est:

    http://192.168.1.2/monsite/index.php...ation&Itemid=1

    lorque je regarde avec mon proxy ce qui est renvoyé dans le post c'est bien ça:

    company=&title=&first_name=dqdq&last_name=dqdq&middle_name=&address_1=dqdq&address_2=&city=dqdq&zip=rrrrr&country=LUX&phone_1=dqd&phone_2=&fax=&email=ddddd@ddd.fr&agreed=1&remember=yes&Itemid=1&gid=0&id=0&user_id=0&option=com_virtuemart&useractivation=0&func=shopperadd&page=checkout.index


    Et donc je sais pas ce qui peut clocher

  20. #20
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Dans le code que je t'ai donné, fais une boucle sur le scanner et récupère toutes les lignes, et imprime-les, tu auras le code source de la page html retournée, ça te permettra de trouver ton erreur sûrement

Discussions similaires

  1. [MySQL] Créer un robot qui récupère des documents sur le web
    Par NynaByla dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 13/11/2012, 15h58
  2. Développer un robot qui remplit des formulaires
    Par rebaj83 dans le forum Langage
    Réponses: 9
    Dernier message: 18/12/2006, 13h41
  3. Réponses: 2
    Dernier message: 11/12/2006, 15h06
  4. Réponses: 1
    Dernier message: 11/10/2006, 14h24
  5. Réponses: 3
    Dernier message: 15/09/2004, 15h01

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