forked from jparise/chrome-utm-stripper
-
Notifications
You must be signed in to change notification settings - Fork 1
/
background.js
32 lines (30 loc) · 1.21 KB
/
background.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/*
* Pattern matching the prefix of at least one stripped query string
* parameter. We'll search the query string portion of the URL for this
* pattern to determine if there's any stripping work to do.
*/
var searchPattern = new RegExp('utm_|clid|_hs|icid|igshid|mc_|mkt_tok', 'i');
/*
* Pattern matching the query string parameters (key=value) that will be
* stripped from the final URL.
*/
var replacePattern = new RegExp(
'([?&]' +
'(icid|mkt_tok|(g|fb)clid|igshid|_hs(enc|mi)|mc_[ce]id|utm_(source|medium|term|campaign|content|cid|reader|referrer|name|social|social-type))' +
'=[^&#]*)',
'ig');
chrome.webRequest.onBeforeRequest.addListener(function(details) {
var url = details.url;
var queryStringIndex = url.indexOf('?');
if (url.search(searchPattern) > queryStringIndex) {
var stripped = url.replace(replacePattern, '');
if (stripped.charAt(queryStringIndex) === '&') {
stripped = stripped.substr(0, queryStringIndex) + '?' +
stripped.substr(queryStringIndex + 1)
}
if (stripped != url) {
return {redirectUrl: stripped};
}
}
},
{urls: ['https://*/*?*', 'http://*/*?*'], types: ['main_frame']}, ['blocking']);