我正在编写一个交易程序,我需要通过 API v2 连接到 MtGox(比特币交易所)。但我不断收到以下错误:
网址:1 https://data.mtgox.com/api/2/BTCUSD/money/bitcoin/address
HTTP 错误 403:禁止。
我的大部分脚本都是从这里直接复制的(即 pastebin 链接)。我只需要更改它以使用 Python 3.3。
我怀疑这与我使用 base64.b64encode 的脚本部分有关。在我的代码中,我必须将我的字符串编码为 utf-8 才能使用 base64.b64encode:
url = self.__url_parts + '2/' + path
api2postdatatohash = (path + chr(0) + post_data).encode('utf-8') #new way to hash for API 2, includes path + NUL
ahmac = base64.b64encode(str(hmac.new(base64.b64decode(self.secret),api2postdatatohash,hashlib.sha512).digest()).encode('utf-8'))
# Create header for auth-requiring operations
header = {
"User-Agent": 'Arbitrater',
"Rest-Key": self.key,
"Rest-Sign": ahmac
}
但是,对于其他人的脚本,他没有:
url = self.__url_parts + '2/' + path
api2postdatatohash = path + chr(0) + post_data #new way to hash for API 2, includes path + NUL
ahmac = base64.b64encode(str(hmac.new(base64.b64decode(self.secret),api2postdatatohash,hashlib.sha512).digest()))
# Create header for auth-requiring operations
header = {
"User-Agent": 'genBTC-bot',
"Rest-Key": self.key,
"Rest-Sign": ahmac
}
我想知道额外的编码是否导致我的标头凭据不正确。我认为这是另一个 Python 2 v. Python 3 问题。我不知道其他人如何在不更改为 utf-8 的情况下逃脱,因为如果您尝试将字符串传递给 b64encode 或 hmac,脚本将不会运行。你们看到我在做什么有什么问题吗?输出代码是否等效?