واي واتش |Y WATCH مشاهدة أهم مباريات اليوم بث مباشر حصري بدون تقطيع

export default { async fetch(request, env, ctx) { // 1. السماح بطلبات CORS (مهم لتشغيل الفيديو في المتصفحات) if (request.method === 'OPTIONS') { return new Response(null, { headers: { 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Methods': 'GET, OPTIONS', 'Access-Control-Allow-Headers': '*', }, }); } const url = new URL(request.url); // استخراج الرابط الأساسي من المتغير ?url= const targetUrl = url.searchParams.get('url'); if (!targetUrl) { return new Response('الرجاء إضافة الرابط بعد ?url= ', { status: 400 }); } // 2. الترويسات (Headers) التي تريد إرسالها للسيرفر المستهدف // قم بتعديل هذه القيم حسب ما يطلبه السيرفر const customHeaders = { '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', 'Referer': 'https://www.example.com/', // <-- ضع الرابط المطلوب هنا 'Origin': 'https://www.example.com', // <-- ضع الرابط المطلوب هنا 'Accept': '*/*', 'Accept-Language': 'en-US,en;q=0.9', // إزالة الترويسات التي قد تكشف أن الطلب من Cloudflare 'cf-connecting-ip': '', 'cf-ipcountry': '', 'cf-ray': '', 'cf-visitor': '', }; try { // 3. جلب المحتوى من الرابط المستهدف مع الترويسات المخصصة const response = await fetch(targetUrl, { headers: customHeaders, redirect: 'follow', }); const contentType = response.headers.get('content-type') || ''; // 4. إذا كان الملف هو M3U8، نقوم بتعديل الروابط داخله لتمريرها من البروكسي if (contentType.includes('mpegurl') || contentType.includes('text/plain') || targetUrl.endsWith('.m3u8')) { let text = await response.text(); const baseUrl = new URL(targetUrl); // معالجة كل سطر في ملف الـ M3U8 const lines = text.split('\n'); const rewrittenLines = lines.map(line => { line = line.trim(); // تجاهل الأسطر الفارغة أو أسطر التعريف (التي تبدأ بـ #) if (!line || line.startsWith('#')) { return line; } // السطر يحتوي على رابط لملف TS أو ملف M3U8 آخر try { // تحويل الرابط النسبي إلى رابط مطلق const absoluteUrl = new URL(line, baseUrl).href; // تغليف الرابط برابط البروكسي الخاص بك const proxyUrl = `${url.origin}/?url=${encodeURIComponent(absoluteUrl)}`; return proxyUrl; } catch (e) { return line; // إذا كان هناك خطأ في الرابط، اتركه كما هو } }); const newBody = rewrittenLines.join('\n'); return new Response(newBody, { status: response.status, headers: { 'Content-Type': 'application/vnd.apple.mpegurl', // ترويسة M3U8 قياسية 'Access-Control-Allow-Origin': '*', 'Cache-Control': 'no-cache', // يفضل عدم تخزين M3U8 مؤقتاً }, }); } // 5. إذا كان الملف هو مقطع فيديو (TS) أو ملف آخر، نمرره مباشرة كـ Stream return new Response(response.body, { status: response.status, headers: { 'Content-Type': contentType, 'Access-Control-Allow-Origin': '*', 'Cache-Control': 'public, max-age=604800', // تخزين مقاطع الفيديو مؤقتاً لتسريع التحميل }, }); } catch (error) { return new Response(`Error: ${error.message}`, { status: 500 }); } }, };

تابع موقعنا عبر خدمة جوجل نيوز للحصول على أخر الأخبار الرياضية أول بأول ...