diff --git a/lib/core/option.py b/lib/core/option.py index 0e4a8878a..dc32272ae 100644 --- a/lib/core/option.py +++ b/lib/core/option.py @@ -25,6 +25,7 @@ import lib.core.threads from extra.keepalive import keepalive from extra.oset.pyoset import oset +from extra.socks import socks from lib.controller.checks import checkConnection from lib.core.common import Backend from lib.core.common import dataToStdout @@ -1674,11 +1675,21 @@ def __setTrafficOutputFP(): conf.trafficFP = openFile(conf.trafficFile, "w+") -def __setTorProxySettings(): +def __setTorSocksProxySettings(): if not conf.tor: return - infoMsg = "setting Tor proxy settings" + infoMsg = "setting Tor SOCKS proxy settings" + logger.info(infoMsg) + + socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, 'localhost', 9050) + socks.wrapmodule(urllib2) + +def __setTorHTTPProxySettings(): + if not conf.tor: + return + + infoMsg = "setting Tor HTTP proxy settings" logger.info(infoMsg) found = None @@ -1852,7 +1863,7 @@ def init(inputOptions=AttribDict(), overrideOptions=False): __cleanupOptions() __checkDependencies() __basicOptionValidation() - __setTorProxySettings() + __setTorSocksProxySettings() __setMultipleTargets() __setTamperingFunctions() __setTrafficOutputFP() diff --git a/lib/request/connect.py b/lib/request/connect.py index d1d8baa96..5e2fc2c5c 100644 --- a/lib/request/connect.py +++ b/lib/request/connect.py @@ -15,7 +15,9 @@ import urllib2 import urlparse import traceback +from extra.socks.socks import GeneralProxyError from extra.multipart import multipartpost + from lib.core.agent import agent from lib.core.common import asciifyUrl from lib.core.common import average @@ -92,10 +94,20 @@ class Connect: warnMsg += "lower the --time-sec value (e.g. --time-sec=2)" singleTimeWarnMessage(warnMsg) elif kb.originalPage is None: - warnMsg = "if the problem persists please check that the provided " - warnMsg += "target url is valid. If it is, you can try to rerun " - warnMsg += "with the --random-agent switch turned on " - warnMsg += "and/or proxy switches (--ignore-proxy, --proxy,...)" + if conf.tor: + warnMsg = "please make sure that you have " + warnMsg += "Tor installed and running so " + warnMsg += "you could successfully use " + warnMsg += "--tor switch " + if IS_WIN: + warnMsg += "(e.g. https://www.torproject.org/download/download.html.en)" + else: + warnMsg += "(e.g. https://help.ubuntu.com/community/Tor)" + else: + warnMsg = "if the problem persists please check that the provided " + warnMsg += "target url is valid. If it is, you can try to rerun " + warnMsg += "with the --random-agent switch turned on " + warnMsg += "and/or proxy switches (--ignore-proxy, --proxy,...)" singleTimeWarnMessage(warnMsg) elif conf.threads > 1: warnMsg = "if the problem persists please try to lower " @@ -440,7 +452,7 @@ class Connect: processResponse(page, responseHeaders) return page, responseHeaders, code - except (urllib2.URLError, socket.error, socket.timeout, httplib.BadStatusLine, httplib.IncompleteRead), e: + except (urllib2.URLError, socket.error, socket.timeout, httplib.BadStatusLine, httplib.IncompleteRead, GeneralProxyError), e: tbMsg = traceback.format_exc() if "no host given" in tbMsg: