@@ -20,6 +20,7 @@ import sys
20import threading
20import threading
21from os.path import realpath, dirname
21from os.path import realpath, dirname
22from babel.localedata import locale_identifiers
22from babel.localedata import locale_identifiers
23+from urllib.parse import urlparse
23from flask_babel import gettext
24from flask_babel import gettext
24from operator import itemgetter
25from operator import itemgetter
25from searx import settings
26from searx import settings
@@ -289,3 +290,34 @@ def initialize_engines(engine_list):
289 if init_fn:
290 if init_fn:
290 logger.debug('%s engine: Starting background initialization', engine_name)
291 logger.debug('%s engine: Starting background initialization', engine_name)
291 threading.Thread(target=engine_init, args=(engine_name, init_fn)).start()
292 threading.Thread(target=engine_init, args=(engine_name, init_fn)).start()
294+ _set_https_support_for_engine(engine)
297+def _set_https_support_for_engine(engine):
298+ # check HTTPS support if it is not disabled
299+ if not engine.offline and not hasattr(engine, 'https_support'):
300+ params = engine.request('http_test', {
311+ 'safesearch': False,
313+ 'category': 'files',
314+ 'raise_for_status': True,
317+ if 'url' not in params:
320+ parsed_url = urlparse(params['url'])
321+ https_support = parsed_url.scheme == 'https'
323+ setattr(engine, 'https_support', https_support)