Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
248 changes: 136 additions & 112 deletions background.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,15 @@ function clean_utm(requestDetails) {


return {

}
}

browser.webRequest.onBeforeRequest.addListener(
clean_utm,
{urls: ["<all_urls>"],
types:["main_frame"]},
["blocking"]
clean_utm, {
urls: ["<all_urls>"],
types: ["main_frame"]
}, ["blocking"]
);


Expand All @@ -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"]
);


Expand All @@ -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"]
);
});
8 changes: 8 additions & 0 deletions test_urls.md
Original file line number Diff line number Diff line change
Expand Up @@ -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