diff --git a/searx/poolrequests.py b/searx/poolrequests.py index b74d43a02..e2a757665 100644 --- a/searx/poolrequests.py +++ b/searx/poolrequests.py @@ -66,8 +66,10 @@ class SessionSinglePool(requests.Session): def request(method, url, **kwargs): - """same as requests/requests/api.py request(...) except it use SessionSinglePool""" + """same as requests/requests/api.py request(...) except it use SessionSinglePool and force proxies""" + global settings session = SessionSinglePool() + kwargs['proxies'] = settings.get('outgoing_proxies', None) response = session.request(method=method, url=url, **kwargs) session.close() return response diff --git a/searx/settings.yml b/searx/settings.yml index f37c56b26..cf7680090 100644 --- a/searx/settings.yml +++ b/searx/settings.yml @@ -10,6 +10,13 @@ server: image_proxy : False # Proxying image results through searx default_locale : "" # Default interface locale - leave blank to detect from browser information or use codes from the 'locales' config section +# uncomment below section if you want to use a proxy +# see http://docs.python-requests.org/en/latest/user/advanced/#proxies +# SOCKS proxies are not supported : see https://github.com/kennethreitz/requests/pull/478 +#outgoing_proxies : +# http : http://127.0.0.1:8080 +# https: http://127.0.0.1:8080 + # uncomment below section only if you have more than one network interface # which can be the source of outgoing search requests #source_ips: diff --git a/searx/webapp.py b/searx/webapp.py index 0d06fbe0c..41f579551 100644 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -111,6 +111,8 @@ _category_names = (gettext('files'), gettext('news'), gettext('map')) +outgoing_proxies = settings.get('outgoing_proxies', None) + @babel.localeselector def get_locale(): @@ -645,7 +647,8 @@ def image_proxy(): resp = requests.get(url, stream=True, timeout=settings['server'].get('request_timeout', 2), - headers=headers) + headers=headers, + proxies=outgoing_proxies) if resp.status_code == 304: return '', resp.status_code