Добрый день.
Нужно спарсить содержимое сайта через websocket. По-другому не получается. С данным вопросом совершенно не знаком. Поиск в инете выдает варианты, где поднимаются вместе сервер и клиент и между ними идет передача данных. В моем случае, как я понимаю, сервер уже есть, но он чужой. Клиента написал, соединение происходит, request header и responce header в консоль получаю. Если отправить message, то сервер отвечает. Получается, нужно отправить правильный message, чтобы получить нужные данные. Но где его искать, этот правильный запрос? На что обратить внимание в браузере в ответе сервера?
Нужно постоянно получать данные, которые обновляются в режиме реального времени. Подскажите, пожалуйста, куда нужно копать?
Вот что прилетает в консоль
Нужно спарсить содержимое сайта через websocket. По-другому не получается. С данным вопросом совершенно не знаком. Поиск в инете выдает варианты, где поднимаются вместе сервер и клиент и между ними идет передача данных. В моем случае, как я понимаю, сервер уже есть, но он чужой. Клиента написал, соединение происходит, request header и responce header в консоль получаю. Если отправить message, то сервер отвечает. Получается, нужно отправить правильный message, чтобы получить нужные данные. Но где его искать, этот правильный запрос? На что обратить внимание в браузере в ответе сервера?
Нужно постоянно получать данные, которые обновляются в режиме реального времени. Подскажите, пожалуйста, куда нужно копать?
Python:
import requests
import websocket
def run_websocket():
websocket.enableTrace(True)
ws = websocket.WebSocket()
ws.connect("wss://b-gql.ggbet.ru/graphql",
header = {
'Host': 'b-gql.ggbet.ru',
'Connection': 'Upgrade',
'Pragma': 'no-cache',
'Cache-Control': 'no-cache',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4612.0 Safari/537.36',
'Upgrade': 'websocket',
'Origin': 'https://ggbet.ru',
'Sec-WebSocket-Version': '13',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
'Sec-WebSocket-Protocol': 'graphql-ws'
})
message = 'hello'
while True:
try:
ws.send(f'{message}')
result = ws.recv()
print(result)
except KeyboardInterrupt:
ws.close()
break
except Exception as e:
print(e)
break
if __name__ == "__main__":
run_websocket()
Вот что прилетает в консоль
Код:
--- request header ---
GET /graphql HTTP/1.1
Upgrade: websocket
Host: b-gql.ggbet.ru
Origin: http://b-gql.ggbet.ru
Sec-WebSocket-Key: 4hWny47sZicN2zve/J1N/g==
Connection: Upgrade
Host: b-gql.ggbet.ru
Connection: Upgrade
Pragma: no-cache
Cache-Control: no-cache
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4612.0 Safari/537.36
Upgrade: websocket
Origin: https://ggbet.ru
Sec-WebSocket-Version: 13
Accept-Encoding: gzip, deflate, br
Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7
Sec-WebSocket-Protocol: graphql-ws
-----------------------
--- response header ---
HTTP/1.1 101 Switching Protocols
Date: Mon, 06 Sep 2021 12:13:24 GMT
Connection: upgrade
upgrade: websocket
sec-websocket-accept: NPqHhtUmlOinTgrdwSoHgXJFCc4=
sec-websocket-protocol: graphql-ws
CF-Cache-Status: DYNAMIC
Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
Server: cloudflare
CF-RAY: 68a79c7119923aa7-DME
alt-svc: h3=":443"; ma=86400, h3-29=":443"; ma=86400, h3-28=":443"; ma=86400, h3-27=":443"; ma=86400
-----------------------
++Sent raw: b'\x81\x85\xa2\xedjN\xca\x88\x06"\xcd'
++Sent decoded: fin=1 opcode=1 data=b'hello'
++Rcv raw: b'\x81@{"payload":{"message":"invalid json"},"type":"connection_error"}'
++Rcv decoded: fin=1 opcode=1 data=b'{"payload":{"message":"invalid json"},"type":"connection_error"}'
{"payload":{"message":"invalid json"},"type":"connection_error"}
++Sent raw: b'\x81\x85\xd7\xe7\xce1\xbf\x82\xa2]\xb8'
++Sent decoded: fin=1 opcode=1 data=b'hello'
++Rcv raw: b'\x88\x10\x03\xeadecoding error'
++Rcv decoded: fin=1 opcode=8 data=b'\x03\xeadecoding error'
++Sent raw: b'\x88\x82l\x82\xf3\xaaoj'
++Sent decoded: fin=1 opcode=8 data=b'\x03\xe8'
++Sent raw: b'\x81\x85G\xea\x1an/\x8fv\x02('
++Sent decoded: fin=1 opcode=1 data=b'hello'
Connection to remote host was lost.