mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-09-07 16:37:02 +03:00
Improved stripTracking and strip amazon.com links
This commit is contained in:
parent
550dfb3459
commit
3d809b1faa
1 changed files with 8 additions and 5 deletions
|
|
@ -31,12 +31,12 @@ const
|
||||||
* https://github.com/M66B/FairEmail/blob/master/app/src/main/java/eu/faircode/email/UriHelper.java
|
* https://github.com/M66B/FairEmail/blob/master/app/src/main/java/eu/faircode/email/UriHelper.java
|
||||||
*/
|
*/
|
||||||
// eslint-disable-next-line max-len
|
// eslint-disable-next-line max-len
|
||||||
stripParams = /^(utm_|ec_|fbclid|mc_eid|mkt_tok|_hsenc|vero_id|oly_enc_id|oly_anon_id|__s|Referrer|mailing|elq|bch|trc|ref|correlation_id|e$)/i,
|
stripParams = /^(utm_|ec_|fbclid|mc_eid|mkt_tok|_hsenc|vero_id|oly_enc_id|oly_anon_id|__s|Referrer|mailing|elq|bch|trc|ref|correlation_id|e$|pd_|pf_)/i,
|
||||||
urlGetParam = (url, name) => new URL(url).searchParams.get(name) || url,
|
urlGetParam = (url, name) => new URL(url).searchParams.get(name) || url,
|
||||||
base64Url = data => atob(data.replace(/_/g,'/').replace(/-/g,'+')),
|
base64Url = data => atob(data.replace(/_/g,'/').replace(/-/g,'+')),
|
||||||
stripTracking = url => {
|
stripTracking = url => {
|
||||||
try {
|
try {
|
||||||
url = url
|
let nurl = url
|
||||||
.replace(/tracking\.(printabout\.nl[^?]+)\?.*/i, (...m) => m[1])
|
.replace(/tracking\.(printabout\.nl[^?]+)\?.*/i, (...m) => m[1])
|
||||||
.replace(/(zalando\.nl[^?]+)\?.*/i, (...m) => m[1])
|
.replace(/(zalando\.nl[^?]+)\?.*/i, (...m) => m[1])
|
||||||
.replace(/^.+(awstrack\.me|redditmail\.com)\/.+(https:%2F%2F[^/]+).*/i, (...m) => decodeURIComponent(m[2]))
|
.replace(/^.+(awstrack\.me|redditmail\.com)\/.+(https:%2F%2F[^/]+).*/i, (...m) => decodeURIComponent(m[2]))
|
||||||
|
|
@ -44,6 +44,8 @@ const
|
||||||
.replace(/^.+delivery-status\.com.+$/i, () => urlGetParam(url, 'fb'))
|
.replace(/^.+delivery-status\.com.+$/i, () => urlGetParam(url, 'fb'))
|
||||||
.replace(/^.+go\.dhlparcel\.nl.+\/([A-Za-z0-9_-]+)$/i, (...m) => base64Url(m[1]))
|
.replace(/^.+go\.dhlparcel\.nl.+\/([A-Za-z0-9_-]+)$/i, (...m) => base64Url(m[1]))
|
||||||
.replace(/^(.+mopinion\.com.+)\?.*$/i, (...m) => m[1])
|
.replace(/^(.+mopinion\.com.+)\?.*$/i, (...m) => m[1])
|
||||||
|
.replace(/^.+sellercentral\.amazon\.com\/nms\/redirect.+$/i, () => base64Url(urlGetParam(url, 'u')))
|
||||||
|
.replace(/^.+amazon\.com\/gp\/r\.html.+$/i, () => urlGetParam(url, 'U'))
|
||||||
// Mandrill
|
// Mandrill
|
||||||
.replace(/^.+\/track\/click\/.+\?p=.+$/i, () => {
|
.replace(/^.+\/track\/click\/.+\?p=.+$/i, () => {
|
||||||
let d = urlGetParam(url, 'p');
|
let d = urlGetParam(url, 'p');
|
||||||
|
|
@ -59,16 +61,17 @@ const
|
||||||
})
|
})
|
||||||
// Remove invalid URL characters
|
// Remove invalid URL characters
|
||||||
.replace(/[\s<>]+/gi, '');
|
.replace(/[\s<>]+/gi, '');
|
||||||
url = new URL(url);
|
nurl = new URL(nurl);
|
||||||
let s = url.searchParams;
|
let s = nurl.searchParams;
|
||||||
[...s.keys()].forEach(key => stripParams.test(key) && s.delete(key));
|
[...s.keys()].forEach(key => stripParams.test(key) && s.delete(key));
|
||||||
return url.toString();
|
return nurl.toString();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.dir({
|
console.dir({
|
||||||
error:e,
|
error:e,
|
||||||
url:url
|
url:url
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
return url;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const
|
export const
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue