如何更改RequestsOAuthlib中的时间戳和nonce?

2024-06-06 13:44:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试从upwork的api获取一些数据。 我使用的是Requests-OAuthlib,对于一个API请求它可以工作,但是对于第二个API请求,我得到了这样的错误:“重复的时间戳/nonce组合,可能是重播攻击。请求被拒绝。“ 因此,我试图修改请求OAuthlib,并手动更改时间戳和nonce,方法是将此放入构造函数中:

        ur = u''+str(SystemRandom().random())
        ur = ur.replace("0.","")
        self.client.nonce = ur
        ts = u'' + str(int(time()))
        self.client.timestamp = ts

就在那之后自助式客户机=客户端类(。。。 但它仍然不起作用。 我是python和OAuth的初学者,所以我宁愿使用这个库,而不是手动构建请求url。在

这是库的源代码Requests-OAuthlib source code

如果我在调用结束时打印它们,它们的值与我设置的值相同,但设置它们似乎没有效果,upwork仍然表示重播攻击。 我也试着把它们放在头上,还是没用

^{pr2}$

更新: 我打印了r.headers,它包含以下内容:

第一次通话

oauth_nonce="55156586115444478931487605669", oauth_timestamp="1487605669"

第二次通话

oauth_nonce="117844793977954758411487605670", oauth_timestamp="1487605670"

nonce和timestamp彼此不同。那么为什么upwork给我的答案是:“重复的时间戳/nonce组合,可能是重播攻击。请求被拒绝。”?在

更新2:可能这只是一些疯狂的上升行为,还在等待他们的答复。我相信这是因为如果我在端点中改变了一些东西,它是有效的,所以nonce/timestamp似乎与问题无关。在

更新3:我从upwork得到了答案。因为我不能理解答案,但如果你认为有道理,你可以结束这个问题。反正我找到了一个解决办法。 https://community.upwork.com/t5/API-Questions-Answers/Wrong-API-error-message/td-p/306489


Tags: 答案selfclientapi时间手动requestsoauth