summaryrefslogtreecommitdiff
path: root/searx/plugins/tracker_url_remover.py
diff options
context:
space:
mode:
authorMathieu Brunot <mathieu.brunot@monogramm.io>2019-10-16 19:30:02 +0200
committerGitHub <noreply@github.com>2019-10-16 19:30:02 +0200
commita51b2b6c20c1346748c09aec051d78f6822c580c (patch)
tree5f08fadc14de64e86c5582ebbdc928e4abe7475b /searx/plugins/tracker_url_remover.py
parent4d17d453bf99641797dcbfa1f1a35dd5b21dcab4 (diff)
parent12f42d1572311a56401637ac5c7dc66008eb979c (diff)
Merge branch 'master' into feature/accessibility
Diffstat (limited to 'searx/plugins/tracker_url_remover.py')
-rw-r--r--searx/plugins/tracker_url_remover.py29
1 files changed, 19 insertions, 10 deletions
diff --git a/searx/plugins/tracker_url_remover.py b/searx/plugins/tracker_url_remover.py
index 630c8a638..9e18867b9 100644
--- a/searx/plugins/tracker_url_remover.py
+++ b/searx/plugins/tracker_url_remover.py
@@ -17,10 +17,10 @@ along with searx. If not, see < http://www.gnu.org/licenses/ >.
from flask_babel import gettext
import re
-from searx.url_utils import urlunparse
+from searx.url_utils import urlunparse, parse_qsl, urlencode
-regexes = {re.compile(r'utm_[^&]+&?'),
- re.compile(r'(wkey|wemail)[^&]+&?'),
+regexes = {re.compile(r'utm_[^&]+'),
+ re.compile(r'(wkey|wemail)[^&]*'),
re.compile(r'&$')}
name = gettext('Tracker URL remover')
@@ -30,16 +30,25 @@ preference_section = 'privacy'
def on_result(request, search, result):
+ if 'parsed_url' not in result:
+ return True
+
query = result['parsed_url'].query
if query == "":
return True
-
- for reg in regexes:
- query = reg.sub('', query)
-
- if query != result['parsed_url'].query:
- result['parsed_url'] = result['parsed_url']._replace(query=query)
- result['url'] = urlunparse(result['parsed_url'])
+ parsed_query = parse_qsl(query)
+
+ changed = False
+ for i, (param_name, _) in enumerate(list(parsed_query)):
+ for reg in regexes:
+ if reg.match(param_name):
+ parsed_query.pop(i)
+ changed = True
+ break
+
+ if changed:
+ result['parsed_url'] = result['parsed_url']._replace(query=urlencode(parsed_query))
+ result['url'] = urlunparse(result['parsed_url'])
return True