From 628faf0e85919f5eea64e1ac40bf0bd781708e98 Mon Sep 17 00:00:00 2001 From: Kevin R Date: Tue, 7 Jun 2022 13:14:11 +0200 Subject: [PATCH] Added new ETag filtering --- CHANGELOG.md | 10 ++++++++++ core_js/eTagFilter.js | 23 +++++++++++++++-------- core_js/storage.js | 2 +- manifest.json | 2 +- 4 files changed, 27 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d8425e4..3eb3a2b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Require Firefox >= 55 - Require Chrome >= 37 +### Changed +- ETag filtering now generates random values and does no longer delete the header. As a result, filtering also works under Chrome-based browsers +- ETag filtering no longer increases the counter +- ETag filtering is now disabled by default + +### Fixed +- [524](https://gitlab.com/KevinRoebert/ClearUrls/-/issues/524) +- [67](https://github.com/ClearURLs/Addon/issues/67) +- [138](https://github.com/ClearURLs/Addon/issues/138) + ## [1.24.1] - 2022-03-25 ### Compatibility note diff --git a/core_js/eTagFilter.js b/core_js/eTagFilter.js index 254562d..8642e5b 100644 --- a/core_js/eTagFilter.js +++ b/core_js/eTagFilter.js @@ -24,19 +24,26 @@ function eTagFilter(requestDetails) { if(!requestDetails.responseHeaders || !storage.eTagFiltering || storage.localHostsSkipping && checkLocalURL(new URL(requestDetails.url))) return {}; - const responseHeaders = requestDetails.responseHeaders; + for(let i=0; i < requestDetails.responseHeaders.length; i++) { + const header = requestDetails.responseHeaders[i]; - const filteredHeaders = responseHeaders.filter(header => { - return header.name.toLowerCase() !== "etag"; - }); + if(header.name.toString().toLowerCase() !== "etag") { + continue; + } + + // insert dummy etag + requestDetails.responseHeaders[i].value = generateDummyEtag(); - if(filteredHeaders.length < responseHeaders.length) { pushToLog(requestDetails.url, requestDetails.url, translate("eTag_filtering_log")); - increaseBadged(false, requestDetails); - increaseGlobalURLCounter(1); - return {responseHeaders: filteredHeaders}; + break; } + + return {responseHeaders: requestDetails.responseHeaders}; +} + +function generateDummyEtag() { + return Math.random().toString(); } browser.webRequest.onHeadersReceived.addListener( diff --git a/core_js/storage.js b/core_js/storage.js index be780ad..33eb69b 100644 --- a/core_js/storage.js +++ b/core_js/storage.js @@ -202,7 +202,7 @@ function initSettings() { storage.logLimit = 100; storage.domainBlocking = true; storage.pingBlocking = true; - storage.eTagFiltering = true; + storage.eTagFiltering = false; storage.watchDogErrorCount = 0; if (getBrowser() === "Firefox") { diff --git a/manifest.json b/manifest.json index 24fae6c..bbead78 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "ClearURLs", - "version": "1.24.1", + "version": "1.25.0", "author": "Kevin Roebert", "description": "__MSG_extension_description__", "homepage_url": "https://docs.clearurls.xyz",