Page 1 sur 1
[R] Remplire InputFile d'un formulaire avec IE invisible
Posté : lun. 26 mai 2014 23:51
par yohan8
Bonjour,
J'essaye d'envoyer des images via une inputfile sur un formulaire avec une IE invisible, donc de manière silencieuse.
Ce sujet a déjà été de nombreuses fois évoqué avec des réponses variées mais sans satisfaire les contraintes de mon script.
http://autoitscript.fr/forum/viewtopic.php?f=3&t=9498 Méthode rustique appelant ControlSend
http://autoitscript.fr/forum/viewtopic. ... 28&p=66322 Idem
http://autoitscript.fr/forum/viewtopic. ... 80&p=86692 Idem
http://autoitscript.fr/forum/viewtopic.php?f=3&t=9465 _IEPropertySet non fonctionelle
L'élément qui me permet de penser qu'il est possible de le faire sans ouvrir la boite de dialogue est que dans IE, après avoir sélectionner le chemin de l'image, celui-ci se remplis dans un input-text "protégé". Il est possible d'insérer le curseur mais sans pouvoir ajouter ni modifier le texte.

. .

. .
J'aurais espérer qu'il serait possible de forcer l'inscription du chemin de mes images silencieusement dans "l'InputText" de l'InputFile sans passer par la boite de dialogue.
Re: [..] Remplire InputFile Leboncoin avec IE invisible
Posté : mar. 27 mai 2014 04:03
par ZDS
Bonjour,
Je me permets de te répondre, mais tu risques de ne pas aimer : ce que tu demandes, sans être réellement immoral, est illégal du point de vue des Conditions Générales d'Utilisation du site en question. Juste un extrait :
Règlement du site a écrit :Tout Utilisateur [...] du Service XXXXXXXXX s'engagent notamment à ne pas [...] extraire, à des fins commerciales ou non, tout ou partie des informations [... et ...] utiliser un robot, notamment d'exploration (spider), une application de recherche ou récupération de sites Internet ou tout autre moyen permettant de récupérer ou d'indexer tout ou partie du contenu du Site Internet [...] excepté en cas d'autorisation expresse et préalable de XXX France.
Ton script final permettant d'ajouter du contenu automatiquement sur le site, il est encore plus probable que son principe ne respecte pas les conditions en question.
Voici le lien vers les informations légales :
Informations légales, ce que je t'ai extrait ci-dessus est tiré de l'article 6 sur la propriété intellectuelle.
Etant donné que le forum AutoIt français refuse d'apporter son soutien à la création de bots, il est possible que mes dires soient rejoint par quelqu'un de plus haut placé ayant autorité sur la suite à donner à ta requête.
A bientôt !
Re: [..] Remplire InputFile Leboncoin avec IE invisible
Posté : mar. 27 mai 2014 08:26
par jguinch
ZDS a tout dit.
Sujet verrouillé
Re: [V] Remplire InputFile Leboncoin avec IE invisible
Posté : mar. 27 mai 2014 22:08
par Tlem
Si mes souvenirs sont exacts, j'avais déjà signalé que le fait d'automatiser la saisie par un soft entrait en contradiction avec les règles de ce site ou de tout autre site fonctionnant de la même manière. ^^
Envoyé depuis mon appareil mobile.
Re: [V] Remplire InputFile Leboncoin avec IE invisible
Posté : mar. 27 mai 2014 22:23
par mikell
Tes souvenirs sont exacts
Mais il n'est jamais inutile de rappeler les bases...
[..] éclaircissement sur _IEPropertyGet avec une Inputfile
Posté : mer. 28 mai 2014 22:20
par yohan8
Bonjour,
Je suis en train d'étudier le comportement d'une Inputfile avec Autoit. Pour ce faire j'essaye de récupérer des infos et son contenu (le chemin du fichier) avec la fonction _IEPropertyGet en ciblant l'inputfile.
Voici les comportement que j'ai pu décerner et qui me paraissent obscures.
En chargeant un fichier comme l'image ci-dessous et avec l'argument "outertext", "innertext" ou "statustext" j'ai une réponse de 0 sans @error.
Avec l'argument "isdisabled" j'ai une réponse False soit que l'utilisateur ne peut interagir avec l'objet. (Retrieves the value indicating whether the user can interact with the object). Que veulent ils dire par interagir ?
Avec l'argument "silent" j'ai une réponse de 0. Je ne sais comment interpréter cette réponse sachant que la doc précise : "Retrieves a value that indicates whether the browser can show dialog boxes.". Traduire par "le naviguateur ne peut montrer les boites de dialogue" serait faux car j'en utilise une pour chercher mon fichier sur mon PC.
En espérant obtenir quelques éclaircissement de votre part
Code : Tout sélectionner
#include <IE.au3>
$oIE = _IE_Example("form")
Local $oForm = _IEFormGetObjByName($oIE, "ExampleForm")
Local $oTextArea = _IEFormElementGetObjByName($oForm, "fileExample")
MsgBox(262144,'','pause') ;pour remplir le champ de l'Inputfile (C:\Users\Yohan...)
MsgBox(0,@error,_IEPropertyGet($oTextArea,"statustext"))
_IEQuit($oIE)
Re: [..] Remplire InputFile d'un formulaire avec IE invisibl
Posté : jeu. 29 mai 2014 10:56
par Tlem
Ré-ouverture du sujet, car les règles cités plus haut ne concerne que la collecte d'information. Hors en la circonstance, yohan8 ne fait pas de la collecte, mais du remplissage !!!
Après avoir relus la totalité du règlement du site en question, il n'y est indiqué nulle part que la saisie automatisée n'est pas autorisée. La bien-séance voudrait que yohan8 fasse une demande en bonne et due forme, mais comme il n'y a rien de contrevenant, libre à lui dans l'état actuel des règles du dit site, de remplir les formulaires avec ce qu'il veux.
Même si l'utilisation d'un bot est souvent associé à un acte de tricherie ou de malveillance, dans ce qui est décrit par yohan8, je ne vois rien de mal intentionné. Et comme le règlement du site en question n'interdit pas explicitement la saisie assistée/automatisée, je ne vois aucune raison de laisser ce sujet verrouillé.
J'ai juste ré-éditer le titre et les messages afin de ne pas mettre en avant le nom du site en question et j'ai fusionné avec le nouveau sujet de yohan8.
Le lien vers le règlement du site est conservé pour consultation.
Re: [..] Remplire InputFile d'un formulaire avec IE invisibl
Posté : jeu. 29 mai 2014 14:57
par jguinch
En ce qui concerne le remplissage automatique sans passer par la boîte de dialogue, ça a pas l'air simple (je sais pas si c'est faisable d'ailleurs).
Pour la récupération, c'est un peu pareil : les champs de type "input file" semblent être verrouillés en lecture (
voir ici). Par contre là, c'est faisable.
J'ai viens de faire quelques tests, et je ne sais pas trop quoi penser à part que c'est vraiment n'importe quoi...
Dans le code ci-dessous, j'utilise l'automatisation de la boite de dialogue pour entrer le nom du fichier, puis je récupère sa valeur de deux manière différentes
► Afficher le texte
Code : Tout sélectionner
$sPicture = "C:\Windows\Web\Wallpaper\Architecture\img13.jpg"
#include <IE.au3>
$oIE = _IECreate("http://www.hostingpics.net/")
$hIE = _IEPropertyGet($oIE, "hwnd")
Local $oForm = _IEFormGetObjByName($oIE, "upload_form")
Local $oT = _IEFormElementGetObjByName($oForm, "photo1")
_IEAction($oT, "focus")
Send("{SPACE}")
$hwnd = WinWait("Choisir un fichier à télécharger")
ControlSetText($hwnd, "", "Edit1", $sPicture)
ControlClick($hwnd, "", "Ou&vrir")
; récupération de la valeur (solution 1)
Local $oT = _IEFormElementGetObjByName($oForm, "photo1") ; bizarre, on est obligé de le refaire, sinon on obtient 0 (????)
$value = $oT.value
ConsoleWrite("avec .value : " & $value & @CRLF)
; récupération de la valeur (solution 2)
_IEAction($oT, "selectall")
WinActivate($hIE)
Send("^c")
$value = ClipGet()
ConsoleWrite("avec selectall + cliput : " & $value & @CRLF)
;_IEQuit($oIE)
La solution 1 me retourne
C:\fakepath\img13.jpg
La solution 2 me retourne
C:\Windows\Web\Wallpaper\Architecture\img13.jpg
Pour la solution 1, j'ai réussi à récupérer la valeur en ajoutant le site dans la zone de confiance et en mettant le paramètre
Include le chemin d'accès au répertoire local lors du téléchargement des fichiers sur un serveur[/b" sur Activé
Re: [..] Remplire InputFile d'un formulaire avec IE invisibl
Posté : lun. 22 juin 2015 19:31
par yohan8
Merci Tlem de ta bienveillance

