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

Code source pour s'authentifier sur Geocaching [RESOLU]

lun. 15 juin 2015 09:17

Bonjour,

Je galère vraiment pour obtenir une authentification fiable sur le site géocaching depuis MGM. J'ai codé ça en C# mais manifestement ça marchait de façon aléatoire et maintenant avec les dernières modifications du site cela ne marche plus du tout.
Est-ce qu'un des développeurs du site aurait un bout de code à partager pour effectuer une authentification sur geocaching et récupérer son token OAUTH. Pour les appels à l'API, pas de problème, c'est vraiment la récupération du token OAUTH qui me pose un problème.
Je suis preneur de (presque) tout langage : C, C++, C#, VB.Net, php, javascript, etc...

Merci d'avance, il en va de la survie des fonctions Live de MGM ;-)
Modifié en dernier par SpaceEye le jeu. 2 juil. 2015 13:05, modifié 1 fois.
Avatar du membre
driquet
regular
regular
Profil GC
Membre: : Premium
GPS : Garmin Oregon 450
Localisation : Lille
Messages : 316
Enregistré le : mar. 9 juil. 2013 09:22

Re: Code source pour s'authentifier sur Geocaching

lun. 15 juin 2015 09:44

Salut SpaceEye,

J'ai eu le même souci avec Python. Mon appli web (http://geoholmes.driquet.info/" onclick="window.open(this.href);return false;) avait du mal à communiquer avec l'API.
Ça se traduisait généralement par des erreurs chez le serveur. J'ai même mis un encart sur le site disant : "si ça marche pas, retentez votre coup, ça va finir par marcher".
Ces derniers temps, ça ne se produisait pas trop, donc je n'ai pas trop à me plaindre.

De toute façon, je compte ne plus utiliser l'API car je la trouve assez pauvre et trop contraignante.
Dans ton cas, tu n'as pas ce luxe. Les développeurs français qui utilisent l'API, ça doit se compter sur les doigts d'une main, je pense.
Tu devrais avoir plus de retour venant de la communauté anglophone, directement sur le forum officiel.
D'ailleurs, tu ne dois pas être le seul à avoir ce type de problème, j'imagine.

Ils utilisent un serveur OAUTH qui n'en fait qu'à sa tête, c'est assez dommage.
Pas sûr que ça puisse t'aider, mais voila où je touche l'API dans mon code : views.py et initialisation.
J'utilise la lib python OAUTH, pour laquelle peu/aucun bug n'a été remonté à ce sujet. Donc je suspecte que le problème vient de leur serveur OAUTH.
Avatar du membre
Surfoo
small-cacheur
small-cacheur
Profil GC
Membre: : Premium
Messages : 92
Enregistré le : jeu. 25 avr. 2013 21:26

Re: Code source pour s'authentifier sur Geocaching

lun. 15 juin 2015 11:11

Hello,

