Code source pour s'authentifier sur Geocaching [RESOLU]

Les logiciels (ou applications smartphones) qui nous facilitent la vie
Avatar du membre
SpaceEye
regular
regular
Profil GC
Membre: : Basic
GPS : Garmin Oregon 450
Messages : 249
Enregistré le : mer. 26 déc. 2012 19:54

Re: Code source pour s'authentifier sur Geocaching

mar. 30 juin 2015 22:43

Merci Surfoo, je vais essayer de coder ça..
Avatar du membre
SpaceEye
regular
regular
Profil GC
Membre: : Basic
GPS : Garmin Oregon 450
Messages : 249
Enregistré le : mer. 26 déc. 2012 19:54

Re: Code source pour s'authentifier sur Geocaching

jeu. 2 juil. 2015 13:04

Gloire à Surfoo (et Driquet) pour leur code qui m'a permis (enfin) de générer mon code C#.
Voici un exemple fonctionnel de code qui permet de s'authentifier sur GC.com, récupérer le cookie d'authentification pour le réutiliser lors de l'interrogation d'une cache.
Enjoy. Merci à tous !

Code : Tout sélectionner

private void button1_Click(object sender, EventArgs e)
        {
            String username = "LOGIN A RENSEIGNER";
            String password = "MDP A RENSEIGNER";

            /* Penser à inclure les dépendances suivantes : 
             * using System.Net;
             * using System.IO;
             * using System.Web;
             * 
             * et les références :
             * System.Web
             * System.Net
             * 
             * Définir les variables suivantes :
             * String username = "METTRE VOTRE LOGIN ICI";
             * String password = "METTRE VOTRE MDP EN CLAIR ICI";
             */

            // Notre container de cookies
            CookieContainer cookieJar = new CookieContainer();
            
            // Authentification sur GC.com
            // ***************************
            // Préparation des données du POST
            Dictionary<String, String> post_values = new Dictionary<String, String>();
            post_values.Add("__EVENTTARGET", "");
            post_values.Add("__EVENTARGUMENT", "");
            post_values.Add("ctl00$tbUsername", username);
            post_values.Add("ctl00$tbPassword", password);
            post_values.Add("ctl00$cbRememberMe", "On");
            post_values.Add("ctl00$btnSignIn", "Login");
            
            // Encodage des données du POST
            String post_string = "";
            foreach (KeyValuePair<String, String> post_value in post_values)
            {
                post_string += post_value.Key + "=" + HttpUtility.UrlEncode(post_value.Value) + "&";
            }
            post_string = post_string.TrimEnd('&');

            // Création de la requête pour s'authentifier
            string VOID_URL = "https://www.geocaching.com/login/default.aspx";
            HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(VOID_URL);
            objRequest.Method = "POST";
            objRequest.ContentLength = post_string.Length;
            objRequest.ContentType = "application/x-www-form-urlencoded";
            objRequest.Proxy = GetProxy(); // Créer votre proxy ici si besoin, sinon mettre NULL
            objRequest.CookieContainer = cookieJar;

            // on envoit les POST data dans un stream (écriture)
            StreamWriter myWriter = null;
            myWriter = new StreamWriter(objRequest.GetRequestStream());
            myWriter.Write(post_string);
            myWriter.Close();

            // lecture du stream de réponse et conversion en chaine
            HttpWebResponse objResponse = (HttpWebResponse)objRequest.GetResponse();
            String post_response;
            using (StreamReader responseStream = new StreamReader(objResponse.GetResponseStream()))
            {
                post_response = responseStream.ReadToEnd();
                responseStream.Close();
            }
            
            // Pour le debug, interrogation du nombre de cookies retournés et trace de cette valeur
            // peut être supprimé
            int cookieCount = cookieJar.Count;
            Log(cookieCount.ToString());

            // Récupération d'une page de geocache
            // ***********************************
            string url = "http://www.geocaching.com/geocache/GC5VFCJ_georando-de-la-plaine-13";
            objRequest = (HttpWebRequest)WebRequest.Create(url);
            objRequest.Proxy = GetProxy(); // Là encore, on peut virer le proxy si non utilisé (NULL)
            objRequest.CookieContainer = cookieJar; // surtout récupérer le container de cookie qui est maintenant renseigné avec le cookie d'authentification
            objResponse = (HttpWebResponse)objRequest.GetResponse();
            String response;
            using (StreamReader responseStream = new StreamReader(objResponse.GetResponseStream()))
            {
                response = responseStream.ReadToEnd();
                responseStream.Close();
            }
            // On trace le résultat
            // Peut être supprimé
            LogWeb(response);
        }
    }

Retourner vers « Gestion des caches »

Aller à ...

Annuaire

annuaire geocaching

Éditeur HTML

editeur HTML

 

Au total il y a 4 utilisateurs en ligne : 2 enregistrés, 0 invisible et 2 invités
Membres : Bing [Bot], Google [Bot]
Le record du nombre d’utilisateurs en ligne est de 607, le lun. 20 janv. 2020 20:53
94559 messages
7391 sujets
5306 membres
Le membre enregistré le plus récent est Axelinya.
Pas d’anniversaire à fêter aujourd’hui