كيف اضيف السيشن session للفيديو بلغة php

  • khaledhtml

تحية طيبة للجميع.

اريد ان اعرف كيف اضيف session للفيديو.

بحيث لا يشتغل الرابط المباشر للفيديو للزائر

الا عندما يزور الزائر الموقع ...

شاهدت هذه الطريقة في عدة مواقع

مع ان رابط المباشر للفيديو لا يتغير .

اتمنى من الأخ وليد يكون عنده الحل .

@Alwalid

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

مثال لا يشتغل الرابط المباشر للفيديو

www.domain.com/videos/film.mp4

الا عندما يزور الزائر هذه الصفحة الموقع

www.domain.com/videos/

Alwalid أضف ردا

تقوم الموقع بعمل ذلك من خلال تفحص قيمة HTTP_REFERER والذي تحتوي علي مصدر الزيارة .. فأن كان الزائر قادم من نفس الموقع يسمح بعرض الفيديو .. وان كان قادم من مصدر اخر او من خلال الرابط المباشر للفيديو .. فلا يسمح بعرض الفيديو

ويمكن القيام بذلك من خلال ملف .htaccess عبر اضافة هذا الكود :

مع استبدال domain.com برابط الموقع.

اهلا اخي وليد .

هذا الكود .htaccess يمنع روابط الفيديو بصيغة mp4

من الاشتغال الرابط المباشر للفيديو في المتصفح و المواقع الاخرى خارج الدومين المحدد نهائيا

للاسف ليس هذا ما اريده .

اريد ان يمنع تشغيل الفيديو ولكن ليس نهائيا

بمجرد دخول الزائر للموقع يسمع بعرض الفيديو في المتصفح و المواقع الاخرى

اعتقد ان هذه الطريقة تتم بوسطة السيشن session و ليس من ملف .htaccess

Alwalid أضف ردا

لاضافة Token او معرف فريد عند مشاهدة الفيديو .. فيجب ان يكون الفيديو مستضاف علي خادم بث خاص مثل Wowza

او Adobe Media Server

البديل لذلك هو عمل ملف PHP يتحقق من الجلسة ثم يعيد التوجية الي رابط الفيديو .. لكن هذه الطريقة من السهل تجاوزها.

@Alwalid‍ رمضان مبارك اخي وليد ..

بالنسبة للفيديو المعرف الخاص ب token و session فهو عندي على الاستضافة العادية ولا أعتقد يتطلب سيرفر بث خاص.

ممكن تعطيني طريقة عمل ملف php يتحقق من الجلسة .

والطريقة التي تتجاوز بها الجلسة

هنا مثال الذي أريده

هذا الرابط مباشر للفيديو لا يتغير يشتغل لمدة أعتقد أكثر من 10 ساعات ثم يتوقف حتى تزور هذه صفحة التحميل للفيديو.

Alwalid أضف ردا

انشاء Token او جلسة لملف الفيديو بشكل مباشر بدون اي ملف برمجي وسيط يتطلب استخدام سيرفر بث

لكن انشاء الـToken والجلسة والتعامل معها من خلال ملف برمجي PHP وسيط هو امر ممكن علي اي استضافة لكنة غير أمن ويمكن بسهولة تجاوز الملف البرمجي الوسيط والوصول المباشر الي الفيديو

يمكنك الاطلاع علي هذا الشرح لمعرفة كيفية التعامل مع الجلسات في لغة PHP

هذا الموقع :

لايستخدم الجلسات لحماية الملفات .. لكنة يستخدم عنوان IP للزائر .. فيقوم بتوليد رابط فريد صالح لمدة معينة لعنوان IP كل زائر وهذه الطريقة تستعملها معظم مواقع التحميل

فجرب فتح الموقع من متصفح ثم فتح رابط الفيديو من متصفح اخر وسيستمر في العمل بالرغم من ان الجلسة تحفظ في المتصفح فقط

@Alwalid‍ 

اهلا اخي وليد . و عيدكم مبارك سعيد بالصحة و العافية وعمر مديد ان شاء الله

عذرا على التاخير بسبب عطل الهاتف الخاص بي

ممكن تعطيني كود Token والجلسة و كيف يتم تجاوز الملف البرمجي ...

@Alwalid‍ الاخ وليد هل من مساعدة جزاك الله خيرا ...?

ممكن تعطيني كود Token والجلسة و كيف يتم تجاوز الملف البرمجي ...

يمكنك الاطلاع علي هذا الشرح لمعرفة كيفية التعامل مع الجلسات في لغة PHP

وفكرة العمل تكون عبر انشاء ملف PHP واضافته كرابط للفيديو ضمن المشغل، بحيث يتحقق من ان فتح الملف تم عن طريق مصدر داخل الموقع مع وجود القيمة المخزنة في الجلسة، فيعيد التوجية الي ملف الفيديو، وان كان الدخول للملف تم بشكل مباشر او من خارج الموقع كمصدر للزيارة فيقوم بانهاء الجلسة واعادة التوجية لصفحة خطأ.

وتجاوز هذا الملف ممكن، فمعرف الجلسة سيتم اضافتها للزائر من خلال صفحة اخر، وبالامكان ايضاً التلاعب بمصدر الزيارة لخداع الملف، فبكل الاحوال هذه الطريقة ليس امنة

فافضل طريقة لحماية الفيديو هي ان يكون ملف الفيديو نفسة محمي باستخدام Access Token او DRM وهي التقنيات التي تستخدمها منصات المشاهدة الكبري لحماية الفيديوهات وذلك يتطلب ان يكون الفيديو مدار بواسطة سيرفر بث مثل wowza ، وهذا الرابط يحتوي علي المزيد من التفاصيل حول طرق تأمين محتوي الفيديو

@Alwalid‍  

اهلا اخي وليد .لو تكرمت اعطيني كود جاهز اذا كان متوفر لديك...

لانني ليس لدي خبرة كبيرة بـ php

للأسف،، هذا العمل يتطلب اكثر من كود جاهز، فيحتاج الي عدة ملفات لتتضمن اكواد بداء الجلسة وتوليد المعرف والتحقق من المعرف واعادة التوجية وحظر الوصول وانهاء الجلسات

لكن هذة الروابط سيوضح الكثير حول فكرة عمل السكريبت المطلوب

وتتضمن اكواد جاهزة تشمل معظم ما ستحتاج الية لبناء السكريبت

@Alwalid‍ ‍ 

ممكن تراجع هذا الرابط اسفله و تقولي رايك فيه ..

وهذا هو الكود بـ php

لقد اطلعت علي الكود .. وبالفعل فكرة عملة تبدوا جيدة ومناسبة.

@Alwalid‍ 

هل هناك طريقة لتجاوز الكود ومعرفة الرابط الاصلي من المشفر..’؟

لن يمكن معرفة الرابط الاصلي، لكن سيكون من الممكن تحميل الفيديو من خلال بدء جلسة وهمية.

@Alwalid‍ 

ياريت لو تعطيني كود php للتحميل بالجلسة الوهمية.

فكرة العمل هي استخدام CURL للدخول الي صفحة الموقع التي ستبداء الجلسة بالمتصفح ثم استخراج معرف PHP الجلسة منها عبر الحصول علية من الكوكيز PHPSESSID المحفوظ في المتصفح والذي يتضمن رابط الفيديو الاصلي من جهه الموقع

ثم اعادة ارسال طلب رابط الفيديو مع دمج PHPSESSID الذي تم استخراجه من الطلب السابق

وعندها سيبدء الفيديو بالتحميل،،

@Alwalid‍ 

ممكن تساعدني في تصحيح هذا الكود الذي يعطني رابط غير شغال

Alwalid أضف ردا

لن يتمكن الكود السابق من جلب الرابط الصحيح للفيديو، لانة لايجلب PHPSESSID الحالي من الرابط.

لقد قمت بكتابة كود كامل للقيام بفكرة العمل السابقة

وطريقة عملة هي الدخول الي صفحة الموقع التي ستبداء الجلسة بالمتصفح من اجل بدء جلسة جديدة .. ثم حفظ المعرف الخاص بها من الهيدر في الطلب الي الكوكيز

ثم اعادة ارسال طلب CURL مجدداً باستخدام المعرف من الكوكيز لجلب الرابط الصحيح للفيديو

@Alwalid‍ 

تبارك الله عليك وربي يعطيك الصحة اخي وليد ....

السكربت اشتغل صح 100%.


هل ممكن تعمل جلسة وهمية لهذا الكود اسفله

لجلب رابط الفيديو المباشر و يكون شغال في المتصفح

بدون تحميل.

هذا الموقع

لايستخدم الجلسات وفكرة عملة تعتمد فقط علي Token عشوائي يحدث عند كل زيارة وهي ابسط بكثير، وبالفعل الكود الخاص بك يعمل بشكل جيد ويجلب الرابط الصحيح للفيديو

ويمكن استخدامه لتشغيل الفيديو بدون تحميل، فقط يتطلب الامر ادخال هذا الرابط ضمن مشغل فيديو علي الموقع مثل

@Alwalid‍ 

