add support for web request header filtering - firefox-fix-web - Firefox extension: fix web
(HTM) git clone git://git.codemadness.org/firefox-fix-web
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit c1a70013f87cc63d47ae971168b21aa31ba3ca67
(DIR) parent f0549950ceb52a2e435fb476d3288932feee9e76
(HTM) Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date: Sun, 22 Mar 2020 23:32:17 +0100
add support for web request header filtering
For now only used for setting the User-Agent. It detects the current running
versions, but spoofs the rest. By default Windows is used.
For twitter.com the User-Agent is reset so it doesn't redirect and doesn't
give an annoying message.
Diffstat:
A extension/background.js | 54 +++++++++++++++++++++++++++++++
M extension/manifest.json | 4 ++--
2 files changed, 56 insertions(+), 2 deletions(-)
---
(DIR) diff --git a/extension/background.js b/extension/background.js
@@ -0,0 +1,54 @@
+browser.runtime.getBrowserInfo().then(main);
+
+function main(info) {
+
+/* get current running Firefox version, to always keep up-to-date */
+var ff_version = info.version || "72.0";
+
+/* User-Agent's */
+var ua_windows = "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:" + ff_version + ") Gecko/20100101 Firefox/" + ff_version;
+var ua_openbsd = "Mozilla/5.0 (X11; OpenBSD amd64; rv:" + ff_version + ") Gecko/20100101 Firefox/" + ff_version;
+var ua_none = "";
+var ua_default = ua_windows;
+
+var prefix = "^(http|https):\/\/([^\.]+\.)?"; // HTTP and HTTPS, optional subdomain.
+var patterns = [
+ // Twitter: remove User-Agent, this prevents an annoying redirect to "legacy" Twitter each time.
+ {
+ "re": new RegExp(prefix + "twitter\.com\/.*"),
+ "ua": ua_none
+ }
+];
+
+function rewriteua(e) {
+ var headers = e.requestHeaders;
+ for (var j = 0; j < headers.length; j++) {
+ var header = headers[j];
+ if (header.name.toLowerCase() !== "user-agent")
+ continue;
+ var ua = ua_default;
+ var url = e.originUrl || e.url || "";
+ for (var p of patterns) {
+ var m = p.re.exec(url);
+ if (m === null)
+ continue;
+ ua = p.ua;
+ break;
+ }
+ if (ua !== "")
+ header.value = ua;
+ else
+ delete headers[j];
+ }
+
+// console.log(e); // DEBUG
+ return { requestHeaders: headers };
+}
+
+chrome.webRequest.onBeforeSendHeaders.addListener(
+ rewriteua,
+ { urls: [ "<all_urls>" ]},
+ ["blocking", "requestHeaders"]
+);
+
+}
(DIR) diff --git a/extension/manifest.json b/extension/manifest.json
@@ -3,8 +3,8 @@
"name": "fix-web",
"version": "1.0",
"description": "Scripts to make the web suck less and fixup some things",
- "permissions": [ "activeTab" ],
- "background": { "scripts": [] },
+ "permissions": [ "<all_urls>", "webRequest", "webRequestBlocking" ],
+ "background": { "scripts": [ "background.js" ] },
"applications": {
"gecko": {
"id": "hiltjo@codemadness.org"