Browse Source

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

Alexandre Flament 10 years ago
parent
commit
cde37be4f5
3 changed files with 13 additions and 2 deletions
  1. 3
    1
      searx/poolrequests.py
  2. 7
    0
      searx/settings.yml
  3. 3
    1
      searx/webapp.py

+ 3
- 1
searx/poolrequests.py View File

@@ -66,8 +66,10 @@ class SessionSinglePool(requests.Session):
66 66
 
67 67
 
68 68
 def request(method, url, **kwargs):
69
-    """same as requests/requests/api.py request(...) except it use SessionSinglePool"""
69
+    """same as requests/requests/api.py request(...) except it use SessionSinglePool and force proxies"""
70
+    global settings
70 71
     session = SessionSinglePool()
72
+    kwargs['proxies'] = settings.get('outgoing_proxies', None)
71 73
     response = session.request(method=method, url=url, **kwargs)
72 74
     session.close()
73 75
     return response

+ 7
- 0
searx/settings.yml View File

@@ -10,6 +10,13 @@ server:
10 10
     image_proxy : False # Proxying image results through searx
11 11
     default_locale : "" # Default interface locale - leave blank to detect from browser information or use codes from the 'locales' config section
12 12
 
13
+# uncomment below section if you want to use a proxy
14
+# see http://docs.python-requests.org/en/latest/user/advanced/#proxies
15
+# SOCKS proxies are not supported : see https://github.com/kennethreitz/requests/pull/478
16
+#outgoing_proxies :
17
+#    http : http://127.0.0.1:8080
18
+#    https: http://127.0.0.1:8080
19
+
13 20
 # uncomment below section only if you have more than one network interface
14 21
 # which can be the source of outgoing search requests
15 22
 #source_ips:

+ 3
- 1
searx/webapp.py View File

@@ -110,6 +110,7 @@ _category_names = (gettext('files'),
110 110
                    gettext('news'),
111 111
                    gettext('map'))
112 112
 
113
+outgoing_proxies = settings.get('outgoing_proxies', None)
113 114
 
114 115
 @babel.localeselector
115 116
 def get_locale():
@@ -638,7 +639,8 @@ def image_proxy():
638 639
     resp = requests.get(url,
639 640
                         stream=True,
640 641
                         timeout=settings['server'].get('request_timeout', 2),
641
-                        headers=headers)
642
+                        headers=headers,
643
+                        proxies=outgoing_proxies)
642 644
 
643 645
     if resp.status_code == 304:
644 646
         return '', resp.status_code