Si mon script sera un jour opérationnel j'en ferrais la demande au site en question tout en laissant le code open source.
Pour ce qui concerne le remplissage automatique sans passer par la boîte de dialogue j'en viens à la même conclusion que jguinch. Il n'est pas possible de le remplir automatiquement avec les fonctions de _IE.
Je pense qu'il est préférable de se pencher sur le fonctionnement du navigateur lors de l'ouverture de la fenêtre indésirable. Par exemple en cherchant s'il existe un plugin dans FF ou en passant par un naviguateur modifié. Il me semble avoir aperçu un navigateur web by autoit (isafari) mais impossible de mettre la mains sur une version stable..
Quoiqu'il en soit le sujet n'est pas résolu mais je laisse ce code d'une solution alternative. Merci jguinch
► Afficher le texte
Code : Tout sélectionner
#include <IE.au3>
$sPicture = "C:\Users\Yohan\Pictures\Pictures\images.jpg"
$oIE = _IE_Example("form")
_IEAction($oIE,"invisible")
Local $oForm = _IEFormGetObjByName($oIE, "ExampleForm")
Local $oInput = _IEFormElementGetObjByName($oForm, "fileExample")
_IEAction($oInput, "focus")
ControlSend("[CLASS:IEFrame]","","[CLASS:Internet Explorer_Server; INSTANCE:1]","{space}")
$hwnd = WinWait("Choisir un fichier à télécharger")
ControlSetText($hwnd, "", "Edit1", $sPicture)
ControlClick($hwnd, "", "Ou&vrir")
Sleep(500)
_IEAction($oIE,"visible")
EDIT : Il est possible de le faire avec _FF.au3 en utilisant _FFSetValue.