Skip to content

Commit 7cc5d6b

Browse files
authored
Merge pull request #832 from shy1132/master
fix oldtwitter on old-ish firefox versions
2 parents da6174f + 48d8a5c commit 7cc5d6b

File tree

2 files changed

+35
-4
lines changed

2 files changed

+35
-4
lines changed

scripts/background_v2.js

+25-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,31 @@ chrome.webRequest.onBeforeSendHeaders.addListener(
5959
},
6060
["blocking", "requestHeaders"]
6161
);
62-
62+
chrome.webRequest.onBeforeSendHeaders.addListener(
63+
function(details) {
64+
for (let i = 0; i < details.requestHeaders.length; i++) {
65+
if (details.requestHeaders[i].name.toLowerCase() === 'user-agent') {
66+
if (details.requestHeaders[i].value.toLowerCase().includes('firefox')) {
67+
let rvRegex = /rv:(\d+\.\d+)/;
68+
let rvMatch = details.requestHeaders[i].value.match(rvRegex);
69+
if (rvMatch) {
70+
let rv = parseFloat(rvMatch[1]);
71+
if (rv < 110) {
72+
details.requestHeaders[i].value = details.requestHeaders[i].value.replace(rvRegex, 'rv:110.0'); //twitter serves client-web-legacy if rv is less than 110, which breaks request signing
73+
}
74+
}
75+
}
76+
break;
77+
}
78+
}
79+
return {
80+
requestHeaders: details.requestHeaders
81+
};
82+
}, {
83+
urls: ["*://x.com/", "*://twitter.com/"]
84+
},
85+
["blocking", "requestHeaders"]
86+
);
6387
chrome.runtime.onMessage.addListener(async (request, sender, sendResponse) => {
6488
if(request.action === "inject") {
6589
console.log(request, sender.tab.id);

scripts/twchallenge.js

+10-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
let solveId = 0;
22
let solveCallbacks = {};
3+
let solveQueue = []
4+
let solverReady = false;
35
let solverErrored = false;
46

57
let solverIframe = document.createElement('iframe');
@@ -26,16 +28,16 @@ function solveChallenge(path, method) {
2628
}
2729
let id = solveId++;
2830
solveCallbacks[id] = { resolve, reject, time: Date.now() };
29-
if(solverIframe && solverIframe.contentWindow) {
31+
if(!solverIframe || !solverIframe.contentWindow || !solverReady) {
32+
solveQueue.push({ id, path, method })
33+
} else {
3034
solverIframe.contentWindow.postMessage({ action: 'solve', id, path, method }, '*');
3135
// setTimeout(() => {
3236
// if(solveCallbacks[id]) {
3337
// solveCallbacks[id].reject('Solver timed out');
3438
// delete solveCallbacks[id];
3539
// }
3640
// }, 1750);
37-
} else {
38-
reject('Solver iframe not ready');
3941
}
4042
});
4143
}
@@ -64,6 +66,11 @@ window.addEventListener('message', e => {
6466
alert(`There was an error in initializing security header generator: ${data.error}. OldTwitter doesn't allow unsigned requests anymore for your account security. Currently it's unknown what causes this to happen, try reloading the page.`);
6567
console.error('Error initializing solver:');
6668
console.error(data.error);
69+
} else if(data.action === 'ready') {
70+
solverReady = true;
71+
for (let task of solveQueue) {
72+
solverIframe.contentWindow.postMessage({ action: 'solve', id: task.id, path: task.path, method: task.method }, '*')
73+
}
6774
}
6875
});
6976

0 commit comments

Comments
 (0)