Я пытаюсь подключиться к веб-сокету с помощью Autobahn / Asyncio.Я подключился к нескольким другим веб-сокетам, используя точно такой же код, но этот конкретный веб-сокет отклоняет мои попытки.Я получаю ошибку при обновлении соединения, и сервер отвечает 403. Я попытался подключиться к этой веб-розетке с помощью пакета «веб-сокеты», и это было успешно, поэтому в реализации Autobahn должен быть какой-то параметр по умолчанию, которыйвызывая проблему.
Я сравнил успешный запрос квитирования от реализации websockets с неудачным запросом квитирования от реализации автобана:
websockets: запрос:
GET /ws/v3 HTTP/1.1
Host: real.okex.com:10442
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: eTj8gJmhJGTj868ObmO2qg==
Sec-WebSocket-Version: 13
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits
User-Agent: Python/3.6 websockets/8.0
ответ:
Server: nginx
Date: Tue, 09 Jul 2019 20:49:33 GMT
Connection: upgrade
upgrade: websocket
sec-websocket-accept: NJxn9G+1AJaYlHY1n1/Iy6P+2R8=
autobahn: request:
GET /ws/v3 HTTP/1.1
User-Agent: AutobahnPython/18.11.1
Host: real.okex.com:10442
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: QI5/tydGJRB6/LMDXkQ1dg==
Sec-WebSocket-Version: 13
response:
WebSocket connection upgrade failed (403 - Forbidden)
Я даже жестко запрограммировал реализацию autobahn для отправки точно такого же запроса GET, что и для 'websockets'реализация, но это не сработало.
Код автобана:
async def connect_to_OKEX():
while True:
try:
global OKEX_transport
ws_endpoint = 'wss://real.okex.com:10442/ws/v3'
factory = WebSocketClientFactory(ws_endpoint)
factory.protocol = OKEX_Protocol
coro = loop.create_connection(factory, 'www.okex.com', 443, ssl=True)
print("running {}".format(coro))
OKEX_transport, proto = await coro
print("proto {}".format(proto))
break
except Exception as e:
logger.exception('OKEX error connecting')
await asyncio.sleep(1)
код веб-сокетов:
async def subscribe_without_login('wss://real.okex.com:10442/ws/v3', channels):
async with websockets.connect(url) as websocket:
.....
Код автобана, который я использую, успешно работал в течение несколькихдругие веб-сокеты, так, возможно, есть какой-то флаг, который мне нужно отметить, который является специфическим для этого веб-сокета?Как я могу понять это?