[R] Se connecter à un site/forum afin de récupérer le code source

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
franco
Niveau 7
Niveau 7
Messages : 343
Enregistré le : lun. 03 oct. 2011 22:37
Localisation : Liévin
Status : Hors ligne

[R] Se connecter à un site/forum afin de récupérer le code source  

#1

Message par franco »

Bonjour.

Pour un de mes outils (lecteur primitif de fliux RSS), j'ai besoin d'être connecté à un forum afin de récupérer les flux. Et donc du code source.
Pour lister les flux sans connexion, aucun souci.


J'ai donc fait ceci ( grâce à ce LIEN) :
#include <IE.au3>

$oIE = _IECreate ("https://secure.commentcamarche.net/www.commentcamarche.net/profile/login?txtUrl=%2Findex.php3")
$identif = _IEFormGetObjByName ($oIE, "logonForm")
$login = _IEFormElementGetObjByName ($identif , "username")
$mdp = _IEFormElementGetObjByName ($identif , "password")
_IEFormElementSetValue ($login, "little boy62")   ; <= à remplir
_IEFormElementSetValue ($mdp, "motdepassebidon")    ; <= à remplir
_IEFormSubmit ($identif, 1)

msgbox(0,"", $oIE.locationurl)
Mais les champs ne sont pas renseignés.

C'est la première fois que j'essaye de créer un script de connexion, donc si vous pouvez m'aiguiller, ça sera sympa. :mrgreen:

Merci et bonne soirée à tous.
Modifié en dernier par franco le jeu. 23 juin 2016 10:08, modifié 1 fois.
L'entraide, c'est mon dada ;)
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Se connecter à un site/forum afin de récupérer le code source

#2

Message par mikell »

Tu t'es pas foulé, t'aurais pu chercher un peu... :mrgreen:

Code : Tout sélectionner

#include <IE.au3>
     
$oIE = _IECreate ("https://secure.commentcamarche.net/www.commentcamarche.net/profile/login?txtUrl=%2Findex.php3")
$login = _IEGetObjByName ($oIE, "login")
$mdp = _IEGetObjByName ($oIE , "pass")
$btn = _IEGetObjByName ($oIE , "log_in")
_IEFormElementSetValue ($login, "little boy62")  
_IEFormElementSetValue ($mdp, "motdepassebidon")  
_IEAction($btn, "click")
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
franco
Niveau 7
Niveau 7
Messages : 343
Enregistré le : lun. 03 oct. 2011 22:37
Localisation : Liévin
Status : Hors ligne

Re: [..] Se connecter à un site/forum afin de récupérer le code source

#3

Message par franco »

Salut.

Merci à toi...

Mais figure toi que j'ai cherché... C'est la première fois que je m'attèle avec les fonctions d'IE... :P


Et vu ton code, j'ai peut-être trouvé des pistes.

Surtout avec ces deux lignes :

Code : Tout sélectionner

$login = _IEGetObjByName ($oIE, "login")
$btn = _IEGetObjByName ($oIE , "log_in")
On les trouves en "examinant les éléments" ou en visionnant le code source ?


Si oui, je m'en souviendrais. ;)

====

Maintenant, j'essaye de récupérer le code source...
Et tu vas surement me dire que j'aurais pu chercher, mais je coince...
#include <IE.au3>

Local $oIE = _IECreate("http://www.commentcamarche.net/forum/?log_out", 1, 1, 1)

_IENavigate($oIE,"https://secure.commentcamarche.net/www.commentcamarche.net/profile/login?txtUrl=%2Findex.php3", 1)
$login = _IEGetObjByName ($oIE, "login")
$mdp = _IEGetObjByName ($oIE , "pass")
$btn = _IEGetObjByName ($oIE , "log_in")
_IEFormElementSetValue ($login, "little boy62")
_IEFormElementSetValue ($mdp, "XXXX")
_IEAction($btn, "click")
sleep(2000)

_IENavigate($oIE,"http://www.commentcamarche.net/forum/msgs/?fmt=rss", 1)

MsgBox(0,"","suite")

$sWinTitle = "Forum d'assistance informatique - Internet Explorer"
WinActivate($sWinTitle)
$hWin = WinGetHandle($sWinTitle)
$yooo = _IEAttach($hWin, "hwnd")
$sHTML = _IEBodyReadHTML($yooo)
MsgBox(64, "HTML", $sHTML)
Le msgbox qui doit afficher "suite" n'est pas affiché.

Je pense donc que, à un moment donné, je dois "supprimer" l'objet IE concerné sans quitter internet explorer.
Or _IEQuit supprime l'objet ET ferme également internet explorer.


Une idée sur le souci ?
Je souhaite des pistes, pas de réponse : faut que j'apprenne de mes erreurs, et le plus souvent : vous êtes de bons conseils. ;)


Merci à tous.

Bon, j'ai un mot de passe à modifier.

lol


++
L'entraide, c'est mon dada ;)
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Se connecter à un site/forum afin de récupérer le code source

#4

Message par orax »

