Spaces:
Running
Running
Upload server.js
Browse files
server.js
CHANGED
|
@@ -53,7 +53,7 @@ async function fetchText(url, timeoutMs, clientUA) {
|
|
| 53 |
redirect: 'follow',
|
| 54 |
signal: controller.signal,
|
| 55 |
headers: {
|
| 56 |
-
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
|
| 57 |
}
|
| 58 |
})
|
| 59 |
|
|
@@ -81,7 +81,7 @@ async function fetchText(url, timeoutMs, clientUA) {
|
|
| 81 |
}
|
| 82 |
}
|
| 83 |
|
| 84 |
-
function jsWrapper(serverBase, baseUrl, transpiledCode, needRegenerator, useVpn, useEs5) {
|
| 85 |
const safeServer = JSON.stringify(String(serverBase || ''))
|
| 86 |
const safeBaseUrl = JSON.stringify(String(baseUrl || ''))
|
| 87 |
|
|
@@ -167,8 +167,9 @@ function jsWrapper(serverBase, baseUrl, transpiledCode, needRegenerator, useVpn,
|
|
| 167 |
'var xhr=new _RealXHR();' +
|
| 168 |
'var origOpen=xhr.open;' +
|
| 169 |
'xhr.open=function(method,u,async,user,pass){' +
|
| 170 |
-
'
|
| 171 |
-
'
|
|
|
|
| 172 |
'};' +
|
| 173 |
'return xhr;' +
|
| 174 |
'};' +
|
|
@@ -197,6 +198,23 @@ function jsWrapper(serverBase, baseUrl, transpiledCode, needRegenerator, useVpn,
|
|
| 197 |
'}' +
|
| 198 |
'}catch(e){}'
|
| 199 |
) : '') +
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 200 |
'try{' +
|
| 201 |
'var __mock_script = document.createElement("script");' +
|
| 202 |
'__mock_script.src = __es5_base;' +
|
|
@@ -316,6 +334,7 @@ app.get('/p', async (req, res) => {
|
|
| 316 |
|
| 317 |
const useEs5 = req.query.es5 !== '0';
|
| 318 |
const useVpn = req.query.vpn !== '0';
|
|
|
|
| 319 |
|
| 320 |
try {
|
| 321 |
const { text } = await fetchText(source, 25_000, req.headers['user-agent'])
|
|
@@ -348,7 +367,7 @@ app.get('/p', async (req, res) => {
|
|
| 348 |
}
|
| 349 |
|
| 350 |
const serverBase = getSelfBase(req)
|
| 351 |
-
const out = jsWrapper(serverBase, source, code, needRegenerator, useVpn, useEs5)
|
| 352 |
|
| 353 |
res.setHeader('content-type', 'application/javascript; charset=utf-8')
|
| 354 |
res.setHeader('cache-control', 'public, max-age=600')
|
|
@@ -404,7 +423,9 @@ app.all('/r', async (req, res) => {
|
|
| 404 |
const targetUrl = new URL(source);
|
| 405 |
headers['origin'] = targetUrl.origin;
|
| 406 |
headers['referer'] = targetUrl.origin + '/';
|
| 407 |
-
headers['user-agent']
|
|
|
|
|
|
|
| 408 |
|
| 409 |
let body
|
| 410 |
if (method !== 'GET' && method !== 'HEAD') {
|
|
@@ -533,7 +554,9 @@ server.on('upgrade', (req, clientSocket, head) => {
|
|
| 533 |
|
| 534 |
proxyHeaders['host'] = targetUrl.hostname;
|
| 535 |
proxyHeaders['origin'] = targetUrl.protocol.replace('ws', 'http') + '//' + targetUrl.hostname;
|
| 536 |
-
proxyHeaders['user-agent']
|
|
|
|
|
|
|
| 537 |
|
| 538 |
const options = {
|
| 539 |
port: targetUrl.port || (targetUrl.protocol === 'wss:' ? 443 : 80),
|
|
|
|
| 53 |
redirect: 'follow',
|
| 54 |
signal: controller.signal,
|
| 55 |
headers: {
|
| 56 |
+
'user-agent': clientUA || 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
|
| 57 |
}
|
| 58 |
})
|
| 59 |
|
|
|
|
| 81 |
}
|
| 82 |
}
|
| 83 |
|
| 84 |
+
function jsWrapper(serverBase, baseUrl, transpiledCode, needRegenerator, useVpn, useEs5, useStream) {
|
| 85 |
const safeServer = JSON.stringify(String(serverBase || ''))
|
| 86 |
const safeBaseUrl = JSON.stringify(String(baseUrl || ''))
|
| 87 |
|
|
|
|
| 167 |
'var xhr=new _RealXHR();' +
|
| 168 |
'var origOpen=xhr.open;' +
|
| 169 |
'xhr.open=function(method,u,async,user,pass){' +
|
| 170 |
+
'var args=Array.prototype.slice.call(arguments);' +
|
| 171 |
+
'try{args[1]=proxyRaw(args[1]);}catch(e){}' +
|
| 172 |
+
'return origOpen.apply(xhr,args);' +
|
| 173 |
'};' +
|
| 174 |
'return xhr;' +
|
| 175 |
'};' +
|
|
|
|
| 198 |
'}' +
|
| 199 |
'}catch(e){}'
|
| 200 |
) : '') +
|
| 201 |
+
(useStream ? (
|
| 202 |
+
'try{' +
|
| 203 |
+
'if(Lampa&&Lampa.Player){' +
|
| 204 |
+
'if(!Lampa.hasOwnProperty("Player")) Lampa=Object.create(Lampa);' +
|
| 205 |
+
'var _RealPlayer=Lampa.Player;' +
|
| 206 |
+
'Lampa.Player=Object.create(_RealPlayer);' +
|
| 207 |
+
'Lampa.Player.play=function(data){' +
|
| 208 |
+
'try{' +
|
| 209 |
+
'if(data&&data.url&&typeof data.url==="string"&&data.url.indexOf(__es5_server)===-1&&data.url.indexOf("warp.cfhttp.top")===-1){' +
|
| 210 |
+
'data.url=__es5_server+"/r?url="+encodeURIComponent(data.url).replace(/%3A/gi, ":").replace(/%2F/gi, "/");' +
|
| 211 |
+
'}' +
|
| 212 |
+
'}catch(e){}' +
|
| 213 |
+
'return _RealPlayer.play.apply(this,arguments);' +
|
| 214 |
+
'};' +
|
| 215 |
+
'}' +
|
| 216 |
+
'}catch(e){}'
|
| 217 |
+
) : '') +
|
| 218 |
'try{' +
|
| 219 |
'var __mock_script = document.createElement("script");' +
|
| 220 |
'__mock_script.src = __es5_base;' +
|
|
|
|
| 334 |
|
| 335 |
const useEs5 = req.query.es5 !== '0';
|
| 336 |
const useVpn = req.query.vpn !== '0';
|
| 337 |
+
const useStream = req.query.stream === '1';
|
| 338 |
|
| 339 |
try {
|
| 340 |
const { text } = await fetchText(source, 25_000, req.headers['user-agent'])
|
|
|
|
| 367 |
}
|
| 368 |
|
| 369 |
const serverBase = getSelfBase(req)
|
| 370 |
+
const out = jsWrapper(serverBase, source, code, needRegenerator, useVpn, useEs5, useStream)
|
| 371 |
|
| 372 |
res.setHeader('content-type', 'application/javascript; charset=utf-8')
|
| 373 |
res.setHeader('cache-control', 'public, max-age=600')
|
|
|
|
| 423 |
const targetUrl = new URL(source);
|
| 424 |
headers['origin'] = targetUrl.origin;
|
| 425 |
headers['referer'] = targetUrl.origin + '/';
|
| 426 |
+
if (!headers['user-agent']) {
|
| 427 |
+
headers['user-agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36';
|
| 428 |
+
}
|
| 429 |
|
| 430 |
let body
|
| 431 |
if (method !== 'GET' && method !== 'HEAD') {
|
|
|
|
| 554 |
|
| 555 |
proxyHeaders['host'] = targetUrl.hostname;
|
| 556 |
proxyHeaders['origin'] = targetUrl.protocol.replace('ws', 'http') + '//' + targetUrl.hostname;
|
| 557 |
+
if (!proxyHeaders['user-agent']) {
|
| 558 |
+
proxyHeaders['user-agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36';
|
| 559 |
+
}
|
| 560 |
|
| 561 |
const options = {
|
| 562 |
port: targetUrl.port || (targetUrl.protocol === 'wss:' ? 443 : 80),
|