تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
سين جيم حول الـ Proxy Server
#1
بسم الله الرحمن الرحيم
و الصلاة و السلام على أشرف المرسلين سيدنا محمد خاتم الأنبياء و المرسلين
أما بعد:
اليوم سنتحدث عن أمر شائع جدا و هو الـ Proxy و بكلمة أدق الـ Proxy Server. حيث نسمع كثيرا عن كلمة Proxy و أن هناك برامج مثل Proxy Switcher الذي يسمح بالولوج للمواقع المحجوبة مثلا. و هي النفس التقنية المستعملة في حجب المواقع أيضا.
هذه بعض استعمالات الـ Proxy Server و هو إلى ذلك تقنية غاية في السهولة سواء من حيث مبدأ العمل أو من حيث البرمجة و يمكن استغلالها في أمور أخرى مثل تصميم برنامج يمنع الولوج للمواقع غير المرغوبة. أو بتوجيه المتصفح إلى موقع معين بمجرد كتابته لحرف أو رقم ما. كما تستعملها الشركات في توجيه تصفح العمال للشبكة الداخلية فبواسطته يمكن لمدير و مستخدم عادي أن يكتبا نفس العنوان و لكن المدير يظهر له شيء و المستخدم العادي يظهر له شيء آخر على حسب امتيازات و حاجيات كل شخص.
[SIZE=4][SIZE=4]*ما معنى Proxy؟
[/SIZE]
كلمة Proxy تترجم إلى عدة معاني في العربية منها: الممثل الذي يمثل أشخاصا أو مؤسسات ف قضية ما، و تعني أيضا الوسيط الذي يتوسط بين إثنين من أجل تسوية أمر ما، كما تعني أيضا المترجم الذي يترجم حوارا مباشرا بين شخصين يتحدثان بلغتين مختلفتين و تعني أيضا الحاجب أو السكرتير الذي يكون وسيطا بين السائل و المسؤول.
نفس الشيء في البرمجة فإن الـ Proxy يطلق على البرنامج الوسيط الذي يتلقى طلبات البرامج الداخلية التي تريد شيئا من الشبكة ثم يعالج الطلبات و يرى هل يوجهها للشبكة أم يتصرف تصرفا آخر عن طريق الرد أو المنع. و في حال ارساله طلبا للشبكة يستطيع التعديل عليه قبل ارساله و انتظار الرد. و نفس الشيء يستطيع التعديل على الرد قبل اعادته للبرنامج الداخلي أو يستطيع الرد عليه بطريقة أخرى. و يسمى في الحقيقة Proxy Server. لأنه يقوم بتقديم خدمات و لا يتصرف هو كبرنامج يطالب بشيء ما. و بالتالي فأي عملية اتصال بالشبكة من طرف الخادم نفسه تمر مباشرة عكس بقية البرامج التي يجب أن تتوقف عنده و هو يكمل بقية المهمة من أجلها.
[SIZE=4] *ما نعرفه هو أن البرامج التي تتصل بالنت كثيرة جدا فهناك المتصفحات و البرامج التي تعمل تحديثات و البرامج الموزعة و الألعاب OnLine و غيرها مما لا يمكن عده فكيف يمكن لبرنامج واحد أن يعرف كل هذه البرامج أين تتصل؟ و هل يستعمل تقنية الـهايجاكين و الهوكين أم ماذا؟
إن مبدأ عمل الـ Proxy Server بسيط و ذكي في نفس الوقت فهو لن يكلف أبدا نفسه بالبحث عن البرامج التي يمكنها بلوغ الشبكة و لا بالبروتوكولات التي تستعملها و هو لا يستعمل أي طريقة للتواصل معها و لا يهتم بها أصلا. بل هو يتصل بنظام التشغيل و يطلب منه أن يجعله و كأنه هو سيرفر الجهاز.
*كيف ذلك؟
حسنا. أولا علينا أن نتفق على أمر مهم و هو أن كل البرامج التي تريد الاتصال بالشبكة ستمر عبر المنافذ التي يعطيها لها النظام. هنا يتدخل البروكسي حيث سيقوم بما يلي:
  • يطلب من النظام أن يحجز له port معين و ليكن مثلا المنفذ رقم 12345

  • يقنع النظام أنه هو المسؤول عن تلبية الطلبات المتعلقة بالشبكة

  • يبدأ بالتنصت على المنفذ 12345 الذي حجزه من قبل

  • يطلب من النظام ارسال أي طلب اتصال بالشبكة من أي برنامج كان على أي منفذ كان إلى منفذه هو أي إلى المنفذ 12345.

  • حين يحول له البرنامج طلبا ما يقوم بدراسته ثم يقرر ما يفعله به هل يرسله أم يعدل عليه قبل ارساله أم يرد على البرنامج أم يقطع اتصاله و يمنعه.
