bain3 / pronotepy

A python API wrapper for pronote
MIT License
189 stars 55 forks source link

Unable to connect using Educonnect (ecollege_haute_garonne_edu) #249

Open ioull opened 1 year ago

ioull commented 1 year ago

Bonjour,

Lorsque j'essaye de me connecter en utilisant le cas ecollege_haute_garonne_edu, la lib me renvoie une erreur :

Traceback (most recent call last):
  File "/srv/dev-disk-by-uuid-c2385a6f-a26a-4718-a10e-da98c915cec7/services/pronote2rest/dev/test.py", line 16, in <module>
    client = pronotepy.ParentClient('https://0312610u.index-education.net/pronote/parent.html',
  File "/srv/dev-disk-by-uuid-c2385a6f-a26a-4718-a10e-da98c915cec7/services/pronote2rest/dev/myvenv/lib/python3.9/site-packages/pronotepy/clients.py", line 643, in __init__
    super().__init__(pronote_url, username, password, ent, qr_code)
  File "/srv/dev-disk-by-uuid-c2385a6f-a26a-4718-a10e-da98c915cec7/services/pronote2rest/dev/myvenv/lib/python3.9/site-packages/pronotepy/clients.py", line 352, in __init__
    super().__init__(pronote_url, username, password, ent, qr_code)
  File "/srv/dev-disk-by-uuid-c2385a6f-a26a-4718-a10e-da98c915cec7/services/pronote2rest/dev/myvenv/lib/python3.9/site-packages/pronotepy/clients.py", line 64, in __init__
    cookies = ent(username, password)
  File "/srv/dev-disk-by-uuid-c2385a6f-a26a-4718-a10e-da98c915cec7/services/pronote2rest/dev/myvenv/lib/python3.9/site-packages/pronotepy/ent/generic_func.py", line 125, in _cas_edu
    _educonnect(session, username, password, response.url)
  File "/srv/dev-disk-by-uuid-c2385a6f-a26a-4718-a10e-da98c915cec7/services/pronote2rest/dev/myvenv/lib/python3.9/site-packages/pronotepy/ent/generic_func.py", line 60, in _educonnect
    raise ENTLoginError(
pronotepy.exceptions.ENTLoginError: Fail to connect with EduConnect : probably wrong login information

Je suis sur de mes identifiants que j'ai copié/collé dans l'interface web pour valider. Et ce sont les mêmes identifiants que la grande soeur qui est au lycée et pour qui le code suivant marche bien ! Voici mon code de test :

import pronotepy
from pronotepy.ent import ecollege_haute_garonne_edu

client = pronotepy.ParentClient('https://0312610u.index-education.net/pronote/parent.html',
                          username='xxxxxxxxxxxxx',
                          password='xxxxxxxxxxxxx',
                          ent=ecollege_haute_garonne_edu)

if client.logged_in: # check if client successfully logged in
    # get the all the periods (may return multiple types like trimesters and semesters but it doesn't really matter
    # the api will get it anyway)
    periods = client.periods

    for period in periods:
        for grade in period.grades:  # iterate over all the grades
            print(f'{grade.grade}/{grade.out_of}')  # print out the grade in this style: 20/20

Merci d'avance !

tarneaux commented 1 year ago

Bonjour, vous pouvez essayer avec un compte élève à la place d'un compte parent, en changeant l'URL (/parent.html -> /eleve.html)? Le problème de la connexion en temps que parent a déjà été évoqué ici. Ce qui me semble bizarre c'est que ça marche pour le lycée et pas là... Est-ce que sur les deux interfaces Pronote vous pouvez survoler le logo en haut à droite pour voir le numéro de version et envoyer les deux ici?

ioull commented 1 year ago

Je ne peux malheureusement pas me connecter en tant qu'élève via educonnect pour le moment, en effet les élèves ont un compte CAS seulement, ils auront leur compte educonnect à la rentrée prochaine ... Test en septembre ;-)

En ce qui concerne les versions Lycée et Collège, ce sont les 2 même versions : 2022 - 0.3.1

ioull commented 1 year ago

Je viens de tester avec le code élève de mon fils (il l'avait finalement ... dur dur d'avoir des infos fiables ;-) ) et même erreur, pas possible de me connecter avec un compte enfant non plus !

ioull commented 1 year ago

J'espérais que les mises à jour de la rentrée fasse tomber en marche mon problème de login ... Mais que ce soit avec un compte élève ou un compte parent. J'ai l'erreur

pronotepy.exceptions.ENTLoginError: Fail to connect with EduConnect : probably wrong login information

Alors que je suis sur de mes identifiants ... Une idée ?

bain3 commented 1 year ago

I'm not sure what's wrong with the ENT function, but you won't have problems with ENTs again if you switch to the QR login method.

ioull commented 1 year ago

Thanks for your help. I tried but without success ... I got the following error using python3 -m pronotepy.create_login :

pronotepy.exceptions.PronoteAPIError: Page html is different than expected. Be sure that pronote_url is the direct url to your pronote page.
ioull commented 1 year ago

Peut-être une piste ... dans le package ent l'url est celle-ci : https://cas.ecollege.haute-garonne.fr/login?selection=EDU_parent_eleve&service=https://example.com/ Si j'essaye d'aller à cette URL j'ai l'erreur suivante : Application non autorisée à utiliser CAS Par contre si j'essaye sans service=XXXXX J'arrive bien à la bonne page ...

En modifiant l'url dans le package ent avec https://cas.ecollege.haute-garonne.fr/login?selection=EDU_parent_eleve

Je vais un peu plus loin mais j'ai l'erreur suivante : pronotepy.exceptions.PronoteAPIError: Page html is different than expected. Be sure that pronote_url is the direct url to your pronote page.

ioull commented 1 year ago

Je crois avoir trouvé !!! Si je met ca dans l'url : https://cas.ecollege.haute-garonne.fr/login?selection=EDU_parent_eleve&service=https://marcel-doret.ecollege.haute-garonne.fr/sg.do?PROC=IDENTIFICATION_FRONT&ACTION=VALIDER J'arrive à me logguer ... par contre c'est pas générique pour toute la haute garonne ...

Vermylion commented 1 month ago

Bonjour, je sais qu'une solution a été trouvée, mais en passant par educonnect en utilisant votre url ne fonctionne malheureusement pas pour moi. Par contre, j'ai une solution qui ne nécéssite pas de passer par educonnect, mais seulement pronote. En passant par le site mobile de pronote (ce qui se passe avec le qr code de toute façon), de url 'https://0312093g.index-education.net/pronote/mobile.eleve.html?&login=true' (ici url pour région haute garonne, mais plus précisement Victor Hugo) avec pronotepy.Client, on peut bypass educonnect. Par contre, l'identifiant et mot de passe demandé est celui du compte pronote, et pas celui de educonnect.