Bonjour à tous!

Problème de base:

En ce moment je developpe un script NodeJS qui va se connecter sur un site internet de gestion d'agenda.
Ce site possède une API mais il n'existe pas de moyen simple de s'y connecter (ça aurait été trop facile)

Solution:

Connexion au site:

Ce que je fais c'est que je simule la connexion pour récuperer un token. En gros quand on va a l'url racine du site ce dernier nous donne une url rien que pour nous. Je la récupère.
Ensuite formulaire de connexion je simule l'envoie avec succès je peux me connecter au site rien qu'en recopiant l'url récupérée précedement.
C'est pas si simple car il y a des codes spécifique dans des champs cachés que j'ai récuperer avec JSDom pour simuler parfaitement une connexion.

Partie connexion pour utiliser l'API

J'ai remarqué que sur un page il y a un code necessaire plus tard pour utiliser l'API je le récuperer avec JSDom . J'utilise la méthode du site (trouver dans leurs sources javascript) pour calculer le HashCode utilisé dans l'API.

Le drame:

Ca y est ! J'ai tout ce qu'il me faut pour correspondre avec l'API ! (j'ai les codes je suis connecté etc...)
Alors j'essaie je recré une reqête parfaite (construite exactement pareil que celle du site ). Et là... tristesse...grande deception...je ne parviens à rien récuperer a part: { d: '' }

Mais ce n'est pas possible!!

Alors je cherche ... par hasard je vais sur le site avec la bonne url puis ensuite à l'aide d'une extension chrome je recopie ma reqûete à envoyer à l'API (la même que celle que j'utilise dans nodejs) et là :O ça marche!
Alors je me dis j'ai encore louper un truc je cherche dans les envois une requête qui en quelque sorte "initialiserais" l'API mais je n'ai manifestement pas trouver... Il suffit juste de se connecter avec l'URL depuis un navigateur et pouf après j'y ai accès... Bizarre
Et je n'ai vraiment pas trouvé qu'est-ce qui faisait la différence

Plus qu'une étape

Il ne me manque du coup plus qu'une étape.... Se connecter avec chrome sans l'ouvrir ou n'importe quel navigateur. Je me suis interessé à ZombieJS qui semble être un "navigateur en ligne de commande" de ce que j'ai pu comprendre. Je l'ai installé et je vais sur l'URL voulue mais j'ai pleins d'erreur et ça me renvoie toujours : "{d:''}"

Est-ce que vous auriez une idée de comment je pourrais proceder pour finir mon script ?
Pour info le site cible utilise de l'ASP.net

Merci d'avance de votre aide! je sèche vraiment là :'(

2 réponses


Je te conseille d'utiliser Wireshark pour sniffer les échanges avec Chrome
difficile sans plus d'éléments de te répondre, mais moi je regarderais la version de http, si un referer est transmis
voire un cookie (on ne sait jamais) ...
Wireshark te dira tout ça

Merci pour ta réponse :)
j'ai utiliser wireshark j'avais déjà utilisé mais j'avais pas fouillé de ce que j'ai pu constater il envoie un cookie en même temps que de récuperer les fichiers (fin de ce que je comprends...)
Il charge aussi un theme personalisé avec un numéro de thème extra long mais je pense pas que ça ai rapport avec l'authentification

Y a pas moyen en nodejs de simuler carrement l'ouverture entière d'une page web pour que ce soit plus simple ?
J'ai l'impression que c'est super compliqué car le site est codé avec un framework ASP.net et donc il fait pleins de choses pas simples à comprendre ...

Je suis désolé de pas pouvoir donner de détails mais je suis pas sûr que le site sur lequel je suis aprécirais que je lise les codes sources et que je bricole avec leur api qui n'est pas faite pour être exteriorisé à la base :/