@@ -2674,22 +2674,26 @@ def getproxies_registry():
2674
2674
# Returned as Unicode but problems if not converted to ASCII
2675
2675
proxyServer = str (winreg .QueryValueEx (internetSettings ,
2676
2676
'ProxyServer' )[0 ])
2677
- if '=' in proxyServer :
2678
- # Per-protocol settings
2679
- for p in proxyServer .split (';' ):
2680
- protocol , address = p .split ('=' , 1 )
2681
- # See if address has a type:// prefix
2682
- if not re .match ('(?:[^/:]+)://' , address ):
2683
- address = '%s://%s' % (protocol , address )
2684
- proxies [protocol ] = address
2685
- else :
2686
- # Use one setting for all protocols
2687
- if proxyServer [:5 ] == 'http:' :
2688
- proxies ['http' ] = proxyServer
2689
- else :
2690
- proxies ['http' ] = 'http://%s' % proxyServer
2691
- proxies ['https' ] = 'https://%s' % proxyServer
2692
- proxies ['ftp' ] = 'ftp://%s' % proxyServer
2677
+ if '=' not in proxyServer and ';' not in proxyServer :
2678
+ # Use one setting for all protocols.
2679
+ proxyServer = 'http={0};https={0};ftp={0}' .format (proxyServer )
2680
+ for p in proxyServer .split (';' ):
2681
+ protocol , address = p .split ('=' , 1 )
2682
+ # See if address has a type:// prefix
2683
+ if not re .match ('(?:[^/:]+)://' , address ):
2684
+ # Add type:// prefix to address without specifying type
2685
+ if protocol in ('http' , 'https' , 'ftp' ):
2686
+ # The default proxy type of Windows is HTTP
2687
+ address = 'http://' + address
2688
+ elif protocol == 'socks' :
2689
+ address = 'socks://' + address
2690
+ proxies [protocol ] = address
2691
+ # Use SOCKS proxy for HTTP(S) protocols
2692
+ if proxies .get ('socks' ):
2693
+ # The default SOCKS proxy type of Windows is SOCKS4
2694
+ address = re .sub (r'^socks://' , 'socks4://' , proxies ['socks' ])
2695
+ proxies ['http' ] = proxies .get ('http' ) or address
2696
+ proxies ['https' ] = proxies .get ('https' ) or address
2693
2697
internetSettings .Close ()
2694
2698
except (OSError , ValueError , TypeError ):
2695
2699
# Either registry key not found etc, or the value in an
0 commit comments