Bittrex websockets编码方法?

时间:2018-04-24 21:56:05

标签: encoding base64 decoding cryptocurrency

使用chromes开发工具模仿来自www的bittrex的websocket连接并不是什么大问题:

GET https://socket.bittrex.com/signalr/negotiate?clientProtocol=1.5&connectionData=%5B%7B%22name%22%3A%22c2%22%7D%5D&_=1524596108843

这会返回一个令牌

"ConnectionToken":"gbLsm8C6Jck1mQTTFjmuIv5qgUuMZz/kXU1s+fAnjnW
qUFQocNBfp3VOrd/y0acxWL5Fv7MZ54heRddLYZS+EMhLnaPPQiSZblvgJPCbLKqZTIkb"

需要使用:

wss://socket.bittrex.com/signalr/connect? 
transport=webSockets&clientProtocol=1.5&connectionToken=

然后有一些命令被发送到websocket:

{"H":"c2","M":"SubscribeToSummaryLiteDeltas","A":[],"I":0}
{"H":"c2","M":"SubscribeToExchangeDeltas","A":["BTC-TRX"],"I":1}
{"H":"c2","M":"QueryExchangeState","A":["BTC-TRX"],"I":2}

这使得有关所选股票代码BTC-TRX的bittrex流数据。但事情开始变得奇怪了:

这是什么样的框架:

    {"C":"d-C95D047D-E,0|OHjr,0|OHjs,2|CW,6116","M":[{"H":"C2","M":"uE","A":["dY+7DsIwDEX/xXOI7NiOnYwwg0TpwENd+QnUfydtBQKp9ear4yPfFxyhwr4/7PruCgFOUJO4SoA71McL+lsLAnRQMeI0xhzg3EKXQpEFzUvyMayhiWaUOJtqLCZKonkcAly+cvyXl/lCHKOyaxbDdbUuamMXzhELk5lvvKE+s0yoyWPKVIhwg81LO8OcNCZOGQn5g9IPSuyLtq1To2drNIxv"]}]}

它当然看起来像base64,但解码它给我一些像:

u 0E s 0 D C] 'm # ¾? NPJ; [tP14BBK1f8j,&安培; JY \ RBK u .jc o > L c T p K;Ü4& N J싶 S gk4 o

有没有人想出如何将其变成可读数据?

2 个答案:

答案 0 :(得分:0)

响应似乎(至少在Python世界中)受b64decode()decompress()的约束。

message = decompress(b64decode(message))

答案 1 :(得分:0)

要解码响应的编码部分,请按以下步骤进行操作(在python 3.8.2提示符下):

"esModuleInterop": true

请注意>>> import zlib >>> import base64 >>> val = b'dY+7DsIwDEX/xXOI7NiOnYwwg0TpwENd+QnUfydtBQKp9ear4yPfFxyhwr4/7PruCgFOUJO4SoA71McL+lsLAnRQMeI0xhzg3EKXQpEFzUvyMayhiWaUOJtqLCZKonkcAly+cvyXl/lCHKOyaxbDdbUuamMXzhELk5lvvKE+s0yoyWPKVIhwg81LO8OcNCZOGQn5g9IPSuyLtq1To2drNIxv' >>> zlib.decompress(base64.b64decode(val), -15) b'{"M":"BTC-TRX","N":24854,"Z":[{"TY":2,"R":0.00000733,"Q":28491.34078928},{"TY":2,"R":0.00000721,"Q":136755.97451456}],"S":[{"TY":0,"R":0.00000739,"Q":480.53856470},{"TY":2,"R":0.00000751,"Q":738436.09317788},{"TY":2,"R":0.00000758,"Q":310528.26191108},{"TY":2,"R":0.00000763,"Q":70625.23260103},{"TY":1,"R":0.00001388,"Q":0.0}],"f":[]}' 是解压缩方法的第二个参数。使用该参数,-15函数对应于等效JavaScript库中的decompress