انظر الكود اضفت له المشغل ولم يشتغل

و انظر هنا عندما اضفت له كود التحميل اشتغل بدون اضهار رابط التحميل الفيديو من المصدر

ونفس المشكل مع مواقع الرفع مثل 4shared.com و google drive

عند جلب الرابط بوسطة كود php او curl و طبعه في المتصفح و اي مشغل فيديو

الرابط لا يشتغل

Alwalid أضف ردا

استخدم مشغل فيديو خاص مثل Video.js

لأن هذه الروابط لن تعمل في مشغل HTML5 الافتراضي في المتصفح

وهذا مثال لتشغيل الرابط من خلال Video.Js،

لكن استبدل رابط الفيديو بالمثال الي الرابط المستخرج من كود PHP الخاص بك

@Alwalid‍ 

جربت ولم يشتغل ربط الفيديو

لتأكد بنفسك راجع هذا الرابط

لقد استخدمت الكود التالي :

ومتأكد تماماً انه يعمل ..

@Alwalid

بعد التجربة استنتجت ان كل زيارة لموقع رابط الفيديو يعطيك رابط خاص شغال لكل ip address

لذلك فان كل زيارة بواسطة curl لجلب الرابط تكون مختلفة عن ip address متصفحك

وربما هذا هو سبب عدم اشتغال الرابط في المتصفح.

أجل .. فعند استخدام CURL تتم زيارة الموقع باستخدام عنوان IP الخاص بالسيرفر الذي يتم تنفيذ الكود من خلاله وان كان يعمل علي استضافة فعندها يكون عنوان IP تابع لمزود خدمة خاص بشبكات شركات السيرفرات فيتعرف عليه الموقع ويمنع التحميل.

لكن عند ارسال نفس الطلب باستعمال CURL من خلال خادم محلي LocalHost علي الحاسوب فتتم زيارة الموقع باستخدام عنوان IP الخاص العادي الخاص بالحاسوب ويكون تابع لمزود خدمة انترنت منزلي عادي فيتعرف الموقع علي الزيارة كانها من زائر عادي ويسمع بالتحميل.

@Alwalid‍ 

جربت جلب رابط فيديو مباشر من جوجل درايف نفس الشئ يعطيني رابط غير شغال

الكود الذي استخدمته هنا اسفله...

على ما اعتقد جوجل درايف لايعتمد على ip address لانشاء رابط مباشر لكل زيارة.

ربما علىsession او الكوكيز...

وانت اخي وليد مارأيك.؟

أجل .. يستخدم الجلسات والكوكيز ومصدر الزيارة في وقت واحد لذا لن تنجح طرق الجلب العادية مع جوجل درايف وخاصة عندما يكون حجم الملف كبير بسبب ظهور صفحة الفحص من الفيروسات ..

فهو يستخدم طريقة مشابهه ليوتيوب في التعامل مع ملفات الفيديو، فمثل يوتيوب يمكن الحصول علي رابط الفيديو متعدد الجودات والمعلومات عنه من خلال استعلام :

لكن الروابط لن تعمل الا مع وجود الكوكيز وبدء الجلسة قبل زيارتها

@Alwalid‍ 

في السابق كان عندي سكربت (انظر الرابط اسفله) وجدته على موقع github

كان يستخرج جميع الروابط المباشرة على google drive شغالة

والان صار يستخرج روابط غير شغالة. ولا اعرف السبب ؟

وجربت الكثير من السكربتات على موقع github لم تعد تعطي روابط شغالة.

اذا امكن اخي وليد تشرح لي كيف يتم انشاء هذه الجلسات session و الكوكيز مع مكتبة curl

لجلب الروابط المباشرة من المواقع التي تطلب الجلسات session و الكوكيز .

وشكرااااا

هذا السكريبت طريقة عملة مختلفة فهو يعمل كـProxy لتشغيل الفيديو من خلاله، السكريبتات القديمة تتوقف لان جوجل تعدل معاملات وطريقة التأمين بشكل مستمر مثل ما تفعل ايضاً في يوتيوب.

هذا سكريبت اخر من GitHub يعمل كـProxy للفيديوهات من Google Drive وهو محدث منذ 5 ايام، لذا يفترض ان يعمل بشكل جيد.

فكرة التعامل مع الجلسات والكوكيز في CURL بسيطة، فقط يتم جلب الكوكيز والجلسة من الرابط الاصلي في الاستعلام الاول ثم اعادة ارسالها في الطلب لمحاكاة الاستعلام الاول

@Alwalid‍ 

بالنسبة للسكربت Proxy المحدث منذ 5 ايام على موقع GitHub

