Erreur pronotepy 20 « La page a expiré ! (11) » sur get_informations #21

Open
opened 2026-09-10 13:59:00 +02:00 by AntoineVe · 1 comment
Owner

Symptôme

À chaque run, la récupération des informations Pronote échoue systématiquement avec l'erreur :

ERROR | pronote_sync.sources.pronote.client | Échec de la récupération des informations Pronote : Unknown error from pronote: 20 | La page a expiré ! (11)

L'erreur est attrapée et dégradée en liste vide (mode dégradé) — le pipeline continue normalement, mais les informations Pronote ne sont jamais récupérées.

Comportement observé

  1. pronotepy.ParentClient.post() envoie la requête PageActualites
  2. Le serveur Pronote répond l'erreur {"Erreur": {"G": 20, "Titre": "La page a expiré ! (11)"}}
  3. pronotepy appelle refresh() → re-login en mode token → succès
  4. Retry de la requête PageActualitesmême erreur 20
  5. L'exception PronoteAPIError remonte à PronoteClient.get_informations() qui l'attrape et retourne []

Le refresh ne résout pas le problème — l'erreur 20 se reproduit systématiquement après le refresh.

Analyse préliminaire

  • L'erreur 20 n'est pas dans le mapping d'erreurs de pronotepy (qui ne connaît que 22, 10, 25)
  • Le message « La page a expiré » suggère une expiration de session ou de page côté serveur Pronote
  • Cette erreur se produit uniquement sur get_informations() (qui appelle client.information_and_surveys()self.post("PageActualites", ...))
  • get_lessons() et get_homeworks() fonctionnent correctement (144 événements récupérés)

Hypothèses à investiguer

  • L'endpoint PageActualites pourrait ne pas être disponible ou nécessiter un paramétrage différent pour les comptes parent via QR token
  • Le mode d'authentification qr_token (vs password) pourrait limiter l'accès à certaines fonctionnalités Pronote
  • Le client_identifier ou le device_name pourraient être requis pour cet endpoint spécifique
  • pronotepy 2.15.7 pourrait avoir un bug sur information_and_surveys() en mode token

Log DEBUG

Un log complet en niveau DEBUG est disponible dans /tmp/opencode/20260910135000-pronote-debug.log.

Contexte

  • Mode qr_token activé
  • Instance : 0640036s.index-education.net (Bordeaux, HubEduConnect)
  • pronotepy 2.15.7
  • Non bloquant : le pipeline fonctionne, mais les informations Pronote sont absentes

Attendu

Investiguer la cause de l'erreur 20 sur PageActualites en mode qr_token et déterminer si :

  1. C'est un bug pronotepy (endpoint non supporté en mode token),
  2. C'est une limitation du compte parent via QR code,
  3. C'est un problème de paramétrage de la requête,
  4. C'est une erreur transitoire du serveur Pronote (peu probable car systématique).

Si c'est une limitation non corrigeable côté pronote-sync, documenter le comportement et envisager de désactiver get_informations() proprement en mode qr_token plutôt que de logger une erreur à chaque run.

