![]() |
|
سين جيم حول الـ Proxy Server - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : الاقسام الاخرى (http://vb4arb.com/vb/forumdisplay.php?fid=74) +--- قسم : قسم المقالات العام (http://vb4arb.com/vb/forumdisplay.php?fid=85) +--- الموضوع : سين جيم حول الـ Proxy Server (/showthread.php?tid=7932) |
سين جيم حول الـ Proxy Server - 3amo - 12-03-13 بسم الله الرحمن الرحيم
و الصلاة و السلام على أشرف المرسلين سيدنا محمد خاتم الأنبياء و المرسلين
أما بعد:
اليوم سنتحدث عن أمر شائع جدا و هو الـ Proxy و بكلمة أدق الـ Proxy Server. حيث نسمع كثيرا عن كلمة Proxy و أن هناك برامج مثل Proxy Switcher الذي يسمح بالولوج للمواقع المحجوبة مثلا. و هي النفس التقنية المستعملة في حجب المواقع أيضا.
هذه بعض استعمالات الـ Proxy Server و هو إلى ذلك تقنية غاية في السهولة سواء من حيث مبدأ العمل أو من حيث البرمجة و يمكن استغلالها في أمور أخرى مثل تصميم برنامج يمنع الولوج للمواقع غير المرغوبة. أو بتوجيه المتصفح إلى موقع معين بمجرد كتابته لحرف أو رقم ما. كما تستعملها الشركات في توجيه تصفح العمال للشبكة الداخلية فبواسطته يمكن لمدير و مستخدم عادي أن يكتبا نفس العنوان و لكن المدير يظهر له شيء و المستخدم العادي يظهر له شيء آخر على حسب امتيازات و حاجيات كل شخص.
[/SIZE][SIZE=4][SIZE=4]*ما معنى Proxy؟ [/SIZE] كلمة Proxy تترجم إلى عدة معاني في العربية منها: الممثل الذي يمثل أشخاصا أو مؤسسات ف قضية ما، و تعني أيضا الوسيط الذي يتوسط بين إثنين من أجل تسوية أمر ما، كما تعني أيضا المترجم الذي يترجم حوارا مباشرا بين شخصين يتحدثان بلغتين مختلفتين و تعني أيضا الحاجب أو السكرتير الذي يكون وسيطا بين السائل و المسؤول.
نفس الشيء في البرمجة فإن الـ Proxy يطلق على البرنامج الوسيط الذي يتلقى طلبات البرامج الداخلية التي تريد شيئا من الشبكة ثم يعالج الطلبات و يرى هل يوجهها للشبكة أم يتصرف تصرفا آخر عن طريق الرد أو المنع. و في حال ارساله طلبا للشبكة يستطيع التعديل عليه قبل ارساله و انتظار الرد. و نفس الشيء يستطيع التعديل على الرد قبل اعادته للبرنامج الداخلي أو يستطيع الرد عليه بطريقة أخرى. و يسمى في الحقيقة Proxy Server. لأنه يقوم بتقديم خدمات و لا يتصرف هو كبرنامج يطالب بشيء ما. و بالتالي فأي عملية اتصال بالشبكة من طرف الخادم نفسه تمر مباشرة عكس بقية البرامج التي يجب أن تتوقف عنده و هو يكمل بقية المهمة من أجلها.
[/SIZE][SIZE=4] *ما نعرفه هو أن البرامج التي تتصل بالنت كثيرة جدا فهناك المتصفحات و البرامج التي تعمل تحديثات و البرامج الموزعة و الألعاب OnLine و غيرها مما لا يمكن عده فكيف يمكن لبرنامج واحد أن يعرف كل هذه البرامج أين تتصل؟ و هل يستعمل تقنية الـهايجاكين و الهوكين أم ماذا؟ إن مبدأ عمل الـ Proxy Server بسيط و ذكي في نفس الوقت فهو لن يكلف أبدا نفسه بالبحث عن البرامج التي يمكنها بلوغ الشبكة و لا بالبروتوكولات التي تستعملها و هو لا يستعمل أي طريقة للتواصل معها و لا يهتم بها أصلا. بل هو يتصل بنظام التشغيل و يطلب منه أن يجعله و كأنه هو سيرفر الجهاز. *كيف ذلك؟ حسنا. أولا علينا أن نتفق على أمر مهم و هو أن كل البرامج التي تريد الاتصال بالشبكة ستمر عبر المنافذ التي يعطيها لها النظام. هنا يتدخل البروكسي حيث سيقوم بما يلي:
بالطريقة المباشرة لن تكتشف البرامج أي شيء و السبب أنها تثق في نظام التشغيل فهي تعطيه الطلب و تطلب منه أن يرسله عبر المنفذ 555 مثلا لكن النظام يرسله للمنفذ 12345 ثم يعيد لها الرد بشكل طبيعي من دون أن يخبرها أنه حول طلبها.
و لكن يمكن للبرامج اكتشاف الأمر قبل أن ترسل عن طريق تفقد بيانات النظام لتعرف هل هو يخضع لبرنامج بروكسي سيرفر أم لا.
* في ماذا يستعمل الـ Proxy Server
[/SIZE][SIZE=4]البروكسي سيرفر يمكن وصفه بأنه منفذ خارجي وهمي و عمله الأساسي هو معالجة الطلبات و الردود التي تتم عبر منفذ الشبكة للجهاز. و لكن كونه برنامج فإن وظيفته تختلف بحسب ما قام المبرمج بتقريره له. و لعل من أهم استعمالاته ما يلي: [INDENT]
[SIZE=4]*كيف يجعل البرنامج نفسه Proxy Server برمجيا؟ هناك مفتاحان في الرجيستري يتم تغييرهما و هذا كل شيء نجدهما في المسار:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
أما المفتاح الأول فيدعى ProxyEnable قيمتاه هما 0 و 1 يكافئهما تعطيل و تفعيل على الترتيب.
أما المفتاح الثاني فيدعى ProxyServer و هو عبارة عن جملة مكونة من IP
ort في الحالة البسيطة فالمثال الأول سيكتب بالشكل التالي: 127.0.0.1:12345
أما في حالة وجود عدة بروكسيات حسب نوع الاتصال فالقيمة هي Type=IP
ort مكررة عدة مرات حسب عدد البروكسيات و نوع الاتصال و مفصول بينها بنقطة فاصلة. فالمثال السابق سيكون بالشكل التالي: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][SIZE=4] *ماذا لو جاء طلب في حين كان الـ Proxy مشغولا بتلبية طلب آخر هل بمر أم يتوقف أم ماذا يحدث بالضبط؟ هذا يعتمد على المبرمج لأن جعل جزء التنصت هو نفسه الذي يقوم بالتلبية هو أمر خاطئ تماما. بل يجب استعمال تقنية الـ multithreading لتحقيق ذلك بشكل سلس و صحيح. *كيف ذلك؟ ببساطة شديدة سنصمم إجراءين.
إذن بهذه الطريقة يتم التنصت و التنفيذ. الأمر أشبه بدخول الزبائن إلى فندق حيث كلما دخل زبون يتجه للاستقبال حيث يتم تسجيله و إعطائه مفتاح الغرفة ثم يتم "استحداث" عامل يرافقه إلى غرفته يحمل له حقائبه. و بمجرد وصوله يعود العامل من حيث أتى في "الخفاء". فلو كان الشخص الذي يعمل في الاستقبال هو الذي يوصل الحقائب للزبائن فسوف يتشكل طابور و يمل بعض الزبائن و يغادروا
[/SIZE][/SIZE] البروكسي برنامج تنفيذي بالأساس لكن يمكن أن يكون له عدة أشكال أبسطها أن يكون برنامج كونصول أو واجهة رسومية و أحسنها أن يكون Service حيث نضمن أنه سيكون مشتغلا دائما و لا نخشى أن يغيره المستخدم أو يغلقه عمدا أو خطأ.[SIZE=4]*هل يتوجب أن يكون البروكسي برنامجا تنفيذيا؟؟ *كخلاصة؟ تصمم بروكسي سيرفر أمر بسيط و عملي كثير في حالة تصميم برنامج حماية من المواقع غير المرغوبة أو في تصميم برنامج شبكة داخلية لمراقبة الاتصالات أو توجيهها . كل ما عليكم معرفته هو أن الـ Proxy Server هو برنامج مبدأ عمله هو التنصت على الشبكة في جهاز معين (معرف بـ IP و منفذ). و يستقبل كل الطلبات التي من المفروض أن تذهب لمزود الخدمة مباشرة. فيقوم بمعالجتها و من ثمة يمررها هو (أو قد لا يفعل) و يعيد النتيجة للبرنامج. يعني أي شخص صمم برنامج اتصال أو برنامج محادثة فهو يعرف كيف يصمم بروكسي. الفرق الوحيد أن البرامج التي نصممها للمحادثة و الاتصال تكون هي من يتصل بينما البروكسي يكون مستقبل للاتصالات. منقول للفائدة تابعونا...( كيف نبرمج Proxy Server؟ من البداية حتى النهاية) استودعكم الله الذي لا تضيع ودائعه [INDENT] و السلام عليكم و رحمة الله و بركاته [/INDENT]سين جيم حول الـ Proxy Server - Sajad - 12-03-13 [COLOR="#A52A2A"]السلام عليكم بارك الله فيك جزيت خيرا[/COLOR] سين جيم حول الـ Proxy Server - <br> - 13-03-13 والله إنك ابدعت ثم أبدعت ياأخي العزيز افدتنا جزاك الله خيراً وحبذا لو لديك معلومات عن السوكس والفرق بينه وبين البروكسي سيرفر اكون ممنونك وبخصوص الــ MultiThreading ياريت تعطيني مثال بسيط بالأكواد عن طريقة ذلك انا فهمت الفكرة العامة وهي ان هناك فانكشن خاصة للقيام بعملية التنصت حيث كل ثريد سوف يستدعي هذه الفانكشن هل هذا صحيح ؟؟ ياريت لو مثالك بسيط بالأكواد وياريت يكون C# وجزاكم الله خير سين جيم حول الـ Proxy Server - 3amo - 14-03-13 sajad كتب :السلام عليكمولك بالمثل اخي العزيز بارك الله فيك اخي وزادك من علمه[b]<br>[/b] سين جيم حول الـ Proxy Server - 3amo - 19-03-13 <br> كتب :وبخصوص الــ MultiThreading ياريت تعطيني مثال بسيط بالأكواد عن طريقة ذلك انا فهمت الفكرة العامة[h=2]نبذة سريعة مع مثال عن Thread بال C#[/h] |