92 """The URL arguments are normalized and cleaned of tracker parameters.
94 Returns bool ``True`` to use URL unchanged (``False`` to ignore URL).
95 If URL should be modified, the returned string is the new URL to use.
99 parsed_new_url = urlparse(url=new_url)
101 for rule
in self.
rules():
103 if not re.match(rule[self.
Fields.url_regexp], new_url):
108 for pattern
in rule[self.
Fields.url_ignore]:
109 if re.match(pattern, new_url):
121 query_args: list[tuple[str, str]] = list(parse_qsl(parsed_new_url.query))
123 for name, val
in query_args.copy():
125 for pattern
in rule[self.
Fields.del_args]:
126 if re.match(pattern, name):
127 log.debug(
"TRACKER_PATTERNS: %s remove tracker arg: %s='%s'", parsed_new_url.netloc, name, val)
128 query_args.remove((name, val))
130 parsed_new_url = parsed_new_url._replace(query=urlencode(query_args))
131 new_url = urlunparse(parsed_new_url)