Получаю данные от сокета winline, но не получается полностью декодировать ответ
import websocket
import rel
import zlib
host = "wss://wss.winline.ru/data_ng?client=site",
headers = {
# "Host": "wss.winline.ru",
"Connection": "Upgrade",
"Pragma": "no-cache",
"Cache-Control": "no-cache",
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36",
"Upgrade": "websocket",
"Origin": "https://winline.ru",
"Sec-WebSocket-Version": "13",
"Accept-Encoding": "gzip, deflate, br",
"Accept-Language": "en-US,en;q=0.9",
"Sec-WebSocket-Key": "1pxSfn+NchYmdH0xnLscEg==",
"Sec-WebSocket-Extensions": "permessage-deflate; client_max_window_bits",
}
def pako(raw):
decompress = zlib.decompressobj(+31)
decompressed_data = decompress.decompress(raw)
decompressed_data += decompress.flush()
print(decompressed_data)
def on_message(ws, message):
pako(message)
def on_error(ws, error):
print(error)
def on_close(ws, close_status_code, close_msg):
print("### closed ###")
def on_open(ws):
print("[*Opened connection]")
print(f"[+] Send {'lang'}")
ws.send("lang")
print(f"[+] Send {'AA=='}")
ws.send("AA==")
print(f"[+] Send {'data'}")
ws.send("data")
print(f"[+] Send {'WINLINE'}")
ws.send("WINLINE")
print(f"[+] Send {'getdate'}")
ws.send("getdate")
if __name__ == "__main__":
websocket.enableTrace(True)
ws = websocket.WebSocketApp(url="wss://wss.winline.ru/data_ng?client=site",
on_open=on_open,
on_message=on_message,
on_error=on_error,
on_close=on_close,
header=headers)
ws.run_forever(dispatcher=rel) # Set dispatcher to automatic reconnection
rel.signal(2, rel.abort) # Keyboard Interrupt
rel.dispatch()
websocket.enableTrace(True)
Какие - то данные декодируются, но в основном нет.
Вроде бы они используют packo.js encode, но у меня все равно не получается полностью декодировать ответ