للاسف لم يعمل معي انظر النتيجة في الرابط اسفله

اما تركيب السيشن والكوكيز لمكتبة curl

لقد جربت الكثير من الاكواد التي بحثت عنها في النت لعدة اشهر

ولكن للاسف لم انجح في اي واحدة منها .

بسبب نقص خبرتي في لغة php

انظر لهذا الكود اسفله .

الذي عملته ولكن لم يعمل بشكل صحيح اتمنى منك تصحيحه اذا تفضلت

وشكرا

مجهول أضف ردا

لايمكن الوصول الي الكود في الرابط .

Error, this is a private paste. If this is your private paste, please login to Pastebin first.

ولا أعرف لماذا ظهر الرد كمجهول !

تم اصلاح الرابط

وهل انت الاخ وليد @Alwalid‍ 

@Alwalid

اهلا اخي وليد للاسف الكود لم يعمل معي

انت جربت الكود مع فيديو صغير الحجم لا يتطلب كود confirm للتحميل ويعمل مباشرة

اريد ان تجرب الكود مع فيديو كبير الحجم الذي يتطلب كود confirm و جلسة session للتحميل

بالتوفيق لك ان شاء الله .

اضف رابط الفيديو داخل دالة readfile وسيعمل.

@Alwalid‍ 

للاسف لم يعمل الكود عندما اضفت رابط الفيديو داخل دالة readfile

يتم تحميل كود html لصفحة رابط الفيديو على جوجل درايف

ممكن تراجع كود الجلسة ربما تجد هناك خطأ ما

@Alwalid‍ 

ياللعجب ??????

حتى انا استعملت نفس كودك هنا

ولم يشتغل على استضافتين مختلفتين

يبدو ان هناك خطـأ ما .????

ربما من نسخة php لا تتوافق مع الاستضافة التي اجرب عليها الكود ...

الله اعلم

كما يبدوا فهذا الموقع يمنع تنزيل الفيديوهات من عناوين IP التابعة لشركات الاستضافة والسيرفرات.

فان جربت فتح رابط احد الفيديوهات من خلال VPN .. ستظهر صفحة خطأ 404 NOT FOUND

وان جربت نفس الرابط بدون VPN سيتم تنزيل الفيديو بلا مشاكل

وهذا يفسر ان الكود السابق بعمل بشكل جيد علي الخادم المحلي LocalHost لانه يستعمل عنوان IP العادي للحاسوب

بينما لايعمل الكود علي الاستضافات لانه تستعمل عنوان IP تابع لسيرفر او مركز بيانات.

@Alwalid‍ 

ليس هذا الموقع فحسب كل المواقع الرفع الملفات تقريبا نفس الشئ

تعطيك رابط مشفر صالح للتحميل لمدة معينة فقط

اما اذا حاولت جلبه بـ php او مكتبة curl فلن يعمل الرابط ...

انا اعتقد ربما بالكوكيز .

لان كوكيز المتصفح مختلف عن كوكيز curl لذلك لا يعمل الرابط

ولكن وجدت حل في هذا الكود اسفله

عندما تضييف له كود لكي يتم التحميل بدون طبع الرابط في المتصفح او مشغل الفيديو

يعمل الفيديو ....

لقد جربت هذا الكود السابق :

علي استضافة .. لكنها ايضاً لم يعمل فملف الفيديو الذي يتم تنزيله ليس صحيح ولايعمل

لكن بتجربة نفس الكود السابق علي LocalHost يعمل ويتم تنزيل الفيديو بشكل صحيح

ولكن عند تشغيل VPN علي الحاسوب لا يعمل الكود علي LocalHost ايضاً ويصبح كما في الاستضافة

فهذا يشبر ان الموقع يتعرف علي عنوان IP ان كان عنوان تابع لشبكة انترنت لمستخدم عادي ام عنوان تابع لشركة سيرفرات وهناك ادوات كثيرة تتيح ذلك مثل

لان ان كان الموقع يعتمد علي الكوكيز كان الكود لن يعمل في الحالاتين علي الاستضافة او الخادم المحلي

@Alwalid‍ 

وهل مكن خداع الموقع

وارسال ip مزيف بواسطة php curl .؟

لا يمكن ارسال IP مزيف باستخدام CURL.

الطريقة الوحيدة لارسال طلب CURL يتضمن IP مختلف عن IP السيرفر، هي استخدام VPN ضمن VPS وارسال الطلب من خلاله، ويجب ان يكون VPN من مزود غير مشهور او يعتمد علي شبكة اتصالات للمنازل وليست للخوادم كي لايتعرف عليها الموقع.