docs: def get_response(url, plugins, timeout=SPLASH_TIMEOUT):
      """
      Return response with HAR, inline scritps and software detected by JS matchers.
  
      :rtype: dict
  
      """
      lua_script = create_lua_script(plugins)
      lua = urllib.parse.quote_plus(lua_script)
      page_url = f'{SPLASH_URL}/execute?url={url}&timeout={timeout}&lua_source={lua}'
  
      try:
          with docker_container():
              logger.debug('[+] Sending request to Splash instance')
              res = requests.get(page_url)
      except requests.exceptions.ConnectionError:
          raise SplashError("Could not connect to Splash server {}".format(SPLASH_URL))
  
      logger.debug('[+] Response received')
  
      json_data = res.json()
  
      if res.status_code in ERROR_STATUS_CODES:
          raise SplashError(get_splash_error(json_data))
  
      softwares = json_data['softwares']
      scripts = json_data['scripts'].values()
      har = get_valid_har(json_data['har'])
  
      js_error = get_evaljs_error(json_data)
      if js_error:
          logger.debug('[+] WARNING: failed to eval JS matchers: %(n)s', {'n': js_error})
      else:
          logger.debug('[+] Detected %(n)d softwares from the DOM', {'n': len(softwares)})
      logger.debug('[+] Detected %(n)d scripts from the DOM', {'n': len(scripts)})
      logger.debug('[+] Final HAR has %(n)d valid entries', {'n': len(har)})
  
      return {'har': har, 'scripts': scripts, 'softwares': softwares}