Update server.js
Browse files
server.js
CHANGED
|
@@ -308,31 +308,72 @@ async function scrapeProvider(domain, url, signal) {
|
|
| 308 |
let videoResult = null;
|
| 309 |
|
| 310 |
// 启用请求拦截
|
| 311 |
-
await page.route('**/*', async (route) => {
|
| 312 |
-
|
| 313 |
-
|
| 314 |
|
| 315 |
-
|
| 316 |
-
|
| 317 |
-
|
| 318 |
-
|
| 319 |
-
|
| 320 |
|
| 321 |
-
|
| 322 |
-
|
| 323 |
-
|
| 324 |
-
|
| 325 |
-
|
| 326 |
-
|
| 327 |
-
|
| 328 |
-
|
| 329 |
-
|
| 330 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 331 |
}
|
| 332 |
-
} else {
|
| 333 |
-
route.continue();
|
| 334 |
}
|
| 335 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 336 |
|
| 337 |
await page.goto(url, {
|
| 338 |
waitUntil: 'networkidle',
|
|
|
|
| 308 |
let videoResult = null;
|
| 309 |
|
| 310 |
// 启用请求拦截
|
| 311 |
+
// await page.route('**/*', async (route) => {
|
| 312 |
+
// const requestUrl = route.request().url();
|
| 313 |
+
// console.log(`[${domain}] Request: ${requestUrl}`);
|
| 314 |
|
| 315 |
+
// // 如果是 cloudnestra.com/rcp/ 的请求,使用 getVideoAndSubtitles 解析
|
| 316 |
+
// if (requestUrl.includes('cloudnestra.com/rcp/')) {
|
| 317 |
+
// try {
|
| 318 |
+
// const { videoFileUrl, subtitleSources } = await getVideoAndSubtitles(requestUrl);
|
| 319 |
+
// if (!videoFileUrl) throw new Error("HLS URL not found");
|
| 320 |
|
| 321 |
+
// videoResult = {
|
| 322 |
+
// source_domain: domain,
|
| 323 |
+
// hls_url: videoFileUrl,
|
| 324 |
+
// subtitles: subtitleSources,
|
| 325 |
+
// error: null
|
| 326 |
+
// };
|
| 327 |
+
// route.abort();
|
| 328 |
+
// } catch (error) {
|
| 329 |
+
// console.error(`[${domain}] Error processing cloudnestra request:`, error);
|
| 330 |
+
// route.continue();
|
| 331 |
+
// }
|
| 332 |
+
// } else {
|
| 333 |
+
// route.continue();
|
| 334 |
+
// }
|
| 335 |
+
// });
|
| 336 |
+
await page.route('**/*', async (route) => {
|
| 337 |
+
const requestUrl = route.request().url();
|
| 338 |
+
console.log(`[${domain}] Request: ${requestUrl}`);
|
| 339 |
+
|
| 340 |
+
// 如果是 cloudnestra.com/rcp/ 请求,输出它的内容
|
| 341 |
+
if (requestUrl.includes('cloudnestra.com/rcp/')) {
|
| 342 |
+
console.log(`[${domain}] 🎯 检测到 cloudnestra.com/rcp/ 请求:`);
|
| 343 |
+
console.log(`[${domain}] URL: ${requestUrl}`);
|
| 344 |
+
|
| 345 |
+
try {
|
| 346 |
+
// 获取请求的响应内容
|
| 347 |
+
const response = await route.fetch();
|
| 348 |
+
const content = await response.text();
|
| 349 |
+
|
| 350 |
+
console.log(`[${domain}] 响应状态: ${response.status()}`);
|
| 351 |
+
console.log(`[${domain}] 响应头:`, response.headers());
|
| 352 |
+
console.log(`[${domain}] 响应内容长度: ${content.length}`);
|
| 353 |
+
console.log(`[${domain}] 响应内容预览 (前500字符):`);
|
| 354 |
+
console.log(content.substring(0, 500));
|
| 355 |
+
|
| 356 |
+
// 如果内容看起来像JSON,尝试解析
|
| 357 |
+
if (content.trim().startsWith('{') || content.trim().startsWith('[')) {
|
| 358 |
+
try {
|
| 359 |
+
const jsonContent = JSON.parse(content);
|
| 360 |
+
console.log(`[${domain}] JSON内容:`, JSON.stringify(jsonContent, null, 2));
|
| 361 |
+
} catch (e) {
|
| 362 |
+
console.log(`[${domain}] 不是有效的JSON格式`);
|
| 363 |
}
|
|
|
|
|
|
|
| 364 |
}
|
| 365 |
+
|
| 366 |
+
// 继续正常的请求流程
|
| 367 |
+
route.continue();
|
| 368 |
+
|
| 369 |
+
} catch (error) {
|
| 370 |
+
console.error(`[${domain}] 获取cloudnestra内容时出错:`, error);
|
| 371 |
+
route.continue();
|
| 372 |
+
}
|
| 373 |
+
} else {
|
| 374 |
+
route.continue();
|
| 375 |
+
}
|
| 376 |
+
});
|
| 377 |
|
| 378 |
await page.goto(url, {
|
| 379 |
waitUntil: 'networkidle',
|