Я пишу клиент websocket для подключения к серверу, для которого у меня нет исходного кода (тестирование черного ящика).
Когда я пытаюсь подключиться к серверу с помощью следующего кода,заголовки по умолчанию продолжают добавляться в запрос, и в результате он не выполняется из-за спецификаций RFC 6455 , позволяющих использовать только один Sec-WebSocket-Key
в заголовке.
socket_key = "Sec-WebSocket-Key: " + r.headers['Sec-WebSocket-Accept']
websocket.enableTrace(True)
ws = create_connection('wss://example.com/socket.io/?EIO=3&transport=websocket', headers=[socket_key])
Однако вместо этого этот запрос отправляется:
--- request header ---
GET /socket.io/?EIO=3&transport=websocket HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Host: example.com
Origin: http://example.com
Sec-WebSocket-Key: <Generated WebSocket Key>
Sec-WebSocket-Version: 13
Sec-WebSocket-Key: <socket_key from above>
Как я могу предотвратить появление первого Sec-WebSocket-Key
заголовка или заменить его сгенерированный ключ WebSocket в запросе своим собственным ключом WebSocket?