Fixed autoproxy bug added getproxies() proxy detection

This commit is contained in:
shellster 2016-04-12 15:48:58 -07:00
parent 6f942ce320
commit 3bbdb497d2
1 changed files with 21 additions and 3 deletions

View File

@ -12,6 +12,8 @@ import os
import socket
import time
import subprocess
import urllib
try:
from urllib import request as urllib
except ImportError:
@ -95,9 +97,26 @@ def get_proxies(wpad_timeout=600):
env_proxy=os.environ.get('HTTP_PROXY')
if env_proxy:
user, passwd, proxy=re.match("^(?:https?://)?(?:(?P<user>\w+):?(?P<password>\w*)@)?(?P<proxy_addr>\S+:[0-9]+)$","http://proxy.domain.com:3128").groups()
user, passwd, proxy=re.match("^(?:https?://)?(?:(?P<user>\w+):?(?P<password>\w*)@)?(?P<proxy_addr>\S+:[0-9]+)$",env_proxy).groups()
yield ('HTTP', proxy, user, passwd)
try:
python_proxies = urllib.getproxies()
except:
python_proxies = urllib.request.getproxies()
if len(python_proxies) > 0:
for key in python_proxies:
if key.upper() in ('HTTP', 'HTTPS', 'SOCKS') and python_proxies[key] != '':
user, passwd, proxy=re.match("^(?:https?://)?(?:(?P<user>\w+):?(?P<password>\w*)@)?(?P<proxy_addr>\S+:[0-9]+)$",python_proxies[key]).groups()
if key.upper() == 'SOCKS':
key = 'SOCKS4'
elif key.upper() == 'HTTPS':
key = 'HTTP'
yield(key.upper(), proxy, user, passwd)
if last_wpad is None or time.time()-last_wpad > wpad_timeout: # to avoid flooding the network with wpad requests :)
last_wpad=time.time()
try:
@ -111,7 +130,6 @@ def get_proxies(wpad_timeout=600):
pass
class AutoProxyLauncher(BaseLauncher):
"""
Automatically search a HTTP/SOCKS proxy on the system and use that proxy with the specified TCP transport.