diff --git a/background.js b/background.js index 570310c..b410bc7 100644 --- a/background.js +++ b/background.js @@ -27,14 +27,15 @@ function clean_utm(requestDetails) { return { + } } browser.webRequest.onBeforeRequest.addListener( - clean_utm, - {urls: [""], - types:["main_frame"]}, - ["blocking"] + clean_utm, { + urls: [""], + types: ["main_frame"] + }, ["blocking"] ); @@ -44,90 +45,95 @@ function clean_amazon(requestDetails) { let slash_ref_index = url.indexOf("/ref=", slash_d_index + 2); if (slash_ref_index > 0 && url.length > slash_ref_index + 1) { var new_url = url.substring(0, slash_ref_index + 1); - if (new_url != url) { // try to avoid infinite redirect loops that might arise - //console.info("Redirecting from: ", url, " to:", new_url); - return {redirectUrl: new_url}; + if (new_url != url) { // try to avoid infinite redirect loops that might arise + // console.info("Redirecting from: ", url, " to:", new_url); + return { + redirectUrl: new_url + }; } } else { url = new URL(url); if (url.search.length > 0) { url.search = ""; - //console.info("Clean url to:", url.href); - return {redirectUrl: url.href}; + // console.info("Clean url to:", url.href); + return { + redirectUrl: url.href + }; } } } browser.webRequest.onBeforeRequest.addListener( - clean_amazon, - {urls: [ - "*://*.amazon.com/d/*", - "*://*.amazon.ca/d/*", - "*://*.amazon.co.jp/d/*", - "*://*.amazon.co.uk/d/*", - "*://*.amazon.cn/d/*", - "*://*.amazon.de/d/*", - "*://*.amazon.fr/d/*", - "*://*.amazon.in/d/*", - "*://*.amazon.it/d/*", - "*://*.amazon.com.mx/d/*", - "*://*.amazon.com.au/d/*", - "*://*.amazon.com.br/d/*", - - "*://*.amazon.com/dp/*", - "*://*.amazon.ca/dp/*", - "*://*.amazon.co.jp/dp/*", - "*://*.amazon.co.uk/dp/*", - "*://*.amazon.cn/dp/*", - "*://*.amazon.de/dp/*", - "*://*.amazon.fr/dp/*", - "*://*.amazon.in/dp/*", - "*://*.amazon.it/dp/*", - "*://*.amazon.com.mx/dp/*", - "*://*.amazon.com.au/dp/*", - "*://*.amazon.com.br/dp/*", - - "*://*.amazon.com/gp/aw/d/*", - "*://*.amazon.ca/gp/aw/d/*", - "*://*.amazon.co.jp/gp/aw/d/*", - "*://*.amazon.co.uk/gp/aw/d/*", - "*://*.amazon.cn/gp/aw/d/*", - "*://*.amazon.de/gp/aw/d/*", - "*://*.amazon.fr/gp/aw/d/*", - "*://*.amazon.in/gp/aw/d/*", - "*://*.amazon.it/gp/aw/d/*", - "*://*.amazon.com.mx/gp/aw/d/*", - "*://*.amazon.com.au/gp/aw/d/*", - "*://*.amazon.com.br/gp/aw/d/*", - - - "*://*.amazon.com/*/dp/*", - "*://*.amazon.ca/*/dp/*", - "*://*.amazon.co.jp/*/dp/*", - "*://*.amazon.co.uk/*/dp/*", - "*://*.amazon.cn/*/dp/*", - "*://*.amazon.de/*/dp/*", - "*://*.amazon.fr/*/dp/*", - "*://*.amazon.in/*/dp/*", - "*://*.amazon.it/*/dp/*", - "*://*.amazon.com.mx/*/dp/*", - "*://*.amazon.com.au/*/dp/*", - "*://*.amazon.com.br/*/dp/*", - - "*://*.amazon.com/gp/product/*", - "*://*.amazon.ca/gp/product/*", - "*://*.amazon.co.jp/gp/product/*", - "*://*.amazon.co.uk/gp/product/*", - "*://*.amazon.cn/gp/product/*", - "*://*.amazon.de/gp/product/*", - "*://*.amazon.fr/gp/product/*", - "*://*.amazon.in/gp/product/*", - "*://*.amazon.it/gp/product/*", - "*://*.amazon.com.mx/gp/product/*", - "*://*.amazon.com.au/gp/product/*", - "*://*.amazon.com.br/gp/product/*", - ], types: ["main_frame"]}, - ["blocking"] + clean_amazon, { + urls: [ + "*://*.amazon.com/d/*", + "*://*.amazon.ca/d/*", + "*://*.amazon.co.jp/d/*", + "*://*.amazon.co.uk/d/*", + "*://*.amazon.cn/d/*", + "*://*.amazon.de/d/*", + "*://*.amazon.fr/d/*", + "*://*.amazon.in/d/*", + "*://*.amazon.it/d/*", + "*://*.amazon.com.mx/d/*", + "*://*.amazon.com.au/d/*", + "*://*.amazon.com.br/d/*", + + "*://*.amazon.com/dp/*", + "*://*.amazon.ca/dp/*", + "*://*.amazon.co.jp/dp/*", + "*://*.amazon.co.uk/dp/*", + "*://*.amazon.cn/dp/*", + "*://*.amazon.de/dp/*", + "*://*.amazon.fr/dp/*", + "*://*.amazon.in/dp/*", + "*://*.amazon.it/dp/*", + "*://*.amazon.com.mx/dp/*", + "*://*.amazon.com.au/dp/*", + "*://*.amazon.com.br/dp/*", + + "*://*.amazon.com/gp/aw/d/*", + "*://*.amazon.ca/gp/aw/d/*", + "*://*.amazon.co.jp/gp/aw/d/*", + "*://*.amazon.co.uk/gp/aw/d/*", + "*://*.amazon.cn/gp/aw/d/*", + "*://*.amazon.de/gp/aw/d/*", + "*://*.amazon.fr/gp/aw/d/*", + "*://*.amazon.in/gp/aw/d/*", + "*://*.amazon.it/gp/aw/d/*", + "*://*.amazon.com.mx/gp/aw/d/*", + "*://*.amazon.com.au/gp/aw/d/*", + "*://*.amazon.com.br/gp/aw/d/*", + + + "*://*.amazon.com/*/dp/*", + "*://*.amazon.ca/*/dp/*", + "*://*.amazon.co.jp/*/dp/*", + "*://*.amazon.co.uk/*/dp/*", + "*://*.amazon.cn/*/dp/*", + "*://*.amazon.de/*/dp/*", + "*://*.amazon.fr/*/dp/*", + "*://*.amazon.in/*/dp/*", + "*://*.amazon.it/*/dp/*", + "*://*.amazon.com.mx/*/dp/*", + "*://*.amazon.com.au/*/dp/*", + "*://*.amazon.com.br/*/dp/*", + + "*://*.amazon.com/gp/product/*", + "*://*.amazon.ca/gp/product/*", + "*://*.amazon.co.jp/gp/product/*", + "*://*.amazon.co.uk/gp/product/*", + "*://*.amazon.cn/gp/product/*", + "*://*.amazon.de/gp/product/*", + "*://*.amazon.fr/gp/product/*", + "*://*.amazon.in/gp/product/*", + "*://*.amazon.it/gp/product/*", + "*://*.amazon.com.mx/gp/product/*", + "*://*.amazon.com.au/gp/product/*", + "*://*.amazon.com.br/gp/product/*", + ], + types: ["main_frame"] + }, ["blocking"] ); @@ -136,51 +142,69 @@ function remove_searchparams(requestDetails) { if (url.search.length > 0) { url.search = ""; //console.info("Clean url to:", url.href); - return {redirectUrl: url.href}; + return { + redirectUrl: url.href + }; } } browser.webRequest.onBeforeRequest.addListener( - remove_searchparams, - { + remove_searchparams, { urls: [ "*://*.aliexpress.com/item/*.html*", "*://*.aliexpress.com/store/product/*.html*", - ], types: ["main_frame"] + ], + types: ["main_frame"] }, ["blocking"] ); -function build_redirect_to_query_param(query_param_name){ - const redirect_to_get_param = function(requestDetails){ - const search_params = new URLSearchParams(new URL(requestDetails.url).search); - const real_url_from_param = search_params.get(query_param_name); - if (real_url_from_param){ - // console.log('Redirecting to ' + real_url_from_param); - return {redirectUrl: real_url_from_param}; +function build_redirect_to_query_param(query_param_name) { + const redirect_to_get_param = function (requestDetails) { + const search_params = new URLSearchParams(new URL(requestDetails.url).search); + const real_url_from_param = search_params.get(query_param_name); + if (real_url_from_param) { + // console.log('Redirecting to ' + real_url_from_param); + return { + redirectUrl: real_url_from_param + }; + } } - } - return redirect_to_get_param; + return redirect_to_get_param; } -const urls_to_param_mappers = [ - { - urls: ["*://l.facebook.com/*"], - param_name: 'u' - }, - { - urls: ["*://out.reddit.com/*"] - }, - { - urls: ["*://steamcommunity.com/linkfilter/*"] - } +const urls_to_param_mappers = [{ + urls: ["*://l.facebook.com/*"], + param_name: 'u' + }, + { + urls: ["*://out.reddit.com/*"] + }, + { + urls: ["*://steamcommunity.com/linkfilter/*"] + }, + { + urls: ["*://l.instagram.com/*"], + param_name: 'u' + }, + { + urls: ["*://t.umblr.com/*"], + param_name: 'z' + }, + { + urls: ["*://sys.4chan.org/derefer?*"] + }, + { + urls: ["*://www.youtube.com/redirect?*"], + param_name: 'q' + }, ]; -urls_to_param_mappers.forEach(function(listenerConfig) { - const param_name = listenerConfig.param_name ? listenerConfig.param_name : 'url'; - // console.log('Mapping ' + listenerConfig.urls + ' to param name ' + param_name); - browser.webRequest.onBeforeRequest.addListener( - build_redirect_to_query_param(param_name), { - urls: listenerConfig.urls, - types: ["main_frame"] - }, ["blocking"] - ); -}); +urls_to_param_mappers.forEach(function (listenerConfig) { + const param_name = listenerConfig.param_name ? listenerConfig.param_name : 'url'; + // console.log('Mapping ' + listenerConfig.urls + ' to param name ' + param_name); + browser.webRequest.onBeforeRequest.addListener( + build_redirect_to_query_param(param_name), { + urls: listenerConfig.urls, + types: ["main_frame"] + }, ["blocking"] + ); +}); \ No newline at end of file diff --git a/test_urls.md b/test_urls.md index 2d4029d..48c0dec 100644 --- a/test_urls.md +++ b/test_urls.md @@ -9,3 +9,11 @@ https://l.facebook.com/l.php?u=https%3A%2F%2Fwww.fsf.org%2Fcampaigns%2F&h=ATP1kf https://out.reddit.com/t3_5pq7qd?url=https%3A%2F%2Finternethealthreport.org%2Fv01%2F&token=AQAAZV6JWHBBnIcVjV1wvxVg5gKyCQQSdUhGIvuEUmdPZhxhm8kH&app_name=reddit.com https://steamcommunity.com/linkfilter/?url=https://getfedora.org/ + +http://l.instagram.com/?u=http%3A%2F%2Fwww.espn.com%2F&e=ATPKY26Z5_uyeX4Ctrg1qpchVeS_WrWuUxIc0ZOOkw0D5eKJLKlZeUr8JTMqBKo + +http://t.umblr.com/redirect?z=http%3A%2F%2Fwww.syfy.com%2Fsyfywire%2Fastronomers-discover-a-new-type-of-star-blaps&t=OWVjZWQxNWMyYjgzMDhmMzQwODIzYzYzNWZiZGNmYzg3YzM4YmU5YyxjR0tuNWV0TQ%3D%3D&b=t%3ABczG7bf4maOuK2EGQxAofw&p=http%3A%2F%2Felimik.tumblr.com%2Fpost%2F164722605832&m=1 + +https://sys.4chan.org/derefer?url=https%3A%2F%2Fbugzilla.mozilla.org%2Fshow_bug.cgi%3Fid%3D863246 + +https://www.youtube.com/redirect?event=desc&q=http%3A%2F%2Fteamcoco.com%2Fvideo&redir_token=ChYY8dsZLMAP7sJpm9HsMdgY2bF8MTUwNTU4MTg2MUAxNTA1NDk1NDYx \ No newline at end of file