Il y avait des bugs d'identification quand des cookies existaient déjà. Ça a été remonté plusieurs fois, et corrigé en plusieurs fois par l'équipe (il y a un thread à ce sujet sur le forum ad hoc).
Un des derniers changements qui a cassé le fonctionnenement de ma librairie, c'est un changement de version de SSL. J'avais forcé un numéro de version il y a longtemps pour que ça fonctionne, et là j'ai du l'incrémenter pour que ça fonctionne (mais en retirant l'option ça fonctionne aussi).
Je ne sais pas trop d'ou viens ton problème, mais mon code fonctionne sans problème depuis un bout de temps maintenant. Je pense que si tu le lis ça devrait t'aider à régler le problème.

Le dépôt github : https://github.com/Surfoo/geocaching-api" onclick="window.open(this.href);return false;
Et le bout de code qui utilise la lib OAuth (fait main aussi) : https://github.com/Surfoo/geocaching-ap ... hp#L36-L62" onclick="window.open(this.href);return false;

Et gros +1 à driquet sur tes remarques sur le serveur OAuth. Et ils pourraient passer à OAuth 2 aussi..
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

lun. 15 juin 2015 16:39

Salut Driquet, salut Surfoo !
Merci pour vos réponses, ça me rassure de voir que je ne suis pas le seul à galérer avec OAUTH, je pensais m'y prendre comme un manche mais finalement, il y a peut-être un soucis côté GC ;-)
Clairement, j'ai longuement hésité à utiliser l'API car elle est vraiment très pauvre, mais c'est le seul moyen que j'ai pour récupérer le nombre de favoris d'une cache (même un bon vieux parsing des pages HTML ne donne pas cette information).
Par contre je vais arrêter de m'embêter à faire ça en C#. si cela ne te dérange par Surfoo, je vais utiliser ton code pour faire une page sur mon site qui se chargera de faire l'authentification et qui transmettra le token à mon programme en local. Au moins PHP fera le boulot (correctement)...
Merci pour vos retours en tout cas.
Avatar du membre
Surfoo
small-cacheur
small-cacheur
Profil GC
Membre: : Premium
Messages : 92
Enregistré le : jeu. 25 avr. 2013 21:26

Re: Code source pour s'authentifier sur Geocaching

lun. 15 juin 2015 16:42

Bah la librairie est partagée en open source, donc il n'y a aucune raison pour que ça me dérange.
Avatar du membre
TofLaBeuze
extra
extra
Contact :
Profil GC
Membre: : Premium
GPS : Samsung J5 + Etrex 30x
Localisation : Paris
Messages : 6722
Enregistré le : sam. 22 oct. 2011 12:35

Re: Code source pour s'authentifier sur Geocaching

lun. 15 juin 2015 16:55

SpaceEye a écrit :Clairement, j'ai longuement hésité à utiliser l'API car elle est vraiment très pauvre, mais c'est le seul moyen que j'ai pour récupérer le nombre de favoris d'une cache (même un bon vieux parsing des pages HTML ne donne pas cette information).
C:geo n'a pas d'accès à l'API (à ma connaissance !) et pourtant récupère les favos des caches, il doit y avoir un moyen :?: Tu peux peut-être contacter le membre français de l'équipe c:geo.
Image
Avatar du membre
Surfoo
small-cacheur
small-cacheur
Profil GC
Membre: : Premium
Messages : 92
Enregistré le : jeu. 25 avr. 2013 21:26

Re: Code source pour s'authentifier sur Geocaching

lun. 15 juin 2015 17:05

Non pas d'accès à l'API. Tout est du scraping de page web.

Tout est récupéré par des regex, les points favoris aussi avec cette regex : https://github.com/cgeo/cgeo/blob/a4efd ... s.java#L55" onclick="window.open(this.href);return false;
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

lun. 15 juin 2015 17:25

Les favoris sont présents dans la page d'une cache... si on s'est authentifié sur le site avant ;)

Si vous regardez une page en navigation privée par exemple, les favoris ne sont pas indiqués. Et c'est là que réside le problème...
Dans MGM lorsque je fais mon parsing de pages web, le programme n'utilise aucune information d'authentification et récupère des pages que n'importe qui peut voir sans forcément avoir un compte géocaching. Du coup j'ai accès à un nombre limité d'information.

Pourquoi MGM ne demande pas à l'utilisateur de s'authentifier dans une page web juste avant ? Bonne question : tout simplement car j'ose espérer dans mes rêves les plus fous que Géocaching a protégé un minimum son serveur pour détecter une aspiration massive de ses pages. J'ai peur que s'ils détectent qu'un mec parse 1000 pages à la minute ils décident de lui bloquer son compte. Et je ne veux pas être tenu pour responsable d'une telle mésaventure, d'autant que MGM permet(tait) de mettre à jour un grand nombre de statistiques de caches d'un coup.
Avatar du membre
driquet
regular
regular
Profil GC
Membre: : Premium
GPS : Garmin Oregon 450
Localisation : Lille
Messages : 316
Enregistré le : mar. 9 juil. 2013 09:22

Re: Code source pour s'authentifier sur Geocaching

lun. 15 juin 2015 17:52

J'ai un projet qui fait du scraping web, et oui effectivement il faut se loguer pour avoir accès au nombre de points favoris.
Pour le moment, il n'y a aucune détection d'aspiration sur le site GC.com.
La seule fois où j'ai eu un souci, c'est quand j'ai déployé mes serveurs chez OVH et la plage IP là bas était blacklistée par le proxy qu'ils utilisent.
À ma connaissance, c:geo utilise/utilisait le webscrapping de masse pour récupérer les infos, donc niveau détection, ils sont un peu à la ramasse :-)

Pour mon appli en question (http://geotrails.driquet.info/" onclick="window.open(this.href);return false;), je me suis crée un compte dummy pour récupéré les points favoris.
C'est pas bien, c'est pas propre, mais 1) c'est difficile d'avoir accès à l'API, 2) c'est laborieux de s'y connecter et d'utiliser l'API.
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

lun. 22 juin 2015 15:23

