from seleniumwire import webdriver # Import from seleniumwire from seleniumwire.utils import decode from time import sleep from collections import deque import json import re options = webdriver.ChromeOptions() options.add_argument('--headless') options.add_argument("--incognito") options.add_argument("--nogpu") options.add_argument("--disable-gpu") options.add_argument("--window-size=1280,1280") options.add_argument("--no-sandbox") options.add_argument("--enable-javascript") options.add_argument('--disable-dev-shm-usage') # Create a new instance of the Chrome driver driver = webdriver.Chrome(options=options) q = deque() def interceptor(request, response): # A response interceptor takes two args if 'ws-travis.dus.com/socket.io/?EIO=3&transport=polling' in request.url : body = decode(response.body, response.headers.get('Content-Encoding', 'identity')) x = re.split("\d\d\d:\d\d\/dus,", body.decode("utf-8")) for i in [i for i in x if i]: try: j = json.loads(i) handleJson(j) except ValueError: if i.find("online-level") > 0: print ("Fixed: ", i) j = json.loads(i[:i.rfind(']') + 1]) handleJson(j) else: print ("Err: ", i) def handleJson(jsonObj): if isinstance(jsonObj, list): if 'online-level' in jsonObj: typ = jsonObj[1]["LevelValues"][0]["Type"] value = jsonObj[1]["LevelValues"][0]["Values"] NmtId = jsonObj[1]["NmtId"] time = jsonObj[1]["Time"] q.append([typ, value, NmtId, time]) driver.response_interceptor = interceptor driver.get('https://dus-travis.dus.com/') while True: sleep(1) l = len(q) for i in range(1, l): a = q.pop() #print ("[", a[3], "]: ", "NmtId: ", a[2] , " Typ: ", a[0], " Wert: ", a[1]) print("Popped ",l," Messages")