diff --git a/app/filter.py b/app/filter.py
index 9d41837..acdd570 100644
--- a/app/filter.py
+++ b/app/filter.py
@@ -3,6 +3,8 @@ import re
import urllib.parse as urlparse
from urllib.parse import parse_qs
+SKIP_ARGS = ['ref_src', 'utm']
+
class Filter:
def __init__(self, mobile=False, config=None):
@@ -67,13 +69,32 @@ class Filter:
if 'url?q=' in href:
# Strip unneeded arguments
- href = urlparse.urlparse(href)
- href = parse_qs(href.query)['q'][0]
+ result_link = urlparse.urlparse(href)
+ result_link = parse_qs(result_link.query)['q'][0]
+
+ parsed_link = urlparse.urlparse(result_link)
+ link_args = parse_qs(parsed_link.query)
+ safe_args = {}
+
+ for arg in link_args.keys():
+ if arg in SKIP_ARGS:
+ continue
+
+ safe_args[arg] = link_args[arg]
+
+ # Remove original link query and replace with filtered args
+ result_link = result_link.replace(parsed_link.query, '')
+ if len(safe_args) > 1:
+ result_link = result_link + urlparse.urlencode(safe_args)
+ else:
+ result_link = result_link.replace('?', '')
+
+ a['href'] = result_link
# Add no-js option
if self.nojs:
nojs_link = soup.new_tag('a')
- nojs_link['href'] = '/window?location=' + href
+ nojs_link['href'] = '/window?location=' + result_link
nojs_link['style'] = 'display:block;width:100%;'
nojs_link.string = 'NoJS Link: ' + nojs_link['href']
a.append(BeautifulSoup('