Я пытаюсь подключиться к серверу веб-сокетов, чтобы отправить сообщение, однако я не могу подключиться из-за того, что он не устанавливает сеанс. Я использовал модуль запросов для входа на сайт и теперь использую модуль websockets для подключения. Я попытался предоставить правильные заголовки, как показано в приведенном ниже коде, включая ранее существующий Sec-WebSocket-Key, который я отсканировал в одном из запросов, сделанных в моем браузере Chrome. Он все еще не проверяет сеанс, а затем отключает меня от сервера websockets. Как успешно подключиться к серверу веб-сокетов для отправки команд?
Мой код Python:
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; rv:65.0) Gecko/20100101 Firefox/65.0",
"Accept-Encoding": "gzip, deflate, br", "Referer": "https://bigboibets.com/",
"Cookie": "PHPSESSID=" + Client.PHPSESSID + "; hasVisited=true", "TE": "Trailers"}
Response = Client.Session.post(Client.Endpoints.WSAuthLink, headers=headers)
WSAuthLink = str(Response.text)
Response = Client.Session.get(WSAuthLink)
WSSessionKey = WSAuthLink.split("SessionKey=")[1]
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; rv:65.0) Gecko/20100101 Firefox/65.0",
"Accept-Encoding": "gzip, deflate, br",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
"Accept-Language": "en-US,en;q=0.5",
"Cache-Control": "no-cache",
"Connection": "keep-alive",
"Pragma": "no-cache",
"Sec-WebSocket-Key": "9mq6jY7920lb9KF3bBb8vQ==",
"Sec-WebSocket-Extentions": "permessage-deflate",
"Upgrade": "websocket",
"Sec-WebSocket-Version": "13",
"Host": "pm3.bigboibets.com:2083",
"Origin": "https://pm3.bigboibets.com:2053"}
ws = create_connection("wss://pm3.bigboibets.com:2083/", header=headers)
ws.send(json.dumps({"Response":"Session","PC":"CA15818A","Version":"6.04","Language":"0","SitePassword":"root","ID":"","PNum":1}))
result = ws.recv()
print (result)
ws.send(json.dumps({"Response":"LoginRequest","Player":"USERNAME","ID":"0000049A","PNum":2}))
result = ws.recv()
print (result)
ws.close()
Выход:
{"Command":"Message","Text":"Session expired. Refresh your browser page and login again.","Disconnect":"Yes"}
Traceback (most recent call last):
File "C:\Users\Brandon\Desktop\BBB Bot.py", line 123, in <module>
LoginAccount("USERNAME", "PASSWORD")
File "C:\Users\Brandon\Desktop\BBB Bot.py", line 43, in LoginAccount
RetrieveAccountData()
File "C:\Users\Brandon\Desktop\BBB Bot.py", line 67, in RetrieveAccountData
AuthWSSession(WSSessionID)
File "C:\Users\Brandon\Desktop\BBB Bot.py", line 110, in AuthWSSession
result = ws.recv()
File "C:\Users\Brandon\AppData\Local\Programs\Python\Python36-32\lib\site-packages\websocket\_core.py", line 313, in recv
opcode, data = self.recv_data()
File "C:\Users\Brandon\AppData\Local\Programs\Python\Python36-32\lib\site-packages\websocket\_core.py", line 330, in recv_data
opcode, frame = self.recv_data_frame(control_frame)
File "C:\Users\Brandon\AppData\Local\Programs\Python\Python36-32\lib\site-packages\websocket\_core.py", line 343, in recv_data_frame
frame = self.recv_frame()
File "C:\Users\Brandon\AppData\Local\Programs\Python\Python36-32\lib\site-packages\websocket\_core.py", line 377, in recv_frame
return self.frame_buffer.recv_frame()
File "C:\Users\Brandon\AppData\Local\Programs\Python\Python36-32\lib\site-packages\websocket\_abnf.py", line 361, in recv_frame
self.recv_header()
File "C:\Users\Brandon\AppData\Local\Programs\Python\Python36-32\lib\site-packages\websocket\_abnf.py", line 309, in recv_header
header = self.recv_strict(2)
File "C:\Users\Brandon\AppData\Local\Programs\Python\Python36-32\lib\site-packages\websocket\_abnf.py", line 396, in recv_strict
bytes_ = self.recv(min(16384, shortage))
File "C:\Users\Brandon\AppData\Local\Programs\Python\Python36-32\lib\site-packages\websocket\_core.py", line 452, in _recv
return recv(self.sock, bufsize)
File "C:\Users\Brandon\AppData\Local\Programs\Python\Python36-32\lib\site-packages\websocket\_socket.py", line 112, in recv
"Connection is already closed.")
websocket._exceptions.WebSocketConnectionClosedException: Connection is already closed.
Выходные данные показывают, что после 1 запроса отправляется ответ об истечении сеанса, а затем делается вторая попытка, но соединение с конечной точки было закрыто.
Это означает, что отправляемые мной заголовки неверны, хотя я отправляю ранее использованный Sec-WebSocket-Key с другими заголовками, которые, скорее всего, даже не нужны.
Конечная точка, к которой я пытаюсь подключиться: wss: //pm3.bigboibets.com: 2083 /
Снимок экрана с заголовками запросов, которые я нашел
Как мне установить соединение с сервером веб-сокетов и отправлять подобные запросы в браузере Chrome?
Журналы фреймов websocket в браузере Chrome