Автоматическое получение токена на предъявителя Mojang

#python #api #python-requests #minecraft #bearer-token

#python #API #python-запросы #Minecraft #токен на предъявителя

Вопрос:

Я пишу программу, которая может изменить ваше имя пользователя в Mojang в любое указанное вами время (т. Е. имя «том» становится доступным в 09:05:39, поэтому вы должны настроить программу на изменение вашего имени на «том» в это время). Для этого вам нужен токен на предъявителя. Я могу войти в minecraft.net и используйте EditThisCookie для доступа к этому, но я хочу, чтобы программа могла подождать, пока не пройдет минута после удаления имени, чтобы автоматически собирать прокси и токен на предъявителя для ситуаций, когда имя становится доступным посреди ночи или я просто ленив. Я не уверен, почему моя функция для получения токена предъявителя не будет работать. Я ссылался на это, чтобы написать этот код.

     def getAT():
        jsonForAT = json.dumps({"agent":{"name":"Minecraft","version":1},"username":email,"password":password,"clientToken":""})
        headersForAT = {'Content-Type': 'application/json'}
        requestForAT = requests.post('https://authserver.mojang.com/authenticate', data=jsonForAT, headers=headersForAT)
    
        pullATRequestData = requestForAT.json()
        AT = pullATRequestData["accessToken"]
        return AT
  

Я действительно в замешательстве, так как, когда я использую это, я получаю ошибку 401, но программа работает, когда я получаю токен вручную.

Ответ №1:

Я также столкнулся с той же проблемой. Затем я понял, что у учетных записей Minecraft / Mojang есть вопросы безопасности. Если ваша функция получает токен предъявителя, и ваша проблема заключается в том, что ваш доступ запрещен при отправке запроса на изменение имени:

1-й убедитесь, что вы правильно его форматируете: headers={‘Authorization’: f»Bearer {TOKEN}» Обратите внимание на пробел между «Bearer» и {TOKEN}

2-й: По какой-то причине Mojang нуждается в том, чтобы вы отправили запрос Get на их конечную точку security challenges. Вам не нужно ничего делать с возвращенными данными.. Когда вы получили токен вручную, я предполагаю, что ваш браузер автоматически отправил этот запрос get, и именно поэтому он сработал. Если вы используете прокси-серверы, вам, вероятно, потребуется отправить post-запрос с ответами на ваши секретные вопросы, смотрите документацию по ссылке API.

Например:

 res = requests.get(
            "https://api.mojang.com/user/security/challenges",
            headers={"Authorization": f"Bearer {TOKEN}"},
        )
  

https://wiki.vg/Mojang_API
Перейдите в самый низ под «Контрольный вопрос-поток ответов»