Websockets.Exceptions.InvalidStatusCode: сервер отклонил соединение WebSocket: HTTP 400Python

Программы на Python
Anonymous
Websockets.Exceptions.InvalidStatusCode: сервер отклонил соединение WebSocket: HTTP 400

Сообщение Anonymous »

Я не могу подключиться к веб-сокету с помощью модуля веб-сокетов. У меня есть следующий код:

Код: Выделить всё

import asyncio, ssl
import websockets

headers= {
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'en-US,en;q=0.9',
'Cache-Control': 'no-cache',
'Connection': 'Upgrade',
'Host': ...,
'Origin': ...,
'Pragma': 'no-cache',
'Upgrade': 'websocket',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36'
}

async def hello():
uri = ...
async with websockets.connect(ssl=0,
extra_headers=headers,
origin="*",
uri = uri) as websocket:
pass

asyncio.get_event_loop().run_until_complete(hello())
Я получаю следующее исключение:

Код: Выделить всё

Traceback (most recent call last):
File "C:\Users\AFMN\AppData\Local\Programs\Python\Python38-32\kr ws.py", line 30, in 
asyncio.get_event_loop().run_until_complete(hello())
File "C:\Users\AFMN\AppData\Local\Programs\Python\Python38-32\lib\asyncio\base_events.py", line 616, in run_until_complete
return future.result()
File "C:\Users\AFMN\AppData\Local\Programs\Python\Python38-32\kr ws.py", line 19, in hello
async with websockets.connect(ssl=0,
File "C:\Users\AFMN\AppData\Local\Programs\Python\Python38-32\lib\site-packages\websockets\client.py", line 517, in __aenter__
return await self
File "C:\Users\AFMN\AppData\Local\Programs\Python\Python38-32\lib\site-packages\websockets\client.py", line 542, in __await_impl__
await protocol.handshake(
File "C:\Users\AFMN\AppData\Local\Programs\Python\Python38-32\lib\site-packages\websockets\client.py", line 296, in handshake
raise InvalidStatusCode(status_code)
websockets.exceptions.InvalidStatusCode: server rejected WebSocket connection: HTTP 400
Но проблема в том, что я могу подключиться к веб-сокету с помощью модуля websocket, но не хочу его использовать по нескольким причинам. Но если это поможет, вот код, использующий websocket:

Код: Выделить всё

import websocket, ssl
try:
import thread
except ImportError:
import _thread as thread
import time, msgpack

headers= {
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'en-US,en;q=0.9',
'Cache-Control': 'no-cache',
'Connection': 'Upgrade',
'Host': ...,
'Origin': ...,
'Pragma': 'no-cache',
'Upgrade': 'websocket',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36'
}

def on_message(ws, message):
...

def on_error(ws, error):
...

def on_close(ws):
...

def on_open(ws):
...

if __name__ == "__main__":
websocket.enableTrace(True)
ws = websocket.WebSocketApp(...,
on_message = on_message,
on_error = on_error,
on_close = on_close,
header=headers,
subprotocols=["binary", "base64"])
ws.on_open = on_open
ws.run_forever(sslopt={"cert_reqs": ssl.CERT_NONE})
Почему я не могу подключиться к веб-сокету в первом коде, хотя я могу подключиться к тому же веб-сокету с помощью другого модуля?
Как это сделать Я подключаюсь с помощью первого?

Подробнее здесь: https://stackoverflow.com/questions/624 ... nnection-h

Вернуться в «Python»