*و لكن ألن تكتشف البرامج أنه قام بتحويل طلبها من المنفذ الذي حددته إلى منفذ آخر ؟
بالطريقة المباشرة لن تكتشف البرامج أي شيء و السبب أنها تثق في نظام التشغيل فهي تعطيه الطلب و تطلب منه أن يرسله عبر المنفذ 555 مثلا لكن النظام يرسله للمنفذ 12345 ثم يعيد لها الرد بشكل طبيعي من دون أن يخبرها أنه حول طلبها.
و لكن يمكن للبرامج اكتشاف الأمر قبل أن ترسل عن طريق تفقد بيانات النظام لتعرف هل هو يخضع لبرنامج بروكسي سيرفر أم لا.
* في ماذا يستعمل الـ Proxy Server
[SIZE=4]البروكسي سيرفر يمكن وصفه بأنه منفذ خارجي وهمي و عمله الأساسي هو معالجة الطلبات و الردود التي تتم عبر منفذ الشبكة للجهاز. و لكن كونه برنامج فإن وظيفته تختلف بحسب ما قام المبرمج بتقريره له. و لعل من أهم استعمالاته ما يلي:
[INDENT]
  • حجب المواقع: يستعمل البروكسي سيرفر في حجب المواقع. حيث يثبت Proxy Server في الكمبيوتر سوائ الشخصى أو أحد الكمبيوترات التي نعتمد عليها في توفير خدمة اتصال بالنت بدءا من سيرفر مقهى النت وصولا إلى السيرفر الذي يغذينا بالنت في أعلى هرم الاتصال. حيث أنه حين تصل للبروكسي سرفر طلباتنا سيطبق استراتيجية بحث أو فلترة سواء على العنوان أو المحتوى و لو وجد رابطا ممنوعا أو كلمة ممنوعة يمكنه تغيير المحتوى إما بحذف الكلمات أو يتوجيهنا إلى صفحة معينة.

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

  • المراقبة: بما أن الـ Proxy Server سيكون وسيطا بيننا و بين ما يوجد في الشبكة فإنه يمكنه تسجيل احصائيات مثل وقت الاتصال، الطلب، النتيجة...إلخ و بالتالي يمكن من انشاء تقرير عن كل العمليات الصادرة و الواردة. و تساعد هذه التقارير في مراقبة شخص أو جهة ما في البيت أو في شبكة محلية للشركة أو في النت بصفة عامة.

  • تخطي المواقع المحجوبة: حين يكون هناك موقع A محجوب فإن الكثير ينشئ موقع B مهمته الخاصة نسخ محتوى ما أو ارسال معلومات و بيانات إلى الموقع A كما يمكنه تشفير و فك تشفير المحتوى. و بالتالي لو أردنا الاتصال بالموقع A المحجوب على مستوى شبكتنا فسنرسلها إلى الموقع B الذي يقوم بارسالها إلى A كأنه زبون. بعدها يرد A على B فيقوم B باعادة النتيجة لنا سواء كانت صورة أو صفحة موقع أو غيرها.

  • التوجيه: يستعمل البروكسي في توجيه الطلبات فمثلا لو نفرض أنني لا استطيع حفظ كل العناوين. سأقوم بتصميم بروكسي سيرفر و أزوده بقاعدة بيانات فيها الطلب الأصلى و الطلب الذي يتم توجيهي إليه. و أضيف له مثلا في الطلب الأصلى الكلمة ST و في الطلب الذي يتم توجيهي إليه www.site.com و بالتالي حين أريد الدخول إلى الموقع يكفي أن أكتب على المتصفح الكلمة ST.

  • السرعة: بعض برامج البروكس تقوم بحفظ البيانات التي تم جلبها من النت خاصة الصور و الخلفيات و الملتيميديا التي تكون كبير الحجم. و حين يأتي طلب آخر لنفس الموقع فإنها لا تنزل كل المحتوى من جديد بل تضع الصور و الخلفيات التي تم تنزيلها من قبل و بالتالي تمنح سرعة كبيرة في الاتصال.

