on master help sign in
[fix] autocomplete encoding
commit8e2d996e273f58d96870d1eef45139c924434236 authorAdam Tauber <asciimoo@gmail.com> dateSat 29 Mar 2014, 17:04 (13 years ago) parent879bac8
2 files changed+12−13
searx/autocomplete.py+10−7 searx/webapp.py+2−6
searx/autocomplete.py+10−7
@@ -1,13 +1,15 @@
11from lxml import etree
22from requests import get
33from json import loads
4+from urllib import urlencode
45
56
67def dbpedia(query):
78 # dbpedia autocompleter
8− autocomplete_url = 'http://lookup.dbpedia.org/api/search.asmx/KeywordSearch?QueryString={q}' # noqa
9+ autocomplete_url = 'http://lookup.dbpedia.org/api/search.asmx/KeywordSearch?' # noqa
910
10− response = get(autocomplete_url.format(q=query))
11+ response = get(autocomplete_url
12+ + urlencode(dict(QueryString=query)))
1113
1214 results = []
1315
@@ -21,14 +23,15 @@ def dbpedia(query):
2123
2224def google(query):
2325 # google autocompleter
24− autocomplete_url = 'http://suggestqueries.google.com/complete/search?client=toolbar&q={q}' # noqa
26+ autocomplete_url = 'http://suggestqueries.google.com/complete/search?client=toolbar&' # noqa
2527
26− response = get(autocomplete_url.format(q=query))
28+ response = get(autocomplete_url
29+ + urlencode(dict(q=query)))
2730
2831 results = []
2932
3033 if response.ok:
31− dom = etree.fromstring(response.content)
34+ dom = etree.fromstring(response.text)
3235 results = dom.xpath('//suggestion/@data')
3336
3437 return results
@@ -36,9 +39,9 @@ def google(query):
3639
3740def wikipedia(query):
3841 # wikipedia autocompleter
39− url = 'https://en.wikipedia.org/w/api.php?action=opensearch&search={q}&limit=10&namespace=0&format=json' # noqa
42+ url = 'https://en.wikipedia.org/w/api.php?action=opensearch&{0}&limit=10&namespace=0&format=json' # noqa
4043
41− resp = loads(get(url.format(q=query)).text)
44+ resp = loads(get(url.format(urlencode(dict(q=query)))).text)
4245 return resp[1]
4346
4447
searx/webapp.py+2−6
@@ -252,7 +252,7 @@ def autocompleter():
252252 request_data = request.args
253253
254254 # TODO fix XSS-vulnerability
255− query = request_data.get('q')
255+ query = request_data.get('q', '').encode('utf-8')
256256
257257 if not query:
258258 return
@@ -262,11 +262,7 @@ def autocompleter():
262262 if not completer:
263263 return
264264
265− try:
266− results = completer(query)
267− except Exception, e:
268− print e
269− results = []
265+ results = completer(query)
270266
271267 if request_data.get('format') == 'x-suggestions':
272268 return Response(json.dumps([query, results]),