@@ -20,6 +20,7 @@ import sys
2020import threading
2121from os.path import realpath, dirname
2222from babel.localedata import locale_identifiers
23+from urllib.parse import urlparse
2324from flask_babel import gettext
2425from operator import itemgetter
2526from searx import settings
@@ -289,3 +290,34 @@ def initialize_engines(engine_list):
289290 if init_fn:
290291 logger.debug('%s engine: Starting background initialization', engine_name)
291292 threading.Thread(target=engine_init, args=(engine_name, init_fn)).start()
293+
294+ _set_https_support_for_engine(engine)
295+
296+
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', {
301+ 'method': 'GET',
302+ 'headers': {},
303+ 'data': {},
304+ 'url': '',
305+ 'cookies': {},
306+ 'verify': True,
307+ 'auth': None,
308+ 'pageno': 1,
309+ 'time_range': None,
310+ 'language': '',
311+ 'safesearch': False,
312+ 'is_test': True,
313+ 'category': 'files',
314+ 'raise_for_status': True,
315+ })
316+
317+ if 'url' not in params:
318+ return
319+
320+ parsed_url = urlparse(params['url'])
321+ https_support = parsed_url.scheme == 'https'
322+
323+ setattr(engine, 'https_support', https_support)