## Symptôme À chaque run, la récupération des informations Pronote échoue systématiquement avec l'erreur : ``` ERROR | pronote_sync.sources.pronote.client | Échec de la récupération des informations Pronote : Unknown error from pronote: 20 | La page a expiré ! (11) ``` L'erreur est **attrapée et dégradée en liste vide** (mode dégradé) — le pipeline continue normalement, mais les informations Pronote ne sont jamais récupérées. ## Comportement observé 1. `pronotepy.ParentClient.post()` envoie la requête `PageActualites` 2. Le serveur Pronote répond l'erreur `{"Erreur": {"G": 20, "Titre": "La page a expiré ! (11)"}}` 3. pronotepy appelle `refresh()` → re-login en mode token → succès 4. Retry de la requête `PageActualites` → **même erreur 20** 5. L'exception `PronoteAPIError` remonte à `PronoteClient.get_informations()` qui l'attrape et retourne `[]` Le refresh ne résout pas le problème — l'erreur 20 se reproduit systématiquement après le refresh. ## Analyse préliminaire - L'erreur 20 n'est pas dans le mapping d'erreurs de pronotepy (qui ne connaît que 22, 10, 25) - Le message « La page a expiré » suggère une expiration de session ou de page côté serveur Pronote - Cette erreur se produit **uniquement sur `get_informations()`** (qui appelle `client.information_and_surveys()` → `self.post("PageActualites", ...)`) - `get_lessons()` et `get_homeworks()` fonctionnent correctement (144 événements récupérés) ## Hypothèses à investiguer - L'endpoint `PageActualites` pourrait ne pas être disponible ou nécessiter un paramétrage différent pour les comptes parent via QR token - Le mode d'authentification `qr_token` (vs `password`) pourrait limiter l'accès à certaines fonctionnalités Pronote - Le `client_identifier` ou le `device_name` pourraient être requis pour cet endpoint spécifique - pronotepy 2.15.7 pourrait avoir un bug sur `information_and_surveys()` en mode token ## Log DEBUG Un log complet en niveau DEBUG est disponible dans `/tmp/opencode/20260910135000-pronote-debug.log`. ## Contexte - Mode `qr_token` activé - Instance : `0640036s.index-education.net` (Bordeaux, HubEduConnect) - pronotepy 2.15.7 - Non bloquant : le pipeline fonctionne, mais les informations Pronote sont absentes ## Attendu Investiguer la cause de l'erreur 20 sur `PageActualites` en mode `qr_token` et déterminer si : 1. C'est un bug pronotepy (endpoint non supporté en mode token), 2. C'est une limitation du compte parent via QR code, 3. C'est un problème de paramétrage de la requête, 4. C'est une erreur transitoire du serveur Pronote (peu probable car systématique). Si c'est une limitation non corrigeable côté pronote-sync, documenter le comportement et envisager de désactiver `get_informations()` proprement en mode `qr_token` plutôt que de logger une erreur à chaque run.
AntoineVe added the buginvestigation labels 2026-09-10 13:59:00 +02:00
Author
Owner

Issue GitHub pronotepy liée

L'issue upstream bain3/pronotepy#309 (« Error after some period using QR or token login ») documente exactement notre problème :

  • PronoteAPIError: Unknown error from pronote: 8 | La page a expiré ! (1) (variation de l'erreur 20 selon la version de pronotepy)
  • Se produit après un certain temps d'utilisation en mode QR/token login
  • Les checks manuels comme client.session_check() ne résolvent pas l'expiration
  • Le mode token/QR session expire ou échoue sur certains endpoints même avec refresh

Statut upstream : ouvert (septembre 2024), non corrigé dans la 2.15.7.

Lien avec le ticket #20

L'issue bain3/pronotepy#344 est également pertinente car elle explique pourquoi le refresh() de pronotepy déclenche des authentifications supplémentaires au lieu de réutiliser la session existante.

## Issue GitHub pronotepy liée L'issue upstream [bain3/pronotepy#309](https://github.com/bain3/pronotepy/issues/309) (*« Error after some period using QR or token login »*) documente exactement notre problème : - `PronoteAPIError: Unknown error from pronote: 8 | La page a expiré ! (1)` (variation de l'erreur 20 selon la version de pronotepy) - Se produit après un certain temps d'utilisation en mode QR/token login - Les checks manuels comme `client.session_check()` ne résolvent pas l'expiration - Le mode token/QR session expire ou échoue sur certains endpoints même avec refresh **Statut upstream** : ouvert (septembre 2024), non corrigé dans la 2.15.7. ### Lien avec le ticket #20 L'issue [bain3/pronotepy#344](https://github.com/bain3/pronotepy/issues/344) est également pertinente car elle explique pourquoi le `refresh()` de pronotepy déclenche des authentifications supplémentaires au lieu de réutiliser la session existante.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: AntoineVe/college-infos#21