[/INDENT]
[SIZE=4]*كيف يجعل البرنامج نفسه Proxy Server برمجيا؟
هناك مفتاحان في الرجيستري يتم تغييرهما و هذا كل شيء نجدهما في المسار:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
أما المفتاح الأول فيدعى ProxyEnable قيمتاه هما 0 و 1 يكافئهما تعطيل و تفعيل على الترتيب.
أما المفتاح الثاني فيدعى ProxyServer و هو عبارة عن جملة مكونة من IPTongueort في الحالة البسيطة فالمثال الأول سيكتب بالشكل التالي:
127.0.0.1:12345
أما في حالة وجود عدة بروكسيات حسب نوع الاتصال فالقيمة هي Type=IPTongueort مكررة عدة مرات حسب عدد البروكسيات و نوع الاتصال و مفصول بينها بنقطة فاصلة. فالمثال السابق سيكون بالشكل التالي:
http=127.0.0.1:12345;https=192.168.1.5:8080;ftp=127.0.0.1:1000;socks=192.168.1.13:12010
و منه فيكفي تغيير هذين المفتاحين فيصبح ProxyEnable=1 و ProxyServer هي 127.0.0.1:12345 ثم أشغل برنامج التنصت في جهازي على المنفذ 12345. ثم أقوم باستقبال الطلبات و معالجتها.
[SIZE=4] *ماذا لو جاء طلب في حين كان الـ Proxy مشغولا بتلبية طلب آخر هل بمر أم يتوقف أم ماذا يحدث بالضبط؟
هذا يعتمد على المبرمج لأن جعل جزء التنصت هو نفسه الذي يقوم بالتلبية هو أمر خاطئ تماما. بل يجب استعمال تقنية الـ multithreading لتحقيق ذلك بشكل سلس و صحيح.
*كيف ذلك؟
ببساطة شديدة سنصمم إجراءين.
  • الإجراء الأول و ندعوه المنصت وظيفته التنصت على المنفذ 12345 لينتظر أي اتصال بشكل لا نهائي أي أنه سيدخل في حلقة تكرارية لا نهائية في كل دورة يتنصت حتى يأتي طلب. فيقوم باستحداث Thread يمرر له الـطلب الذي وصل و ينفذه بشكل مواز ثم يعود هو للتنصت من جديد في دورة جديدة من الحلقة.

  • الإجراء الثاني ندعوه المعالج و هو الإجراء الذي سننتج منه Threadالذي سنمرر له طلبا فيعالجه و ينفذه و يتابعه حتى نهايته (استقبال الطلب، تنفيذه، إعادة النتيجة) ثم يموت الـ thread.