Je vais donc m'orienter vers l'utilisation d'un compte "dummy" pour effectuer mes requêtes. Par contre je n'arrive pas à faire fonctionner l'authentification basique sur Geocaching.com.
Driquet, aurais tu un bout de code (peut importe le langage) d'exemple pour effectuer ton authentification sur le site ?
Avatar du membre
driquet
regular
regular
Profil GC
Membre: : Premium
GPS : Garmin Oregon 450
Localisation : Lille
Messages : 316
Enregistré le : mar. 9 juil. 2013 09:22

Re: Code source pour s'authentifier sur Geocaching

lun. 22 juin 2015 15:54

Ma librairie n'est pas encore en ligne, mais l'idée ressemble beaucoup à pycaching : repo github.
Je me rappelle avoir zieuter le code de Surfoo, il fait la même chose en PHP. Je te laisse chercher sur son github, c'est là bas que j'ai du voir ça.

Attention quand même, mon utilisation du compte "dummy" est réalisée depuis une seule machine, bien identifiée.
Ce que tu cherches à faire est assez différent, vu que chacune des personnes utilisant MGM se connectera depuis son poste au compte dummy.
Je ne te garantis pas que gc.com ne vérifie pas qu'un compte se connecte depuis de multiples endroits simultanément ou proche dans le temps.

Si jamais c'est le cas, il y aurait toujours une solution (certes un peu bancale) qui consisterait à avoir un service sur un de tes serveurs, qui stocke les PF des caches. Une interface REST pourrait être utiliser pour questionner TA base, qui seraient mise à jour à chaque requête ou chaque jour.
Avatar du membre
Surfoo
small-cacheur
small-cacheur
Profil GC
Membre: : Premium
Messages : 92
Enregistré le : jeu. 25 avr. 2013 21:26

Re: Code source pour s'authentifier sur Geocaching

lun. 22 juin 2015 16:02

Oui, c'est juste là : https://github.com/Surfoo/unpublished-g ... /login.php" onclick="window.open(this.href);return false;
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

lun. 22 juin 2015 16:11

Merci à vous deux, je vais regarder ça. Je veux éviter pour l'instant de squatter mon serveur avec un service géocaching mais si je n'arrive à rien il va falloir que je regarde par là.... :cry:
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:34

Bon... je ne m'en sors pas. Clairement les techno web ce n'est pas mon truc.
J'ai l'impression que GC ne supporte pas l'authentification basique http et du coup je n'arrive à rien.
Je lance donc un appel à l'aide.
J'aimerai faire un truc de ce genre :
<?PHP

$username = "spaceeye";
$password = "azerty1234"; // n'allez pas croire que c'est mon mdp
$remote_url = 'http://www.geocaching.com/geocache/GC5V ... -plaine-13';

// Create a stream
$opts = array(
'http'=>array(
'method'=>"GET",
'header' => "Authorization: Basic " . base64_encode("$username:$password")
)
);

$context = stream_context_create($opts);

// Open the file using the HTTP headers set above
$file = file_get_contents($remote_url, false, $context);

print($file);

?>
Le but bien sur est d'afficher la page comme si je m'étais authentifié. Est-ce que c'est possible avec GC sans déployer une usine à gaz de scripts ? Franchement là j'ai un coup de mou, j'ai juste envie d'envoyer ch*er géocaching (et MGM).
Avatar du membre
Surfoo
small-cacheur
small-cacheur
Profil GC
Membre: : Premium
Messages : 92
Enregistré le : jeu. 25 avr. 2013 21:26

Re: Code source pour s'authentifier sur Geocaching

mar. 30 juin 2015 22:40

Non ce n'est pas l'authentification HTTP qu'il faut utiliser, regarde ici pour plus de détails : https://fr.wikipedia.org/wiki/Authentification_HTTP" onclick="window.open(this.href);return false;

Quand tu t'identifies sur le site, c'est par le formulaire, pas une popup du navigateur qui demande un identifiant/mot de passe.
Ce qu'il faut faire, c'est donc simuler la requête POST d'envoi du pseudo et du mot de passe. Ce que je fait dans le code que je t'ai donné en lien.
Il faut ensuite sauvegarder les données du cookies sur le serveur, et les réutiliser à chaque requête pour montrer que tu es identifié.
Modifié en dernier par Surfoo le mar. 30 juin 2015 22:50, modifié 1 fois.

Retourner vers « Gestion des caches »

Aller à ...

Annuaire

annuaire geocaching

Éditeur HTML

editeur HTML

 

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