On les trouves en "examinant les éléments" ou en visionnant le code source ?
Il y a l'outil Inspecteur Gadget (bien sûr, le nom change selon le navigateur : Inspecter l'élément, Sélectionner l'élément...). Généralement, c'est la touche F12 pour ouvrir les outils de développement.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1037
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Se connecter à un site/forum afin de récupérer le code source

#5

Message par walkson »

Bonsoir,
Il y a aussi le clic droit "afficher la source"

Code : Tout sélectionner

#include <IE.au3>
#include <Inet.au3>

Local $oIE = _IECreate()
_IELoadWait($oIE)
_IENavigate($oIE,"http://www.commentcamarche.net/forum/msgs/?fmt=rss", 0)
MsgBox(0,"","suite")
$sHTML = _IEBodyReadHTML($oIE)
MsgBox(64, "loupé !", $sHTML) ;il n'y a pas de "Body" dans la page <?xml version="1.0" encoding="UTF-8" ?><rss version="2.0" xmlns:dc="http://purl....
$sHTML = _INetGetSource("http://www.commentcamarche.net/forum/msgs/?fmt=rss")
MsgBox(64, "gagné !", $sHTML)
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Se connecter à un site/forum afin de récupérer le code source

#6

Message par orax »

Si tu vas à cette URL avec le navigateur, ça te connecte au site (j'ai testé). Donc peut-être que ce code pourrait marcher.
InetRead(StringFormat("https://secure.commentcamarche.net/www.commentcamarche.net/profile/login?log_in=Connexion&login=%s&pass=%s", "franco", "de port"))
$sHtml = BinaryToString(InetRead("http://www.commentcamarche.net/forum/msgs/?fmt=rss"))
Tu auras peut-être besoin de remplacer certains caractères spéciaux dans le mot de passe. Par exemple @ serait à remplacer par %40.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
franco
Niveau 7
Niveau 7
Messages : 343
Enregistré le : lun. 03 oct. 2011 22:37
Localisation : Liévin
Status : Hors ligne

Re: [..] Se connecter à un site/forum afin de récupérer le code source

#7

Message par franco »

Salut.


:shock: :shock: :shock:

Merci à tous, c'est résolu...

Grâce à la réponse d'Orax : je ne savais pas qu'on pouvait faire cela. :D


En tout cas, merci à tous, ça m'a appris à débuter avec les fonctions d'IE.


@++
L'entraide, c'est mon dada ;)
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [R] Se connecter à un site/forum afin de récupérer le code source

#8

Message par orax »

Avec les outils de développement (F12) du navigateur, il y a un onglet Réseau. Avec ça on peut voir ce qui est envoyé au serveur lors de l'identification. C'est donc avec cet outil que j'ai récupéré les données à envoyer.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
franco
Niveau 7
Niveau 7
Messages : 343
Enregistré le : lun. 03 oct. 2011 22:37
Localisation : Liévin
Status : Hors ligne

Re: [R] Se connecter à un site/forum afin de récupérer le code source

#9

Message par franco »

Alors grand merci à toi :D

Je n'utilise jamais l'onglet réseau, ça va me servir. :)

merci
L'entraide, c'est mon dada ;)
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [R] Se connecter à un site/forum afin de récupérer le code source

#10

Message par orax »

Concernant mon code dans le message #6, pour ce site ça fonctionne, mais ça ne devrait pas fonctionner sur tous les sites. Donc même si ça marche, je préfère ajouter une autre méthode.
Sur le site, quand on clique sur Connexion pour envoyer les identifiants, le navigateur les envoie avec la méthode POST (et non GET comme le fait mon script du message #6).
Avec le script ci-dessous, c'est avec la méthode POST qu'on envoie les données.
Local $login = "MOI"
Local $pass = "SECRET"

Local $oWinHttpReq = ObjCreate("WinHttp.WinHttpRequest.5.1")

$oWinHttpReq.Open("POST", "https://secure.commentcamarche.net/www.commentcamarche.net/profile/login", False)
$oWinHttpReq.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
$oWinHttpReq.Send("redirUrl=https%3A%2F%2Fsecure.commentcamarche.net%2Fwww.commentcamarche.net%2Fprofile%2Flogin%3Fr%3Dhttp%3A%2F%2Fwww.commentcamarche.net%252Findex.php3%253Flogin%3D1&login=" & $login & "&pass=" & $pass & "&log_in=Connexion")

;----------------
; code facultatif
; on vérifie que ça marche
If StringInStr($oWinHttpReq.ResponseText, $login) Then ConsoleWrite($login & " est bien trouvé dans la page [1]." & @CRLF)
$oWinHttpReq.Open("GET", "http://www.commentcamarche.net/")
$oWinHttpReq.Send()
If StringInStr($oWinHttpReq.ResponseText, $login) Then ConsoleWrite($login & " est bien trouvé dans la page [2]." & @CRLF)
;----------------

$oWinHttpReq.Open("GET", "http://www.commentcamarche.net/forum/msgs/?fmt=rss")
$oWinHttpReq.Send()
$sHtml = $oWinHttpReq.ResponseText
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Répondre