diff options
| author | Alexandre Flament <alex@al-f.net> | 2022-02-18 20:55:40 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-02-18 20:55:40 +0100 |
| commit | bf2a2ed48faf511a609d3b084b02066d69549015 (patch) | |
| tree | 5f916297681efb4b0b213e2ce8a01b0c0e3a3541 /searx/plugins | |
| parent | c81b46150ec12b7d936fb218f447e1651826ff2a (diff) | |
| parent | 761885682d45b8a27c92eaec8ba769b03c22c9b1 (diff) | |
Merge pull request #882 from return42/fix-873
[fix] replace embedded HTML by data_src
Diffstat (limited to 'searx/plugins')
| -rw-r--r-- | searx/plugins/hostname_replace.py | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/searx/plugins/hostname_replace.py b/searx/plugins/hostname_replace.py index 778b84615..039aadb91 100644 --- a/searx/plugins/hostname_replace.py +++ b/searx/plugins/hostname_replace.py @@ -1,7 +1,7 @@ # SPDX-License-Identifier: AGPL-3.0-or-later import re -from urllib.parse import urlunparse +from urllib.parse import urlunparse, urlparse from searx import settings from searx.plugins import logger from flask_babel import gettext @@ -17,16 +17,30 @@ replacements = {re.compile(p): r for (p, r) in settings[plugin_id].items()} if p logger = logger.getChild(plugin_id) parsed = 'parsed_url' +_url_fields = ['iframe_src', 'audio_src'] def on_result(request, search, result): - if parsed not in result: - return True + for (pattern, replacement) in replacements.items(): - if pattern.search(result[parsed].netloc): - if not replacement: - return False - result[parsed] = result[parsed]._replace(netloc=pattern.sub(replacement, result[parsed].netloc)) - result['url'] = urlunparse(result[parsed]) + + if parsed in result: + if pattern.search(result[parsed].netloc): + # to keep or remove this result from the result list depends + # (only) on the 'parsed_url' + if not replacement: + return False + result[parsed] = result[parsed]._replace(netloc=pattern.sub(replacement, result[parsed].netloc)) + result['url'] = urlunparse(result[parsed]) + + for url_field in _url_fields: + if result.get(url_field): + url_src = urlparse(result[url_field]) + if pattern.search(url_src.netloc): + if not replacement: + del result[url_field] + else: + url_src = url_src._replace(netloc=pattern.sub(replacement, url_src.netloc)) + result[url_field] = urlunparse(url_src) return True |