任务是向url发送一个json字符串数据的HTTP post请求,url受HTTP基本身份验证的保护,我需要在头中提供一个授权:字段,emailAdd是基本身份验证的用户ID,生成密码通过TOTP,其中位数为10位,时间步长为30s,T0为0,散列函数使用sha512,共享秘密为emailAdd+“ABCD”。在
我的代码是:import requests, base64, json
from passlib.totp import TOTP
from requests.auth import HTTPBasicAuth
totp = TOTP(key = base64.b32encode(shared_secret.encode()), digits = 10, alg = "sha512")
password = totp.generate().token
r = requests.Session()
#auth = base64.b64encode((''.join(userid) + ':' + ''.join(password)).encode())
r.headers.update({"Content-Type": "application/json"}) #this is task required
#r.headers.update({"Authorization": "Basic " + auth.decode()})
res = r.post(url, json = data, auth = (userid, password))
print(res.status_code)
print(res.content)
但是我认证失败了,我觉得密码应该是正确的,而且post请求有问题,谁能告诉我是什么问题吗?另外,我和服务器在不同的时区,这对TOTP生成的密码有什么不同吗?如果有关系的话,我在windows上运行python。在
谢谢