Skip to content

Commit 5764659

Browse files
authored
Update torupload.txt
1 parent 8a22787 commit 5764659

1 file changed

Lines changed: 108 additions & 35 deletions

File tree

torupload.txt

Lines changed: 108 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -113,40 +113,113 @@ author: BlazeFTL
113113
} catch(e) {}
114114

115115
// Spoof navigator.userAgentData (Chrome-only modern UA hints API)
116-
if (navigator.userAgentData !== undefined) {
117-
try {
118-
Object.defineProperty(navigator, 'userAgentData', {
119-
get: () => ({
120-
brands: [
121-
{ brand: 'Google Chrome', version: '137' },
122-
{ brand: 'Chromium', version: '137' },
123-
{ brand: 'Not/A)Brand', version: '24' },
124-
],
125-
mobile: isMobile,
126-
platform: isMobile ? 'Android' : 'Windows',
127-
getHighEntropyValues: (hints) => Promise.resolve({
128-
brands: [
129-
{ brand: 'Google Chrome', version: '137' },
130-
{ brand: 'Chromium', version: '137' },
131-
{ brand: 'Not/A)Brand', version: '24' },
132-
],
133-
mobile: isMobile,
134-
platform: isMobile ? 'Android' : 'Windows',
135-
platformVersion: isMobile ? '10.0.0' : '15.0.0',
136-
architecture: isMobile ? 'arm' : 'x86',
137-
bitness: '64',
138-
model: isMobile ? '' : '',
139-
uaFullVersion: '137.0.0.0',
140-
fullVersionList: [
141-
{ brand: 'Google Chrome', version: '137.0.0.0' },
142-
{ brand: 'Chromium', version: '137.0.0.0' },
143-
{ brand: 'Not/A)Brand', version: '24.0.0.0' },
144-
],
145-
}),
146-
toJSON: () => ({}),
147-
}),
148-
configurable: true,
149-
});
150-
} catch(e) {}
116+
const uadBrands = [
117+
{ brand: 'Google Chrome', version: '137' },
118+
{ brand: 'Chromium', version: '137' },
119+
{ brand: 'Not/A)Brand', version: '24' },
120+
];
121+
const uadBrandsFull = [
122+
{ brand: 'Google Chrome', version: '137.0.0.0' },
123+
{ brand: 'Chromium', version: '137.0.0.0' },
124+
{ brand: 'Not/A)Brand', version: '24.0.0.0' },
125+
];
126+
const uadObj = {
127+
brands: uadBrands,
128+
mobile: isMobile,
129+
platform: isMobile ? 'Android' : 'Windows',
130+
getHighEntropyValues: (hints) => Promise.resolve({
131+
brands: uadBrands,
132+
mobile: isMobile,
133+
platform: isMobile ? 'Android' : 'Windows',
134+
platformVersion: isMobile ? '10.0.0' : '15.0.0',
135+
architecture: isMobile ? 'arm' : 'x86',
136+
bitness: '64',
137+
model: '',
138+
uaFullVersion: '137.0.0.0',
139+
fullVersionList: uadBrandsFull,
140+
}),
141+
toJSON: () => ({}),
142+
};
143+
144+
try {
145+
Object.defineProperty(navigator, 'userAgentData', {
146+
get: () => uadObj,
147+
configurable: true,
148+
});
149+
} catch(e) {}
150+
151+
// Sec-CH-UA header values
152+
const secUA = '"Google Chrome";v="137", "Chromium";v="137", "Not/A)Brand";v="24"';
153+
const secUAMobile = isMobile ? '?1' : '?0';
154+
const secUAPlatform = isMobile ? '"Android"' : '"Windows"';
155+
const secUAFullVer = '"137.0.0.0"';
156+
const secUAPlatformVer = isMobile ? '"10.0.0"' : '"15.0.0"';
157+
const secUAArch = isMobile ? '"arm"' : '"x86"';
158+
const secUABitness = '"64"';
159+
const secUAModel = '""';
160+
const secUAFullVerList = '"Google Chrome";v="137.0.0.0", "Chromium";v="137.0.0.0", "Not/A)Brand";v="24.0.0.0"';
161+
162+
function injectSecHeaders(headers) {
163+
const set = (k, v) => {
164+
try { headers.set(k, v); } catch(e) {}
165+
};
166+
set('sec-ch-ua', secUA);
167+
set('sec-ch-ua-mobile', secUAMobile);
168+
set('sec-ch-ua-platform', secUAPlatform);
169+
set('sec-ch-ua-full-version', secUAFullVer);
170+
set('sec-ch-ua-platform-version', secUAPlatformVer);
171+
set('sec-ch-ua-arch', secUAArch);
172+
set('sec-ch-ua-bitness', secUABitness);
173+
set('sec-ch-ua-model', secUAModel);
174+
set('sec-ch-ua-full-version-list', secUAFullVerList);
175+
set('user-agent', spoofUA);
151176
}
177+
178+
// Proxy fetch to inject Sec-CH-UA headers
179+
const _fetch = window.fetch;
180+
window.fetch = new Proxy(_fetch, {
181+
apply(target, thisArg, args) {
182+
try {
183+
let [input, init] = args;
184+
init = init ? Object.assign({}, init) : {};
185+
const headers = new Headers(init.headers || {});
186+
injectSecHeaders(headers);
187+
init.headers = headers;
188+
args = [input, init];
189+
} catch(e) {}
190+
return Reflect.apply(target, thisArg, args);
191+
}
192+
});
193+
194+
// Proxy XMLHttpRequest.setRequestHeader to inject Sec-CH-UA headers on send
195+
const _open = XMLHttpRequest.prototype.open;
196+
const _send = XMLHttpRequest.prototype.send;
197+
const _setHeader = XMLHttpRequest.prototype.setRequestHeader;
198+
199+
XMLHttpRequest.prototype.open = new Proxy(_open, {
200+
apply(target, thisArg, args) {
201+
thisArg._blazeInjectUA = true;
202+
return Reflect.apply(target, thisArg, args);
203+
}
204+
});
205+
206+
XMLHttpRequest.prototype.send = new Proxy(_send, {
207+
apply(target, thisArg, args) {
208+
if (thisArg._blazeInjectUA) {
209+
const setH = (k, v) => {
210+
try { _setHeader.call(thisArg, k, v); } catch(e) {}
211+
};
212+
setH('sec-ch-ua', secUA);
213+
setH('sec-ch-ua-mobile', secUAMobile);
214+
setH('sec-ch-ua-platform', secUAPlatform);
215+
setH('sec-ch-ua-full-version', secUAFullVer);
216+
setH('sec-ch-ua-platform-version', secUAPlatformVer);
217+
setH('sec-ch-ua-arch', secUAArch);
218+
setH('sec-ch-ua-bitness', secUABitness);
219+
setH('sec-ch-ua-model', secUAModel);
220+
setH('sec-ch-ua-full-version-list', secUAFullVerList);
221+
}
222+
return Reflect.apply(target, thisArg, args);
223+
}
224+
});
152225
})();

0 commit comments

Comments
 (0)