docs: def get_detection_results(url, timeout, metadata=False, save_har=False):
      """ Return results from detector.
  
      This function prepares the environment loading the plugins,
      getting the response and passing it to the detector.
  
      In case of errors, it raises exceptions to be handled externally.
  
      """
      plugins = load_plugins()
      if not plugins:
          raise NoPluginsError('No plugins found')
  
      logger.debug('[+] Starting detection with %(n)d plugins', {'n': len(plugins)})
  
      response = get_response(url, plugins, timeout)
  
      # Save HAR
      if save_har:
          fd, path = tempfile.mkstemp(suffix='.har')
          logger.info(f'Saving HAR file to {path}')
  
          with open(fd, 'w') as f:
              json.dump(response['har'], f)
  
      det = Detector(response, plugins, url)
      softwares = det.get_results(metadata=metadata)
  
      output = {
          'url': url,
          'softwares': softwares,
      }
  
      return output