Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Problème de connexion #55

Closed
josephernest opened this issue Nov 7, 2022 · 9 comments
Closed

Problème de connexion #55

josephernest opened this issue Nov 7, 2022 · 9 comments

Comments

@josephernest
Copy link

Bonjour,
J'ai un problème de connexion, j'ai essayé ce code minimal pour débugger:

import requests, datetime
EMAIL = "..."  # a remplir
PASSWORD ="..."
PCE ="..."
session = requests.Session()
session.post('https://login.monespace.grdf.fr/sofit-account-api/api/v1/auth', data={
    'email': EMAIL,
    'password': PASSWORD,
    'capp': 'meg',
    'goto': 'https://sofa-connexion.grdf.fr:443/openam/oauth2/externeGrdf/authorize?response_type=code&scope=openid%20profile%20email%20infotravaux%20%2Fv1%2Faccreditation%20%2Fv1%2Faccreditations%20%2Fdigiconso%2Fv1%20%2Fdigiconso%2Fv1%2Fconsommations%20new_meg&client_id=prod_espaceclient&state=0&redirect_uri=https%3A%2F%2Fmonespace.grdf.fr%2F_codexch&nonce=skywsNPCVa-AeKo1Rps0HjMVRNbUqA46j7XYA4tImeI&by_pass_okta=1&capp=meg'
})
dateFormat = "%Y-%m-%d"
endDate = datetime.date.today()
startDate = endDate + datetime.timedelta(days=-7)
url = f"https://monespace.grdf.fr/api/e-conso/pce/consommation/informatives?dateDebut={startDate.strftime(dateFormat)}&dateFin={endDate.strftime(dateFormat)}&pceList%5B%5D={PCE}"
response = session.get(url)
print(response.text)

Mais la réponse ne contient rien d'utile:

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Mire de connexion</title>
  <base href="/mire/">
  <script type="text/javascript">
    var onloadCallback = function() {
      setTimeout(onloadCallback, 500)
    };
  </script>
  <meta name="viewport" content="width=device-height, initial-scale=1, maximum-scale=0.42">
  <link rel="icon" type="image/x-icon" href="favicon.ico">
  <!--<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async></script>-->
</head>
<body>
  <app-root></app-root>
<script src="runtime.e7df24b5d39b2102df5c.js" defer></script><script src="polyfills.35a5ca1855eb057f016a.js" defer></script><script src="styles.b81fc9aa724cfcc4a2de.js" defer></script><script src="main.f69e72e0f4844b0bf934.js" defer></script></body>
</html>

Y a-t-il une connexion initiale à faire avec OAuth pour autoriser l'accès à l'API?

@ssenart
Copy link
Owner

ssenart commented Nov 7, 2022

Hello, oui des fois, il y a des Captchas qui bloquent. Il faut aller se le site, se loguer en manuel avec ton browser et après ça refonctionne. Perso, je n'ai jamais eu, mais j'ai déjà lu ce comportement.

@josephernest
Copy link
Author

josephernest commented Nov 7, 2022

Merci à toi!
Le problème n'est-il pas le nonce qui est hardcodé ici ?

'capp': 'meg',
'goto': 'https://sofa-connexion.grdf.fr:443/openam/oauth2/externeGrdf/authorize?response_type=code&scope=openid%20profile%20email%20infotravaux%20%2Fv1%2Faccreditation%20%2Fv1%2Faccreditations%20%2Fdigiconso%2Fv1%20%2Fdigiconso%2Fv1%2Fconsommations%20new_meg&client_id=prod_espaceclient&state=0&redirect_uri=https%3A%2F%2Fmonespace.grdf.fr%2F_codexch&nonce=skywsNPCVa-AeKo1Rps0HjMVRNbUqA46j7XYA4tImeI&by_pass_okta=1&capp=meg'

Par curiosité, pour pouvoir débugger au plus juste, quand tu run mon code ci-dessus, ça tourne pour toi?

@josephernest
Copy link
Author

josephernest commented Nov 7, 2022

Il faut aller se le site, se loguer en manuel avec ton browser et après ça refonctionne

Sur quel site précisément ?
J'ai testé sur https://monespace.grdf.fr/client/particulier/consommation, login successful dans mon browser. Mais après quand je fais mes requêtes avec Python requests ça me refait la même chose que dans mon premier message.

@ssenart
Copy link
Owner

ssenart commented Nov 7, 2022

"Le problème n'est-il pas le nonce qui est hardcodé ici ?"

J'ai une version expérimentale de login avec un nonce non hard codé dans la branche develop dans le fichier ClientV2.py.

Tu peux essayer si ça fonctionne mieux.

@josephernest
Copy link
Author

Ca marche en effet, les headers ont aidé!

@ssenart
Copy link
Owner

ssenart commented Nov 7, 2022

Bon, je vais rajouter ça dans la prochaine version alors.

@josephernest
Copy link
Author

Penses-tu qu'il y a moyen de se connecter avec un token d'identification plutôt qu'un password? Si oui, où générer un tel token depuis l'interface GRDF? Ca eviterait de mettre son mot de passe global dans les scripts etc.

Par ailleurs @ssenart, as-tu réussi à demander à GRDF l'envoi du relevé "heure par heure"? J'ai pas réussi... J'ai essayé de faire une demande sur Engie mais ça marche pas, ça reste bloqué en attente de télétransmission...
Ce serait intéressant de pouvoir avoir l'API avec une info à chaque heure.

@ssenart
Copy link
Owner

ssenart commented Nov 8, 2022

hello, pas de token à ma connaissance.

Il me semble que la conso horaire est une option payante chez Engie.

Sinon. GrDF ne semble pas offrir l’accès à cette info.

ssenart added a commit that referenced this issue Nov 16, 2022
[#55] Make the login more robust by using auth_nonce token.
@ssenart
Copy link
Owner

ssenart commented Nov 16, 2022

Fix livré dans la 1.1.6.

@ssenart ssenart closed this as completed Nov 16, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants