[enh] basic support for http proxy (see #236)

This commit is contained in:
Alexandre Flament 2015-04-25 11:44:53 +02:00
parent 33516256fd
commit cde37be4f5
3 changed files with 13 additions and 2 deletions

View File

@ -66,8 +66,10 @@ class SessionSinglePool(requests.Session):
def request(method, url, **kwargs): 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() session = SessionSinglePool()
kwargs['proxies'] = settings.get('outgoing_proxies', None)
response = session.request(method=method, url=url, **kwargs) response = session.request(method=method, url=url, **kwargs)
session.close() session.close()
return response return response

View File

@ -10,6 +10,13 @@ server:
image_proxy : False # Proxying image results through searx 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 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 # uncomment below section only if you have more than one network interface
# which can be the source of outgoing search requests # which can be the source of outgoing search requests
#source_ips: #source_ips:

View File

@ -110,6 +110,7 @@ _category_names = (gettext('files'),
gettext('news'), gettext('news'),
gettext('map')) gettext('map'))
outgoing_proxies = settings.get('outgoing_proxies', None)
@babel.localeselector @babel.localeselector
def get_locale(): def get_locale():
@ -638,7 +639,8 @@ def image_proxy():
resp = requests.get(url, resp = requests.get(url,
stream=True, stream=True,
timeout=settings['server'].get('request_timeout', 2), timeout=settings['server'].get('request_timeout', 2),
headers=headers) headers=headers,
proxies=outgoing_proxies)
if resp.status_code == 304: if resp.status_code == 304:
return '', resp.status_code return '', resp.status_code