تكوين الوكيل تلقائيًا
يحدد ملف التكوين التلقائي للوكيل ( PAC ) كيفية اختيار متصفحات الويب ووكلاء المستخدم الآخرين لخادم الوكيل المناسب (طريقة الوصول) تلقائيًا لجلب عنوان URL معين .
يحتوي ملف PAC على دالة JavaScript . تُعيد هذه الدالة سلسلة نصية تتضمن مواصفات طريقة وصول واحدة أو أكثر. تُجبر هذه المواصفات برنامج المستخدم على استخدام خادم وكيل معين أو الاتصال مباشرةً. [ 1 ]FindProxyForURL(url, host)
توفر مواصفات متعددة آلية احتياطية في حال فشل الخادم الوكيل في الاستجابة. يقوم المتصفح بجلب ملف PAC هذا قبل طلب عناوين URL أخرى. يتم تكوين عنوان URL لملف PAC إما يدويًا أو يتم تحديده تلقائيًا بواسطة بروتوكول الاكتشاف التلقائي للخادم الوكيل.
سياق
تُطبّق متصفحات الويب الحديثة مستوياتٍ متعددة من الأتمتة؛ حيث يُمكن للمستخدمين اختيار المستوى المناسب لاحتياجاتهم. وفيما يلي بعض الطرق الشائعة الاستخدام:
- اختيار الخادم الوكيل تلقائيًا: حدد اسم المضيف ورقم المنفذ المراد استخدامهما لجميع عناوين URL. تسمح لك معظم المتصفحات بتحديد قائمة بالنطاقات (مثل
localhost) التي ستتجاوز هذا الخادم الوكيل. - التكوين التلقائي للوكيل (PAC): حدد عنوان URL لملف PAC باستخدام دالة JavaScript تحدد الوكيل المناسب لكل عنوان URL. هذه الطريقة أنسب لمستخدمي أجهزة الكمبيوتر المحمولة الذين يحتاجون إلى عدة تكوينات مختلفة للوكيل، أو لإعدادات الشركات المعقدة التي تتضمن العديد من الوكلاء المختلفين.
- بروتوكول الاكتشاف التلقائي لوكيل الويب (WPAD): دع المتصفح يخمن موقع ملف PAC من خلال عمليات البحث في DHCP و DNS .
تاريخ
تم تصميم تنسيق ملف التكوين التلقائي للوكيل في الأصل بواسطة Netscape في عام 1996 لمتصفح Netscape Navigator 2.0 [ 2 ] وهو ملف نصي يحدد وظيفة JavaScript واحدة على الأقل.
ملف PAC
بحسب الاصطلاح، يُسمى ملف PAC عادةً proxy.pac. يستخدم معيار WPADwpad.dat . .pacمن المتوقع أن يحتوي الملف على دالة واحدة على الأقل:
FindProxyForURL(url, host)، مع وسيطين وقيمة إرجاع بتنسيق محدد:
- *
urlهو عنوان URL للكائن - *
hostهو اسم المضيف المشتق من عنوان URL هذا. من الناحية التركيبية، هو نفس السلسلة الموجودة بين://والأول:أو/الذي يليه. [ 3 ] - *
return "..."عبارة عن سلسلة من التوقيعات بالتنسيق التالي (انظر الأمثلة أدناه): [ ملاحظة 1 ]returnValue = type host , ":" , port ,[{ ";" , returnValue }]; type = "DIRECT" | "PROXY" | "SOCKS" | "HTTP" | "HTTPS" | "SOCKS4" | "SOCKS5" host = UTF16String (* سلسلة UTF16 متوافقة مع ECMA262 *) port = UTF16String (* أرقام *)
لاستخدامه، يتم نشر ملف PAC على خادم HTTP ، ويتم توجيه برامج المستخدم لاستخدامه، إما عن طريق إدخال عنوان URL في إعدادات اتصال الوكيل في المتصفح أو من خلال استخدام بروتوكول WPAD . قد يشير عنوان URL أيضًا إلى ملف محلي، على سبيل المثال: file:///etc/proxy.pac.
على الرغم من أن معظم العملاء سيعالجون البرنامج النصي بغض النظر عن نوع MIME الذي تم إرجاعه في رد HTTP ، فمن أجل الاكتمال ولزيادة التوافق إلى أقصى حد، يجب تكوين خادم HTTP للإعلان عن نوع MIME لهذا الملف ليكون إما application/x-ns-proxy-autoconfigأو application/x-javascript-config.
لا يوجد دليل يُذكر يُرجّح استخدام نوع MIME على آخر. ومع ذلك، من المعقول افتراض أن هذا النوع application/x-ns-proxy-autoconfigسيُدعم في عدد أكبر من برامج العميل مقارنةً application/x-javascript-configبما كان عليه في مواصفات نتسكيب الأصلية، حيث بدأ استخدام النوع الأخير مؤخرًا.
مثال
مثال بسيط جدًا لملف PAC هو:
دالة FindProxyForURL ( url , host ) { return 'PROXY proxy.example.com:8080; DIRECT' ; }تُوجّه هذه الوظيفة المتصفحَ إلى استرجاع جميع الصفحات عبر الخادم الوكيل على المنفذ 8080 للخادم proxy.example.com. في حال تعذّر استجابة هذا الخادم الوكيل، يتصل المتصفح بالموقع الإلكتروني مباشرةً، دون استخدام خادم وكيل. قد يفشل هذا الأخير إذا رفضت جدران الحماية ، أو أجهزة الشبكة الوسيطة الأخرى، الطلبات الواردة من مصادر أخرى غير الخادم الوكيل - وهو تكوين شائع في شبكات الشركات.
يُوضح مثال أكثر تعقيدًا بعض وظائف جافا سكريبت المتاحة للاستخدام في FindProxyForURLالدالة:
دالة FindProxyForURL ( url , host ) { // عناوين URL المحلية الخاصة بنا من النطاقات أدناه example.com لا تحتاج إلى وكيل: إذا ( shExpMatch ( host , '*.example.com' )) { return 'DIRECT' ; }// يتم الوصول إلى عناوين URL داخل هذه الشبكة عبر // المنفذ 8080 على fastproxy.example.com: إذا ( isInNet ( host , '10.0.0.0' , '255.255.248.0' )) { return 'PROXY fastproxy.example.com:8080' ; }// جميع الطلبات الأخرى تمر عبر المنفذ 8080 الخاص بـ proxy.example.com. // في حال عدم الاستجابة، يتم التوجه مباشرةً إلى شبكة الويب العالمية: return 'PROXY proxy.example.com:8080; DIRECT' ; }بشكل افتراضي، تعني كلمة PROXY استخدام خادم وكيل يتوافق مع بروتوكول الطلب الأصلي، سواء كان http أو https أو ftp. تشمل أنواع الكلمات المفتاحية وخوادم الوكيل الأخرى المدعومة ما يلي:
- جوارب
- استخدم وكيل SOCKS .
- HTTP، HTTPS
- تم تقديمه في الإصدارات الأحدث من فايرفوكس. يحدد وكيل HTTP(S).
- جوارب 4، جوارب 5
- تم تقديمه في الإصدارات الأحدث من فايرفوكس. يحدد إصدار بروتوكول SOCKS.
القيود
ترميز الأحرف PAC
لا تُحدد عادةً طريقة ترميز نصوص PAC، وتختلف قواعد ترميزها باختلاف المتصفحات وبروتوكولات الشبكة. عمومًا، تعمل نصوص PAC المكتوبة بالكامل بنظام ASCII مع أي متصفح أو بروتوكول شبكة. يدعم متصفح موزيلا فايرفوكس 66 والإصدارات الأحدث أيضًا نصوص PAC المُرمّزة بنظام UTF-8 . [ 4 ]
DnsResolve
تقوم هذه الوظيفة dnsResolve(والوظائف الأخرى المماثلة) بإجراء بحث DNS الذي يمكن أن يحظر المتصفح لفترة طويلة إذا لم يستجب خادم DNS.
myIpAddress
myIpAddressكثيراً ما وردت تقارير تفيد بأن هذه الدالة تعطي نتائج غير صحيحة أو غير قابلة للاستخدام، مثل عنوان 127.0.0.1IP الخاص بالمضيف المحلي. [ 5 ] قد يكون من المفيد حذف /etc/hostsأي أسطر تشير إلى اسم مضيف الجهاز من ملف المضيف الخاص بالنظام (على سبيل المثال في نظام لينكس)، بينما 127.0.0.1 localhostيمكن، بل ويُفضّل، الإبقاء على السطر.
حماية
في عام 2013، بدأ الباحثون في التحذير من المخاطر الأمنية لخاصية التكوين التلقائي للبروكسي. [ 6 ] يتمثل التهديد في استخدام PAC، الذي يكتشفه النظام تلقائيًا، لإعادة توجيه حركة مرور متصفح الضحية إلى خادم يتحكم فيه المهاجم بدلاً من ذلك.
من المشاكل الأخرى المتعلقة بملفات PAC أن تطبيقها المعتاد يعتمد على استرجاع البيانات عبر بروتوكول HTTP كنص عادي، وهو ما لا يتضمن أي ميزات أمان مثل توقيع الشفرة أو شهادات الويب. وهذا يُسهّل على المهاجمين تنفيذ هجمات الوسيط .
مشاكل مايكروسوفت القديمة
يُحدّ تخزين نتائج التكوين التلقائي للوكيل حسب اسم النطاق في متصفح إنترنت إكسبلورر 5.5 أو الإصدارات الأحدث من مرونة معيار PAC. وبالتالي، يمكنك اختيار الوكيل بناءً على اسم النطاق، وليس على مسار عنوان URL. بدلاً من ذلك، يمكنك تعطيل تخزين نتائج التكوين التلقائي للوكيل مؤقتًا عن طريق تعديل سجل النظام . [ 7 ]
يُنصح دائمًا باستخدام عناوين IP بدلاً من أسماء نطاقات المضيف في الدالة isInNetلضمان التوافق مع مكونات Windows الأخرى التي تستخدم تكوين PAC الخاص بـ Internet Explorer، مثل .NET Framework 2.0 . على سبيل المثال،
إذا كان ( isInNet ( host , dnsResolve ( sampledomain ), '255.255.248.0' )) {} // سيقوم .NET 2.0 بحل اسم الوكيل بشكل صحيحإذا كان ( isInNet ( host , sampledomain , '255.255.248.0' )) {} // لن يقوم .NET 2.0 بحل الوكيل بشكل صحيحيتمثل العرف السائد حاليًا في التحويل إلى الاتصال المباشر عندما يكون ملف PAC غير متوفر.
بعد فترة وجيزة من التبديل بين تكوينات الشبكة (على سبيل المثال عند الدخول إلى VPN أو الخروج منه)، dnsResolveقد تظهر نتائج قديمة بسبب التخزين المؤقت لنظام أسماء النطاقات (DNS).
على سبيل المثال، يحتفظ متصفح فايرفوكس عادةً بـ 20 سجل نطاق مخزنة مؤقتًا لمدة 60 ثانية. يمكن ضبط ذلك عبر متغيرات network.dnsCacheEntriesالتكوين . قد يساعد أيضًا مسح ذاكرة التخزين المؤقتnetwork.dnsCacheExpiration لنظام أسماء النطاقات (DNS) ، ويمكن القيام بذلك في لينكس باستخدام الأمر `ls` أو في ويندوز باستخدام الأمر `ls` .sudo service dns-clean startipconfig /flushdns
في متصفح إنترنت إكسبلورر 9، isInNet('localHostName', 'second.ip', '255.255.255.255')يتم إرجاع القيم trueويمكن استخدامها كحل بديل.
تفترض هذه myIpAddressالدالة أن الجهاز لديه عنوان IPv4 واحد. وتكون النتائج غير محددة إذا كان للجهاز أكثر من عنوان IPv4 أو عناوين IPv6.
آحرون
وتتعلق قيود أخرى بمحرك جافا سكريبت الموجود على الجهاز المحلي.
وظائف متقدمة
يمكن لملفات PAC الأكثر تطوراً تقليل الحمل على الخوادم الوكيلة، وموازنة الأحمال، وإجراء التبديل التلقائي في حالة الأعطال، أو حتى إضافة عناوين IP غير مسموح بها أو حظرها قبل إرسال الطلب عبر الشبكة. ويمكن إرجاع عدة خوادم وكيلة.
return 'PROXY proxy1.example.com:80; PROXY proxy2.example.com:8080' ;سيحاول النظام المذكور أعلاه استخدام الوكيل 1 أولاً، وإذا لم يكن متاحًا، فسيحاول استخدام الوكيل 2.
ملحوظات
مراجع
- ↑ "ملف التكوين التلقائي للوكيل (PAC) - HTTP | MDN" . developer.mozilla.org . 2023-04-23 . تم الاطلاع عليه بتاريخ 2023-07-02 .
- ↑ "تنسيق ملف التكوين التلقائي لوكيل المتصفح" . وثائق متصفح نتسكيب نافيجاتور . مارس 1996. مؤرشف من الأصل بتاريخ 2007-06-02 . تم الاطلاع عليه بتاريخ 2013-07-05 .
- ↑ "ملف التكوين التلقائي للوكيل (PAC) - HTTP | MDN" . 23 أبريل 2023.
- ↑ "الخطأ رقم 1492938 - يجب تحميل نصوص التكوين التلقائي للوكيل بصيغة UTF-8 إذا كانت صالحة، وإلا بصيغة Latin-1 (البايت هو نقطة ترميز)" . تم الاطلاع عليه بتاريخ 10 أبريل 2019 .
- ↑ "الخطأ رقم 347307 - نحتاج إلى طريقة لتحديد أفضل عنوان IP محلي لاستخدامه مع ملفات PAC" . تم الاطلاع عليه بتاريخ 18 أبريل 2022 .
- ↑ ليموس، روبرت (2013-03-06). "من المرجح أن يوسع مجرمو الإنترنت استخدامهم لخوادم البروكسي الخاصة بالمتصفح" . تم الاسترجاع في 2016-04-20 .
- ↑ "Microsoft KB 271361 - كيفية تعطيل التخزين المؤقت التلقائي للوكيل في Internet Explorer" . تم الاطلاع عليه بتاريخ 27-06-2024 .
روابط خارجية
- ملف "Proxy Auto-Configuration (PAC)" . developer.mozilla.org . 2019-01-27.
- "استخدام ملف التكوين التلقائي للعميل" . دليل مسؤول خادم بروكسي نتسكيب: الفصل 11. 25-02-1998. مؤرشف من الأصل بتاريخ 10-08-2004.
- "الفصل 26 - استخدام التكوين التلقائي، والوكيل التلقائي، والكشف التلقائي" . مايكروسوفت تك نت . تم الاطلاع عليه بتاريخ 5 يوليو 2013 .
- غارغ، مانو. "مكتبة بلغة C و Python، وأداة لتحليل ملفات PAC" . تم الاطلاع عليه بتاريخ 11 مايو 2026 .
- " إعدادات البروكسي التلقائية لمتصفح فايرفوكس (PAC). أمثلة عملية كاملة تتضمن قواعد تصفية الإعلانات والمحتوى الإباحي" . ١٢ مايو ٢٠١٢. مؤرشف من الأصل بتاريخ ١ يوليو ٢٠١٥. تم الاطلاع عليه بتاريخ ٢٤ مايو ٢٠٠٩ .
- دي بوين بولارد، جوناثان (2004). "التكوين التلقائي لخادم وكيل HTTP في متصفحات الويب" . إجابات شائعة . تم الاسترجاع في 5 يوليو 2013 .
- متصفحات الويب
- خوادم بروكسي
- جافا سكريبت
- ملفات الكمبيوتر
