Запретить WebSocket Request от добавления заголовков по умолчанию - PullRequest
0 голосов
/ 29 октября 2019

Я пишу клиент 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?

1 Ответ

1 голос
/ 30 октября 2019

Передайте словарь вместо списка для аргумента header:

my_header = { "Sec-WebSocket-Key" : "12345abcde" }
ws = websocket.create_connection("ws://127.0.0.1:8000/", header = my_header)

Для этого кода я вижу следующий исходящий запрос:

websocket:--- request header ---
GET / HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Host: 127.0.0.1:8000
Origin: http://127.0.0.1:8000
Sec-WebSocket-Version: 13
Sec-WebSocket-Key: 12345abcde
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...