background.js - 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
---
background.js (2771B)
---
1 /* what this file does:
2 - rewrites User-Agent headers.
3 - sets consent cookie for Google and Youtube. */
4
5 function main(info) {
6
7 /* get current running Firefox version, to always keep up-to-date */
8 var ff_version = info.version || "72.0";
9
10 /* User-Agent's */
11 // Windows 7 (64-bit)
12 var ua_windows7 = "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:" + ff_version + ") Gecko/20100101 Firefox/" + ff_version;
13 // Windows 10 (64-bit)
14 var ua_windows10 = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:" + ff_version + ") Gecko/20100101 Firefox/" + ff_version;
15 // Windows 10 Chrome, NOTE: update version manually if needed.
16 var ua_windows10_chrome = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36";
17
18 // OpenBSD amd64
19 var ua_openbsd = "Mozilla/5.0 (X11; OpenBSD amd64; rv:" + ff_version + ") Gecko/20100101 Firefox/" + ff_version;
20
21 var ua_none = "";
22 var ua_default = ua_windows10;
23
24 var prefix = "^(http|https):\/\/([^\.]+\.)?"; // HTTP and HTTPS, optional subdomain.
25 var patterns = [
26 // Twitter: remove User-Agent, this prevents an annoying redirect to "legacy" Twitter each time.
27 {
28 "re": new RegExp(prefix + "twitter\.com\/.*"),
29 "ua": ua_windows10
30 }
31 ];
32
33 function rewriteua(e) {
34 var headers = e.requestHeaders;
35 for (var j = 0; j < headers.length; j++) {
36 var header = headers[j];
37 if (header.name.toLowerCase() !== "user-agent")
38 continue;
39 var ua = ua_default;
40 var url = e.documentUrl || e.url || "";
41 for (var p of patterns) {
42 var m = p.re.exec(url);
43 if (m === null)
44 continue;
45 ua = p.ua;
46 break;
47 }
48 if (ua !== "")
49 header.value = ua;
50 else
51 delete headers[j];
52 }
53
54 return { requestHeaders: headers };
55 }
56
57 chrome.webRequest.onBeforeSendHeaders.addListener(
58 rewriteua,
59 { urls: [ "<all_urls>" ]},
60 ["blocking", "requestHeaders"]
61 );
62
63 // "forced consent"...
64 function google_forced_consent(e) {
65 var r = parseInt(100+(Math.random() * 899));
66 // var r = 101;
67 var value = "CONSENT=YES+cb.20210328-17-p0.en+FX+" + r.toString();
68 var headers = e.requestHeaders;
69 var cookieset = 0;
70 for (var j = 0; j < headers.length; j++) {
71 var header = headers[j];
72 if (header.name.toLowerCase() !== "cookie")
73 continue;
74
75 header.value = value;
76
77 cookieset = 1;
78 }
79 if (!cookieset)
80 headers.set("Cookie", value);
81 return { requestHeaders: headers };
82 }
83
84 chrome.webRequest.onBeforeSendHeaders.addListener(
85 google_forced_consent,
86 {
87 // urls: [ "<all_urls>" ]},
88 urls: [
89 // "*://*/*",
90 "*://*.google.com/*",
91 "*://google.com/*",
92 "*://*.google.nl/*",
93 "*://google.nl/*",
94 "*://*.youtube.com/*",
95 "*://youtube.com/*",
96 "*://*.youtu.be/*",
97 "*://youtu.be/*",
98 "*://*.gstatic.com/*"
99 ]
100 },
101 ["blocking", "requestHeaders"]
102 );
103
104 }
105
106 browser.runtime.getBrowserInfo().then(main);