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 socket
import time import time
import subprocess import subprocess
import urllib
try: try:
from urllib import request as urllib from urllib import request as urllib
except ImportError: except ImportError:
@ -92,12 +94,29 @@ def get_proxies(wpad_timeout=600):
except Exception: except Exception:
pass pass
env_proxy=os.environ.get('HTTP_PROXY') env_proxy=os.environ.get('HTTP_PROXY')
if env_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) 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 :) if last_wpad is None or time.time()-last_wpad > wpad_timeout: # to avoid flooding the network with wpad requests :)
last_wpad=time.time() last_wpad=time.time()
try: try:
@ -111,7 +130,6 @@ def get_proxies(wpad_timeout=600):
pass pass
class AutoProxyLauncher(BaseLauncher): class AutoProxyLauncher(BaseLauncher):
""" """
Automatically search a HTTP/SOCKS proxy on the system and use that proxy with the specified TCP transport. Automatically search a HTTP/SOCKS proxy on the system and use that proxy with the specified TCP transport.