EduWireApps / ecoledirecte-api-docs

70 stars 15 forks source link

Code 225 // Parametres spécifiés incorrects #32

Closed FrenchPythonLover closed 4 months ago

FrenchPythonLover commented 4 months ago

Bonjour, j'ai un problème: J'essaie de faire marcher l'api pour le QCM mais, jai toujours cette réponse quand je fait un POST de https://api.ecoledirecte.com/v3/connexion/doubleauth.awp?verbe=get avec comme header {"X-Token":token} Code en python:


heads = {
    "Content-Type": "application/form-data",
    "Accept": "application/json, text/plain, */*",
    "User-Agent": "Mozilla 5.0/HTML, like gecko",
}
import base64
import json as j
import requests
from rich import print as print
import time
print("[bold violet]----------- Connexion --------------")
utilisateur = input("Entrez votre nom: ")
mdp = input("Et votre mot de passe:")
print("[blue bold]Tentative de connexion...")

data = {
    "identifiant": utilisateur,
    "motdepasse": mdp,
    "isReLogin": False,
    "uuid": "",
}

json = j.dumps(data)
req = requests.post("https://api.ecoledirecte.com/v3/login.awp?v=4.38.0",data={'data': json},headers=heads).text
response = j.loads(req)
token = response["token"]
headsx = {
    "X-Token":token
}
print(headsx)
if response["code"] != "200":
    if response["code"] == 250:
        print("QCM obligatoire !:")
        data = {}
        json = j.dumps(data)
        req = requests.request("POST","https://api.ecoledirecte.com/v3/connexion/doubleauth.awp?verbe=get",headers=headsx,data={"body":{"data":{}}})
        response = req.text
        print(f"[blue]Question: [/blue][bold]{base64.b64decode(response["question"])}")
    elif response["code"] == 505:
        print("[red bold]Identifiants erronés !")
        exit()
    else:
        print("[red bold]ERREUR: Code n'est pas égal a 200 !")
        print(f"[red bold]ERREURE:{response["message"]} ({response["code"]})")
        exit(print("Quitte..."))
MrBeam89 commented 4 months ago

Bonjour, j'ai corrigé plusieurs erreurs qu'il y avait dans votre code

heads = {
            "Content-Type": "application/form-data",
            "Accept": "application/json, text/plain, */*",
            "User-Agent": "Mozilla 5.0/HTML, like gecko",
        }

import base64
import json as j
import requests
from rich import print as print
import time

print("[bold violet]----------- Connexion --------------")
utilisateur = input("Entrez votre nom: ")
mdp = input("Et votre mot de passe:")
print("[blue bold]Tentative de connexion...")

data = {
    "uuid": "",
    "identifiant": utilisateur,
    "isRelogin": False,
    "motdepasse": mdp
}

json = j.dumps(data)
req = requests.post("https://api.ecoledirecte.com/v3/login.awp?v=4.38.0",data={'data': json},headers=heads).text
response = j.loads(req)
token = response["token"]

# Garder le même header, juste rajouter le x-token
heads["x-token"] = token

if response["code"] != "200":
    if response["code"] == 250:
        print("QCM obligatoire !:")

        # Une simple chaîne suffit
        data = 'data={}'

        # J'ai enlevé le requests.request (je ne sais pas si c'était intentionnel)
        req = requests.post(url="https://api.ecoledirecte.com/v3/connexion/doubleauth.awp?verbe=get&v=4.53.4",headers=heads,data=data)

        # Utiliser .json() pour obtenir un dictionnaire. (.text renvoie une chaîne de caractères)
        response = req.json()

        # La question est dans ["data"]["question"]
        print(f"[blue]Question: [/blue][bold]{base64.b64decode(response['data']['question'])}")
    elif response["code"] == 505:
        print("[red bold]Identifiants erronés !")
        exit()
    else:
        print("[red bold]ERREUR: Code n'est pas égal a 200 !")
        print(f"[red bold]ERREURE:{response['message']} ({response['code']})")
        exit(print("Quitte..."))
FrenchPythonLover commented 4 months ago

merci beaucoup ! Effectivement je suis assez jeune et n'a pas vraiment pensé a tout cela !