إذن بهذه الطريقة يتم التنصت و التنفيذ. الأمر أشبه بدخول الزبائن إلى فندق حيث كلما دخل زبون يتجه للاستقبال حيث يتم تسجيله و إعطائه مفتاح الغرفة ثم يتم "استحداث" عامل يرافقه إلى غرفته يحمل له حقائبه. و بمجرد وصوله يعود العامل من حيث أتى في "الخفاء". فلو كان الشخص الذي يعمل في الاستقبال هو الذي يوصل الحقائب للزبائن فسوف يتشكل طابور و يمل بعض الزبائن و يغادروا
[SIZE=4]*هل يتوجب أن يكون البروكسي برنامجا تنفيذيا؟؟
[/SIZE]
[/SIZE] البروكسي برنامج تنفيذي بالأساس لكن يمكن أن يكون له عدة أشكال أبسطها أن يكون برنامج كونصول أو واجهة رسومية و أحسنها أن يكون Service حيث نضمن أنه سيكون مشتغلا دائما و لا نخشى أن يغيره المستخدم أو يغلقه عمدا أو خطأ.
*كخلاصة؟
تصمم بروكسي سيرفر أمر بسيط و عملي كثير في حالة تصميم برنامج حماية من المواقع غير المرغوبة أو في تصميم برنامج شبكة داخلية لمراقبة الاتصالات أو توجيهها .
كل ما عليكم معرفته هو أن الـ Proxy Server هو برنامج مبدأ عمله هو التنصت على الشبكة في جهاز معين (معرف بـ IP و منفذ). و يستقبل كل الطلبات التي من المفروض أن تذهب لمزود الخدمة مباشرة. فيقوم بمعالجتها و من ثمة يمررها هو (أو قد لا يفعل) و يعيد النتيجة للبرنامج.
يعني أي شخص صمم برنامج اتصال أو برنامج محادثة فهو يعرف كيف يصمم بروكسي. الفرق الوحيد أن البرامج التي نصممها للمحادثة و الاتصال تكون هي من يتصل بينما البروكسي يكون مستقبل للاتصالات.

منقول للفائدة
تابعونا...( كيف نبرمج Proxy Server؟ من البداية حتى النهاية)
استودعكم الله الذي لا تضيع ودائعه
[INDENT]
و السلام عليكم و رحمة الله و بركاته
[/INDENT]


[/SIZE]




[/SIZE]

[/SIZE]

[/SIZE]

الرد }}}}
تم الشكر بواسطة:
#2
[COLOR="#A52A2A"]السلام عليكم

بارك الله فيك جزيت خيرا[/COLOR]
الرد }}}}
تم الشكر بواسطة:
#3
والله إنك ابدعت ثم أبدعت ياأخي العزيز افدتنا جزاك الله خيراً وحبذا لو لديك معلومات عن السوكس والفرق بينه وبين البروكسي سيرفر اكون ممنونك

وبخصوص الــ MultiThreading ياريت تعطيني مثال بسيط بالأكواد عن طريقة ذلك انا فهمت الفكرة العامة

وهي ان هناك فانكشن خاصة للقيام بعملية التنصت حيث كل ثريد سوف يستدعي هذه الفانكشن هل هذا صحيح ؟؟ ياريت لو مثالك بسيط بالأكواد وياريت يكون C#

وجزاكم الله خير
الرد }}}}
تم الشكر بواسطة:
#4
sajad كتب :السلام عليكم

بارك الله فيك جزيت خيرا
ولك بالمثل اخي العزيز
بارك الله فيك اخي وزادك من علمه[b]<br>[/b]
الرد }}}}
تم الشكر بواسطة:
#5
<br> كتب :وبخصوص الــ MultiThreading ياريت تعطيني مثال بسيط بالأكواد عن طريقة ذلك انا فهمت الفكرة العامة
[h=2]نبذة سريعة مع مثال عن Thread بال C#[/h]
الرد }}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  إنشاء مشروع باستخدام sql server و linq وتقارير crystal report ربيع 69 12,708 10-10-15, 01:26 PM
آخر رد: ربيع
  كيف نبرمج Proxy Server؟ من البداية حتى النهاية 3amo 3 941 25-05-13, 12:55 PM
آخر رد: shaker.soft
  شرح (فيديو) رفع موقع ASP.Net وقاعدة بيانات SQL Server RaggiTech 0 886 27-10-12, 04:27 PM
آخر رد: RaggiTech
  شرح (فيديو) رفع موقع ASP.Net وقاعدة بيانات SQL Server RaggiTech 0 635 09-10-12, 06:25 PM
آخر رد: RaggiTech

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم