#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
Перейдите в самый низ под «Контрольный вопрос-поток ответов»