Page 1 sur 1

[..] Proxy sur _InetGetSource ou WinHTTP

Posté : mer. 07 juil. 2010 22:48
par Slym
Bonjour,

Vous ne me connaissez pas mais vous connaissez peut-être déjà mon logiciel que je développe fièrement, entièrement en AutoIT : LinuxLive USB Creator

Je poste sur ce forum en espérant trouver quelques réponses à mes nombreuses questions car même si je code beaucoup en AutoIT je ne suis qu'un amateur.

Ces derniers temps je cherche à voir comment je pourrais rendre LiLi USB Creator complétement compatible avec l'usage d'un proxy. En effet, 90% du logiciel marche déjà avec un proxy mais je ne sais pas comment faire pour les 10 derniers pourcent.

Ces 10 derniers pourcent correspondent en fait à l'utilisation de _InetGetSource et de WinHTTP.au3.

[*]InetgetSource permet à LiLi de vérifier s'il existe une mise à jour (en récupérant le résultat d'un script php)

[*]WinHTTP permet quand à lui d'envoyer des rapports de plantages en méthode POST (trop gros pour un GET) à une page PHP.

Le but étant de pouvoir utiliser les mêmes modes de proxy que ceux fournis dans AutoIT à savoir : pas de proxy, même proxy que IE ou proxy rentré manuellement.

Si vous avez des exemples ou des idées je suis preneur.

Je suis aussi intéressé par des gens compétents qui souhaiteraient rejoindre le projet.

LiLi USB Creator est un projet open-source et les sources sont fournies/compilables facilement dans chaque version.

Bonne journée à tous,

Thibaut

Re: Proxy sur _InetGetSource ou WinHTTP

Posté : jeu. 08 juil. 2010 00:32
par Tlem

Re: Proxy sur _InetGetSource ou WinHTTP

Posté : jeu. 08 juil. 2010 13:12
par timmalos
Salut à toi:

Pour essayer de te repondre, tu connais bien sur

Code : Tout sélectionner

HttpSetProxy ( mode [, "proxy:port" [, "username" [, "password"]]] )
 
_INetGetSource() est a proscrire, utilise plutot InetRead, qui devrait gerer le proxy

Concernant le Post, je ne connais pas WinHTTP, j'utilise par contre le code suivant, que tu peux tester et qui résoudra peut etre ton problème:

Code : Tout sélectionner

Func _ask_servor_id($login, $PassWord)
    Local $deepmemo_host = "malossane.fr"
    Local $add_path = "/membres-connexion.html" ; ICI tu mets ton php, malgré le .html c'est bien une page php qui est appelée (redirection)
    Local $data = "nom_utilisateur=" & ($login) & "&mot_de_passe=" & ($PassWord) & "&connexion_auto=on&submit=Connectez-moi+!&uniqid=formulaire_connexion"
    Local $socket = _HTTPConnect($deepmemo_host)
    HttpSetUserAgent("autoit")
    _HTTPPost($deepmemo_host, $add_path, $socket, $data)
    $response = _HTTPRead($socket, 0)
    Return $response
EndFunc   ;==>_ask_servor_id
Les fonctions _HTTPConnect, _HTTPPost, et _HTTPRead sont disponibles ici : http://malossane.fr/usb-online-sources.html

Y'a même une fonction plus complexe _HTTPPost_files pour envoyer par POST un fichier complet de log ou autre.
Si le proxy défini par HttpSetProxy n'est pas utilisé, il faudra le rajouter dans notre requete POST, mais la je retourne au travail je regarderai ce soir, faut aller dans les definitions du HTTP 1.1 voir comment ca marche.

Re: [..] Proxy sur _InetGetSource ou WinHTTP

Posté : ven. 09 juil. 2010 15:58
par Slym
Merci beaucoup pour les réponses.

Je peux effectivement utiliser InetGet et ensuite lire le fichier temporaires pour avoir la réponse. Je sais pas pourquoi mais je pensais qu'InetGet n'était pas capable de récupérer un page Web mais seulement un vrai fichier :mrgreen:

Tes fonctions HTTP m'ont l'air vraiment bien (et plus facile à utiliser que celles que j'utilisent moi !). Par contre je ne suis pas sûr d'avoir compris. Pour se connecter, elles utilisent les mêmes paramètres que ceux du logiciel (ceux mis avec HTTPSetProxy) ou pas ?

Pas mal la Malossane USB Suite au passage !

Tlem > héhé, chui une star du web :lol:

Re: [..] Proxy sur _InetGetSource ou WinHTTP

Posté : ven. 09 juil. 2010 17:25
par timmalos
Je comprends pas j'avais fait une tres longue réponse hier soir je croyais avoir poster la réponse hier soir mais apparemment c'est pas passé, donc je disais concernant WinHttp (mais je vais le faire plus concis, ca m'a saoulé), avec tes fonctions ca doit passer en rajoutant
$oHTTP.SetRequestHeader("Proxy-Connection", "Keep-Alive")

Code : Tout sélectionner

$oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
$oHTTP.Open("POST", 'http://votre_site.fr')
$oHTTP.SetRequestHeader("Referer", "http://malossane.fr")
$oHTTP.SetRequestHeader("Proxy-Connection", "Keep-alive")
$oHTTP.SetRequestHeader("Accept-Language", "fr")
 
Je pense que ca devrait suffire.

Avec mes fonctions, il faut rajouter la ligne suivante dans la fonction _HTTPPost et _HTTPGet et _HTTPPostFiles (si tu a s besoin des 3):

Code : Tout sélectionner

$command &= "Proxy-Connection: ""Keep-Alive"&@CRLF
 
Normalement, ce bout devrait suffire à utiliser le Proxy défini par défaut.
J'ai utilisé un analyseur de traffic, et quand je coche "Utiliser Proxy dans IE", c'est cette ligne la qui est rajoutée dans le header des requetes HTTP 1.1, donc je présume que ca marchera , mais je n'ai pas tester n'ayant pas de proxy à disposition cette semaine.


Concernant InetGet, vous pouvez comme je l'ai ecris, si vous utilisez la dernière version Autoit (ce que je vous conseille), utiliser InetRead qui fait exactement la même chose que votre ancienne fonction,(Donne directement la source sans passer par un fichier temporaire) sauf qu'elle est inclue dans Autoit3.exe et gère de base de Proxy mis avec la fonction HTTPSetProxy. Et oui Inetget s'utilise sur n'importe quoi :p

Re: [..] Proxy sur _InetGetSource ou WinHTTP

Posté : ven. 09 juil. 2010 17:54
par Slym
C 'est cool j'apprends pleins de choses !

Je n'avais jamais fait gaffe que InetRead renvoyait le résultat, comme c'était du charabia en plus ...

Pour les autres fonctions il va falloir que je creuse un peu plus la question car mon logiciel implémente les 3 modes de HttpSetProxy or il y a un mode où l'utilisateur rentre le proxy manuellement. Il y a donc forcément d'autres paramètres à passer.