【问题标题】:Bittrex websockets encoding method?Bittrex websockets编码方法?
【发布时间】:2018-04-24 21:56:04
【问题描述】:

使用 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����#��¾?��� NP��J�;����[tP1�4���B�B��K�1���f�8�j,&J�y\�r����B��k�u .jc���o��>�L��c�T�p��K;Ü4&N���J싶�S�gk4�o

有人想出如何将其转化为可读数据吗?

【问题讨论】:

    标签: encoding base64 decoding cryptocurrency


    【解决方案1】:

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

    >>> 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 作为解压缩方法的第二个参数。使用该参数,decompress 函数对应于等效 javascript 库中的 rawInflate

    【讨论】:

      【解决方案2】:

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

      message = decompress(b64decode(message))
      

      【讨论】:

      • @McNight 真的吗?好的!我尝试了不同的在线 php 和 python 网站,但找不到任何地方我可以得到有效的结果来做你正在做的事情。你确实从中得到了一些人类可读的东西,还是你只是在暗示?
      • 我不是答案的作者。我刚格式化。原作者是@Mark。
      • 减一。因为答案太神秘而无用。请提供有效的代码 sn-p。您提到的功能必须从哪些包中导入?什么是“消息”...?
      猜你喜欢
      • 1970-01-01
      • 2018-05-29
      • 2012-06-19
      • 2017-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-20
      • 1970-01-01
      相关资源
      最近更新 更多