From d3a795c7e748a1f97be860abfa36b736de618418 Mon Sep 17 00:00:00 2001 From: Markus Date: Sun, 15 Sep 2024 14:36:06 +0200 Subject: [PATCH] [fix] engine: qwant - detect captchaUrl and raise SearxEngineCaptchaException So far a CAPTCHA was not recognized in the response of the qwant engine and a SearxEngineAPIException was raised by mistake. With this patch a CAPTCHA redirect is recognized and the correct SearxEngineCaptchaException is raised. Closes: https://github.com/searxng/searxng/issues/3806 Signed-off-by: Markus --- searx/engines/qwant.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/searx/engines/qwant.py b/searx/engines/qwant.py index 989fe1445..c30018d85 100644 --- a/searx/engines/qwant.py +++ b/searx/engines/qwant.py @@ -49,7 +49,11 @@ from flask_babel import gettext import babel import lxml -from searx.exceptions import SearxEngineAPIException, SearxEngineTooManyRequestsException +from searx.exceptions import ( + SearxEngineAPIException, + SearxEngineTooManyRequestsException, + SearxEngineCaptchaException, +) from searx.network import raise_for_httperror from searx.enginelib.traits import EngineTraits @@ -187,6 +191,8 @@ def parse_web_api(resp): error_code = data.get('error_code') if error_code == 24: raise SearxEngineTooManyRequestsException() + if search_results.get("data", {}).get("error_data", {}).get("captchaUrl") is not None: + raise SearxEngineCaptchaException() msg = ",".join(data.get('message', ['unknown'])) raise SearxEngineAPIException(f"{msg} ({error_code})")