【发布时间】:2017-07-09 20:21:41
【问题描述】:
我正在尝试从 upwork 的 api 获取一些数据。 我正在使用 Requests-OAuthlib 。对于一个 API 请求,它可以工作,但对于第二个,我收到此错误:“重复的时间戳/随机数组合,可能的重放攻击。请求被拒绝。” 因此,我尝试通过将其放入构造函数中来修改 Requests-OAuthlib 并手动更改时间戳和随机数:
ur = u''+str(SystemRandom().random())
ur = ur.replace("0.","")
self.client.nonce = ur
ts = u'' + str(int(time()))
self.client.timestamp = ts
就在 self.client = client_class( ... 但它仍然不起作用。 我是 python 和 OAuth 的初学者,所以我宁愿使用这个库而不是手动构建请求 url。
这里是库Requests-OAuthlib source code的源代码
如果我在 call 结束时打印它们,它们的值与我设置的值相同,但设置它们似乎没有效果,upwork 仍然表示重放攻击。 我也尝试将它们放在标题中,但仍然无法正常工作
r.headers['oauth_nonce'] = ur
r.headers['oauth_timestamp'] = ts
更新: 我打印了 r.headers,它包含这些:
第一次通话
oauth_nonce="55156586115444478931487605669", oauth_timestamp="1487605669"
第二次通话
oauth_nonce="117844793977954758411487605670", oauth_timestamp="1487605670"
Nonce 和时间戳彼此不同。那么为什么 upwork 给了我:“重复的时间戳/随机数组合,可能的重放攻击。请求被拒绝。” ?
Update2:可能只是一些疯狂的工作行为,仍在等待他们的答复。我相信,因为如果我更改端点中的某些内容,它就会起作用,所以 nonces/timestamps 似乎与问题无关。
Update3:我得到了 upwork 的答复。真诚地,我无法理解答案,但如果您认为这是有道理的,您可以关闭这个问题。无论如何,我找到了解决方法。 https://community.upwork.com/t5/API-Questions-Answers/Wrong-API-error-message/td-p/306489
【问题讨论】:
-
你做了什么来解决这个重复的时间戳/随机数组合,可能的重放攻击。请求被拒绝。错误?
-
对不起,我不记得了,这是很久以前的一次性工作,我不太使用 OAuth
标签: python oauth timestamp nonce