mirror of
https://gitlab.com/KevinRoebert/ClearUrls
synced 2025-12-16 06:05:37 +07:00
Fixed ETag filtering
Fixed https://github.com/ClearURLs/Addon/issues/276
This commit is contained in:
@@ -31,8 +31,16 @@ function eTagFilter(requestDetails) {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const etag = header.value.toLowerCase();
|
||||||
|
const w = etag.startsWith('w');
|
||||||
|
const quotes = etag.endsWith('"');
|
||||||
|
|
||||||
|
let len = etag.length;
|
||||||
|
if (w) len -= 2;
|
||||||
|
if (quotes) len -= 2;
|
||||||
|
|
||||||
// insert dummy etag
|
// insert dummy etag
|
||||||
requestDetails.responseHeaders[i].value = generateDummyEtag();
|
requestDetails.responseHeaders[i].value = generateDummyEtag(len, quotes, w);
|
||||||
|
|
||||||
pushToLog(requestDetails.url, requestDetails.url, translate("eTag_filtering_log"));
|
pushToLog(requestDetails.url, requestDetails.url, translate("eTag_filtering_log"));
|
||||||
|
|
||||||
@@ -42,8 +50,19 @@ function eTagFilter(requestDetails) {
|
|||||||
return {responseHeaders: requestDetails.responseHeaders};
|
return {responseHeaders: requestDetails.responseHeaders};
|
||||||
}
|
}
|
||||||
|
|
||||||
function generateDummyEtag() {
|
/**
|
||||||
return Math.random().toString();
|
* Generates a random ETag.
|
||||||
|
*
|
||||||
|
* Must be ASCII characters placed between double quotes.
|
||||||
|
* See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag
|
||||||
|
*/
|
||||||
|
function generateDummyEtag(len, quotes = true, w = false) {
|
||||||
|
let rtn = randomASCII(len);
|
||||||
|
|
||||||
|
if (quotes) rtn = '"' + rtn + '"';
|
||||||
|
if (w) rtn = 'W/' + rtn;
|
||||||
|
|
||||||
|
return rtn;
|
||||||
}
|
}
|
||||||
|
|
||||||
browser.webRequest.onHeadersReceived.addListener(
|
browser.webRequest.onHeadersReceived.addListener(
|
||||||
|
|||||||
@@ -328,3 +328,12 @@ async function sha256(message) {
|
|||||||
|
|
||||||
return hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
|
return hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generates a non-secure random ASCII string of length {@code len}.
|
||||||
|
*
|
||||||
|
* @returns non-secure random ASCII
|
||||||
|
*/
|
||||||
|
function randomASCII(len) {
|
||||||
|
return [...Array(len)].map(() => (~~(Math.random() * 36)).toString(36)).join('');
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user