Добрый день, прошу помощи в решении задачи.
Есть сайт, хотелось бы спарсить данные с него, захожу на него используя base auth.
Внутри сайта есть данные, которые генерятся из websocket. Спарсить средствами bs4 и тд не получается.
Как я понимаю к сокету есть доступ и в обход авторизации так как если зайти на прямую по ссылке сокета
будет сообщение
Only WebSocket mode supported!
Покопавшись в консоли браузера вижу что к сокету идет запрос типа:
{"method":["RequestOpenStat"],"statname":["CurrMaxCallWaitingTime"],"objecttype":["queue"],"timeprofile":["Default"],"objectid":["VQCC2_DIT_Dep_Zdrav_TS@SIPSwitch"],"filter":[""],"frq":["3"],"tenant":["Environment"],"tag":["105300001"]}
И ответы в виде json:
{"timestamp":["1557676913"],"referenceid":["22"],"interval_length":["4489244"],"tag":["105300000"],"string_value":["0"],"eventname":["EventInfo"]}
Пробовал так:
data_orig = {"method":["RequestOpenStat"],"statname":["CurrMaxCallWaitingTime"],"objecttype":["queue"],"timeprofile":["Default"],"objectid":["VQCC2_DIT_Dep_Zdrav_TS@SIPSwitch"],"filter":[""],"frq":["3"],"tenant":["Environment"],"tag":["105300001"]}
def on_message(ws, message):
print(message)
def on_error(ws, error):
print(error)
def on_close(ws):
print("### closed ###")
def on_open(ws):
def run(*args):
for i in range(3):
time.sleep(1)
ws.send(data_orig)
time.sleep(1)
ws.close()
print("thread terminating...")
thread.start_new_thread(run, ())
if __name__ == "__main__":
websocket.enableTrace(True)
ws = websocket.WebSocketApp("ws://*********",
on_message = on_message,
on_error = on_error,
on_close = on_close)
ws.on_open = on_open
ws.run_forever()
Результат выполнения кода запрос и ответ:
--- request header ---
GET /gvcc2/gadapter/ HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Host: ************
Origin: http://************
Sec-WebSocket-Key: 3dZ81p+lv47xnnEYGLBqPg==
Sec-WebSocket-Version: 13
-----------------------
--- response header ---
Handshake status 404 Not Found
### closed ###
HTTP/1.1 404 Not Found
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=utf-8
Content-Language: en
Content-Length: 981
Date: Sun, 12 May 2019 15:47:04 GMT
-----------------------
Подскажите как получить данные из сокета, или проблема связана с авторизацией, тогда как решить проблему.