Page 1 sur 1

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

Posté : lun. 20 juin 2016 21:41
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.

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

Posté : lun. 20 juin 2016 22:06
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")

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

Posté : mer. 22 juin 2016 17:16
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


++

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

Posté : mer. 22 juin 2016 17:39
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.

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

Posté : jeu. 23 juin 2016 00:00
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)

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

Posté : jeu. 23 juin 2016 01:40
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.

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

Posté : jeu. 23 juin 2016 10:06
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.


@++

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

Posté : jeu. 23 juin 2016 10:29
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.

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

Posté : jeu. 23 juin 2016 14:38
par franco
Alors grand merci à toi :D

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

merci

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

Posté : sam. 02 juil. 2016 19:38
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