API v2 を介して MtGox (ビットコイン取引所) に接続する必要がある取引プログラムを作成しています。しかし、次のエラーが発生し続けます。
URL: 1 https://data.mtgox.com/api/2/BTCUSD/money/bitcoin/address
HTTP エラー 403: 禁止されています。
私のスクリプトのほとんどは、ここから直接コピーしたものです(これはペーストビン リンクです)。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 対 Python 3 の問題だと思います。b64encode または hmac に文字列を渡そうとするとスクリプトが実行されないため、他の人が utf-8 に変更せずにどのように逃げたのかはわかりません。私がしていることに問題はありますか?アウトコードは同等ですか?