| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 | '''searx is free software: you can redistribute it and/or modifyit under the terms of the GNU Affero General Public License as published bythe Free Software Foundation, either version 3 of the License, or(at your option) any later version.searx is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU Affero General Public License for more details.You should have received a copy of the GNU Affero General Public Licensealong with searx. If not, see < http://www.gnu.org/licenses/ >.(C) 2015 by Adam Tauber, <asciimoo@gmail.com>'''from flask_babel import gettextimport refrom urllib.parse import urlunparse, parse_qsl, urlencoderegexes = {re.compile(r'utm_[^&]+'),           re.compile(r'(wkey|wemail)[^&]*'),           re.compile(r'(_hsenc|_hsmi|hsCtaTracking|__hssc|__hstc|__hsfp)[^&]*'),           re.compile(r'&$')}name = gettext('Tracker URL remover')description = gettext('Remove trackers arguments from the returned URL')default_on = Truepreference_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    parsed_query = parse_qsl(query)    changes = 0    for i, (param_name, _) in enumerate(list(parsed_query)):        for reg in regexes:            if reg.match(param_name):                parsed_query.pop(i - changes)                changes += 1                result['parsed_url'] = result['parsed_url']._replace(query=urlencode(parsed_query))                result['url'] = urlunparse(result['parsed_url'])                break    return True
 |