Extension to return old Twitter layout from 2015.
1chrome.runtime.onInstalled.addListener(() => {
2 chrome.runtime.setUninstallURL('https://dimden.dev/ot/uninstall.html');
3});
4chrome.webRequest.onBeforeRequest.addListener(
5 function(details) {
6 if(details.url.includes('abs.twimg.com/favicons/twitter.3.ico')) {
7 return {
8 redirectUrl: chrome.runtime.getURL('images/logo32_new.png')
9 };
10 } else if(details.url.includes('abs.twimg.com/favicons/twitter-pip.3.ico')) {
11 return {
12 redirectUrl: chrome.runtime.getURL('images/logo32_new_notification.png')
13 };
14 }
15 return {
16 cancel:
17 ( // excludes
18 details.originUrl &&
19 !details.originUrl.includes("newtwitter=true") &&
20 !details.originUrl.includes("/i/flow/login") &&
21 !details.originUrl.includes("/settings/download_your_data")
22 ) &&
23 ( // includes
24 details.url.includes("twitter.com/manifest.json") ||
25 details.url.includes("abs.twimg.com/responsive-web/client-web/") ||
26 details.url.includes("/sw.js")
27 )
28 };
29 }, {
30 urls: ["*://*.twitter.com/*", "*://*.twimg.com/*"]
31 },
32 ["blocking"]
33);
34chrome.webRequest.onBeforeSendHeaders.addListener(
35 function(details) {
36 if(!details.requestHeaders.find(h => h.name.toLowerCase() === 'origin')) details.requestHeaders.push({
37 name: "Origin",
38 value: "https://twitter.com"
39 });
40 return {
41 requestHeaders: details.requestHeaders
42 };
43 }, {
44 urls: ["*://*.twimg.com/*", "*://twimg.com/*"]
45 },
46 ["blocking", "requestHeaders"]
47);
48chrome.webRequest.onHeadersReceived.addListener(
49 function(details) {
50 for (let i = details.responseHeaders.length - 1; i >= 0; i--) {
51 if (
52 details.responseHeaders[i].name.toLowerCase() === 'content-security-policy' ||
53 details.responseHeaders[i].name.toLowerCase() === 'x-frame-options'
54 ) {
55 details.responseHeaders.splice(i, 1);
56 }
57 }
58 if(!details.responseHeaders.find(h => h.name.toLowerCase() === 'access-control-allow-origin')) details.responseHeaders.push({
59 name: "access-control-allow-origin",
60 value: "*"
61 });
62 if(!details.responseHeaders.find(h => h.name.toLowerCase() === 'access-control-allow-headers')) details.responseHeaders.push({
63 name: "access-control-allow-headers",
64 value: "*"
65 });
66 return {
67 responseHeaders: details.responseHeaders
68 };
69 }, {
70 urls: ["*://twitter.com/*", "*://*.twitter.com/*", "*://*.twimg.com/*", "*://twimg.com/*"]
71 },
72 ["blocking", "responseHeaders"]
73);