docs: def FindProxies():
    """Tries to find proxies by interrogating all the user's settings.
  
    This function is a modified urillib.getproxies_registry() from the
    standard library. We just store the proxy value in the environment
    for urllib to find it.
  
    TODO(user): Iterate through all the possible values if one proxy
    fails, in case more than one proxy is specified in different users
    profiles.
  
    Returns:
      A list of proxies.
    """
  
    proxies = []
    for i in range(0, 100):
      try:
        sid = winreg.EnumKey(winreg.HKEY_USERS, i)
      except OSError:
        break
  
      try:
        subkey = (
            sid + "\\Software\\Microsoft\\Windows"
            "\\CurrentVersion\\Internet Settings")
  
        internet_settings = winreg.OpenKey(winreg.HKEY_USERS, subkey)
  
        proxy_enable = winreg.QueryValueEx(internet_settings, "ProxyEnable")[0]
  
        if proxy_enable:
          # Returned as Unicode but problems if not converted to ASCII
          proxy_server = str(
              winreg.QueryValueEx(internet_settings, "ProxyServer")[0])
          if "=" in proxy_server:
            # Per-protocol settings
            for p in proxy_server.split(";"):
              protocol, address = p.split("=", 1)
              # See if address has a type:// prefix
  
              if not re.match("^([^/:]+)://", address):
                address = "%s://%s" % (protocol, address)
  
              proxies.append(address)
          else:
            # Use one setting for all protocols
            if proxy_server[:5] == "http:":
              proxies.append(proxy_server)
            else:
              proxies.append("http://%s" % proxy_server)
  
        internet_settings.Close()
  
      except (OSError, ValueError, TypeError):
        continue
  
    logging.debug("Found proxy servers: %s", proxies)
  
    return proxies